EEN521 T, Operating Systems, Spring 2016
Tues, Thurs at 5:00 p.m. in MM 103

The Book

Documentation

Assignments

email to grader521 at rabbit.eng.miami.edu, include typescript/screenshot.
     1   Due   Do it this week!      BCPL practice: the Collatz sequence.     
2   Due   Thur 4 Feb The basic string library.
3   Due   Tues 23 Feb Simple but working newvec and freevec.
4   Due   Tues 22 Mar Very basic file system.
5 Tues 15 Mar Begin work on the plan, and
Choose your partner for this and all subsequent assignments.
6   Due Sun 17 Apr Timesharing - steps 1, 2, 3, and 4 of the plan.
7   Due Sun 24 Apr Virtual Memory - step 5 of the plan.
8   Due Tue 3 May Completion - steps 6 to 10 of the plan.
NOON Thur 5 May After 12 noon today, no late submissions can even be looked at.
Solid no-exceptions-whatsoever deadline.
The grader's reminders page.

Class History

Class 1  Tue 12‑1‑2016   Quick introductions, etc.
A taste of two of the mysteries we'll be solving: virtual memory and file structures.
A quick look at BCPL. Please remember to print the documentation for next class.
Class 2  Thur 14‑1‑2016   Learning BCPL and something about language implementation, part 1.
Class 3  Tue 19‑1‑2016   Be shown how to use the system! The stages of compilation - compiling, assembling, and linking, starting to understand the assembly language produced.
How the stack is organised, and why. The frame pointer and the stack pointer. Accessing local variables, arrays and addresses.
Note: io library updated. Can now assign new function to init, just like newvec and freevec.
Class 4  Thur 21‑1‑2016   Data structures, reminder of why newvec is necessary: heap vs stack, starting the think about now newvec and freevec should be implemented, string packing.
Class 5  Tue 26‑1‑2016   What "ps" tells us about, An atypical example.
Processes, part 1. Process states, the unix process lifecycle, priorities. The nature of fork and wait.
Class 6  Thur 28‑1‑2016   Alternative views of the world of processes: sys$creprc, show sys.
What is a process? How are they organised? Virtual memory (little telescopes) is a really important part of it. It also requires handling interrupts and system protection.
Class 7  Tue 2‑2‑2016   Getting ready for some serious stuff:
Reading a magnetic tape (real unix file) and displaying the text,
Reading an executable file and running it,
A very basic initial format for a disc drive.
Class 8  Thur 4‑2‑2016   Trying to make progress with a simple file system implementation.
Our intellectual challenge: what's wrong here? format.b, disc.b.
This is disc.b corrected.
Class 9  Tue 9‑2‑2016   Design for a very basic files library.
How interrupts are dealt with, compared with normal function calls.
Class 10  Thur 11‑2‑2016   Trying out interrupts for real.
Here's the one that also listens to the keyboard.
Fri. Help session, 3 p.m. in EB 237.
Class 11  Tue 16‑2‑2016   Interrupt driven keyboard input, (examine the race condition on Thursday)
Almost a process,
Multitasking! (Timesharing).
Class 12  Thur 18‑2‑2016   The race condition between kbbadd and kbbremove.
Race conditions, critical sections, locks require special support, semaphores: P(S) and V(S), atomic operations - atomic test and set instructions, memory interlocked instructions.
Fri Help session, 3 p.m. in EB 237.
Class 13  Tue 23‑2‑2016   Boolean semaphores (or mutexes) make all the other kinds: Here's a Monitor.
Single user devices: card reader, (codes), line printer, graph plotter, ASR33 teletype, (paper tape).
The problem of the doomed region and deadlock.
The problem of the dining philosophers, but not its solutions yet.
Class 14  Thur 25‑2‑2016   What can we do about the dining philosophers?
All the servants they need: the butler, the footman, the fork boy; they require knowledge that can not reasonably be had. The fork monster, the murderer, the evil scientist with an atom bomb. Harmless solutions: The poor person - off-line processing and using a device driver, the Book of laws with an executioner - strictly enforced order on resource requests.
Interacting with a device driver, it's queue must be protected by a semaphore.
Fri Help session, 3 p.m. in EB 237.
Class 15  Tue 1‑3‑2016   Memory technology: Mercury delay lines, again, Nickel delay line, The truth about modern virtual memory, at least in theory. Page Directory Base Register (PDBR) contains a pointer to the current Page Directory (PD). A PD contains a lot of pointers to Page Tables (PTs). PTs contain addresses of pages of physical memory. A Virtual Address is translated to a Physical Address by splitting it into three portions, the first is used as an index into the PD to find the correct PT. The second portion is used as an index into that PT to find the right page of memory, and the third portion tells us which word in that page to actually use. Caching entries makes this much faster than would be expected. PD and PT entries have extra bits to provide memory protection and other things.
Class 16  Thur 3‑3‑2016   Making VM really happen, here's the plan.
Organise memory: Make a list of all the free pages.
Now the big thing, Build the page tables, turn on VM, and run something in user mode.
Fri Help session, 3:30 p.m. (new time) in EB 237.
Break
Class 17  Tue 15‑3‑2016   Google's too-late announcement.
The plan for completion.
Core Memory: C2, C3, C4, C5, C6, C7.
Designs for a superior file system (just the beginning). Just name and first block number is the directory, all other meta-data in the "header block". Still plenty of space, so include pointers to data blocks. A linked list arrangement of blocks may sound good, but it is terrible for random access.
Class 18  Thur 17‑3‑2016   More file systems: it makes sense to store the file name in two places, 1-, 2-, 3-, and more- level index formats, variable-level-index, calculating maximum file sizes and access times for serial and random access. Partitions and clusters, fsck.
Fri Short notice help session, 3.30 p.m.
Class 19  Tue 22‑3‑2016   Austin day.
Class 20  Thur 24‑3‑2016   I-nodes and the fixed I-node list, defragmentation, NTFS with "runs", ReiserFS (the beginning).
Fri Help session, 12 o'clock.
Class 21  Tue 29‑3‑2016   ReiserFS with some details. The free list: just keeping a list of all the unused block numbers in a fixed place on the disc is surprisingly effective. The complete format of a disc.
Also Tue Help session, 6.30 p.m.
Class 22  Thur 31‑3‑2016   Yet another picture of virtual memory.
Alternate sources: Intel's version (from the 80486), which is almost identical to ours. The book also covers it in the "virtual memory" chapter.
Reminders from the past: Making the free page list, Setting up V.M..
Class 23  Tue 5‑4‑2016   How a good heap, newvec, and freevec really work.
Class 24  Thur 7‑4‑2016   The initial creation of the heap, and later allocation of extra pages to heap and stack.
Privileged system calls and the call gate vector.
Threads - the pthread library. Here's the still incomplete class example.
Fri 8th Help session, 12 noon.
Tue 12‑4‑2016 Help session, 1 p.m.
Class 25  Also Tue   Completing our adventure with pthreads. This is the final product.
Class 26  Thur 14‑4‑2016   ANNOUNCEMENT!
Getting the file system straightened out.
Class 27  Tue 19‑4‑2016   Exploiting a foolish but very common security flaw.
The exploitable program, the exploit, the resulting input stream.
Class 28  Thur 21‑4‑2016   Whatever you need the most.
Fri 22nd Help session, 12:30.
Noon Thur 5‑5‑2016   After 12 noon today, no late submissions can even be looked at.
Solid no-exceptions-whatsoever deadline.