email to grader521 at rabbit.eng.miami.edu, include typescript/screenshot. | |||||||||
1 | due | Sun 10th Feb. | Very basic contiguous allocation disc file system. | ||||||
2 | due | Sun 31st Mar. | A sensible disc file system. | ||||||
3 | due | Sun 14th Apr. | Make a proper heap. That is, replace newvec and freevec with something that works. Properly. | ||||||
4 | due | Sun 21st Apr. | Worm | ||||||
5 | due | Wed 8th May. | Timeshared multiprocessing. |
Class 1 | Tue 15‑1‑2013 | An introductory mystery: what virtual memory does for us. Magnetic tapes (picture A, B) can teach us a lot about hard disc drives. (reminder about probability), blocks, gaps, and error detection codes. | ||||
Class 2 | Thur 17‑1‑2013 | An interesting article
on the unreliability of tape backups. Magnetic drums, the next technological step: one, two, specs from 1957. At last, discs: (a big one from 1963), cylinders, surfaces, heads, tracks, blocks, partitions, clusters, seek and access times. The bad old DOS master boot record, CHS, and so on. | ||||
Class 3 | Tue 22‑1‑2013 | Low level implementation for a very primitive file system, fixed size root directory, files consist only of a sequence of neighbouring blocks so can't grow or shrink. Overview of how these things are done in old C. | ||||
Class 4 | Thur 24‑1‑2013 | Practical considerations for the too-simple file system implementation. | ||||
Class 5 | Tue 29‑1‑2013 | BCPL documentation. (updated Friday 8th February) | ||||
Class 6 | Thur 31‑1‑2013 | The worked examples: read a string read a tape using -t1r=filename read a tape chosen interactively generic write to disc generic read from disc reading and writing disc blocks full of ascii characters reading and writing directories the binary tree example | ||||
Class 7 | Tue 5‑2‑2013 | The insides of a CPU, the fetch-execute cycle, instruction decoding, registers, flags, system mode vs. user mode, program counters, stack pointers, frame pointers, interrupt vectors. | ||||
Class 8 | Thur 7‑2‑2013 | A program to help us explore code generation for functions
and stack frames. The important areas of memory at the moment of the first call to f. And again immediately after it has said SIX THREE SEVEN | ||||
Class 9 | Tue 12‑2‑2013 | gets() cleaned up,
How worms and virusses get into computers. Controlling access to memory: a primitive version of virtual memory. | ||||
Class 10 | Thur 14‑2‑2013 | (mail). The big disadvantage of the primitive virtual memory scheme:
memory gets fragmented, and it is very time consuming to put right. Two- and multi-segment
models make some improvement. A better but still badly flawed file system: files, directories, and the free list are all just linked lists of blocks. | ||||
Class 11 | Tue 19‑2‑2013 | Improved disc free list implementations, ultimately the on-disc queue of block numbers
keeping an in-memory copy of the few thousand block numbers at each end. The header block as the representation of every file with meta-data and information required to access the actual data. Simple flexible plan variable depth indexes adjusted to match the current data size. Thinking about the access times. | ||||
Class 12 | Thur 21‑2‑2013 | Careful consideration of file access times, buffering strategies to maximise
speed, the positive benefit of clusters increasing maximum file sizes without
slowing access speed. I-nodes, the I-node list, fsck and lost+found. Mount points and other things that are not files, in the guise of files. | ||||
Academic alerts due | ||||||
Class 13 | Tue 26‑2‑2013 | Modern virtual memory systems. | ||||
Class 14 | Thur 28‑2‑2013 | Various kinds of memory:
Mercury,
again,
Nickel,
Ferrite one,
two,
three,
four,
five,
six,
seven. Big worked example, setting up virtual memory, starting a program, forking a sub-process, demand paging, copy on write COW. | ||||
Class 15 | Tue 5‑3‑2013 | The lamest possible heap. Usual heaps | ||||
Class 16 | Thur 7‑3‑2013 | Project help day, and the sample little file system. | ||||
Spring Break | ||||||
Class 17 | Tue 19‑3‑2013 | Device drivers, protected system calls, communication between processes. Race conditions, Critical Sections, Atomic Operations, Semaphors, P, V. | ||||
Class 18 | Thur 21‑3‑2013 | All sorts of instructions based on semaphores LOCK-XCHG,
vax instructions - insqti,
but all you really need is the atomic test-and-set. Classical computer deadlock with card readers, line printers, and graph plotters. The dining philosophers: thinking about deadlock prevention. | ||||
Class 19 | Tue 26‑3‑2013 | Wednesday. Dealing with deadlock: Murder, Off-line processing, roll-back to checkpoint (impractical). Monitors (now java "synchronized") little, big. | ||||
Class 20 | Thur 28‑3‑2013 | ORDERED ALLOCATION!!!! Internet basics behind our network file system problems (ethernet is CSMA-CD, which is nothing like the wireless system CDMA). Packets, ethernet, MAC addresses, ARP, IP addresses, IP, gateways, routing, unreliable data transmission. | ||||
Class 21 | Tue 2‑4‑2013 | CDMA, UDP, DNS, TCP. How that all helps with network file systems. | ||||
Class 22 | Thur 4‑4‑2013 | The design and implementation of a worm. | ||||
Class 23 | Tue 9‑4‑2013 | Enlightened file system implementation, and a brief excursion into ReiserFS, the file system for murderers. | ||||
Class 24 | Thur 11‑4‑2013 | The "buddy" system, and
the common heap organisation reminder. A little bit about garbage collection: reference counts don't really work, mark and sweep is an old idea that does. | ||||
Class 25 | Tue 16‑4‑2013 | Catching interrupts and starting up virtual memory. Trying to probe existing memory but getting tripped up Catching the timer interrupt, general interrupts, keyboard interrupts successful memory probing, slightly more efficiently checking stack frame size, very basic virtual memory setup. | ||||
Class 26 | Thur 18‑4‑2013 | Building a process, switching processes after a timer interrupt, the standard unix process life-cycle. | ||||
Class 27 | Tue 23‑4‑2013 | Really getting virtual memory set up for a process. | ||||
Class 28 | Thur 25‑4‑2013 | Very basic pthreads example. FAT-16. |