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 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. |