EEN521 T, Operating Systems, Spring 2013
Tues, Thurs at 5:00 p.m. in MM206

The Book

Documentation

Assignments

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 History

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.