1 | due: Fri 4th February. | A simple program in BCPL. | |
2 | due: Thur 17th February. | Using the heap. | |
3 | due: Tues 1st March. | Using the heap a bit more. | |
4 | due: Sun 13th March. | First disc i/o assignment - contiguous allocation. | |
5 | due: Sun 3rd April. | A proper heap - your own fully functional newvec and freevec. | |
6 | due: Wed 20th April. | A single process running under virtual memory. | |
7 | due: I'll allow up to 7th May. | Multiprocessing. |
Class 1 ‑ | Tue 18‑1‑2022 | Quick introductions. The syllabus. A quick look at what we'll be doing for the next 28 classes. | ||||
Class 2 ‑ | Thur 20‑1‑2022 | Learning BCPL; we got up to point 27. | ||||
Class 3 ‑ | Tue 25‑1‑2022 | More BCPL, covering data structures, and getting up to point 40. | ||||
Class 4 ‑ | Thur 27‑1‑2022 | The end of studying BCPL. Magnetic tapes as an introduction to disc technology: A single magnetic tape unit, and a bunch of them in a typical large installation. A reminder about probability theory for disc and tape drives. Blocks, checksums, the inter-block gap. Magnetic drums, and one of them opened up, 1957 specs. A disc drive from 1965, with specs. A picture and some out-of-date calculations. Writing output to a "magnetic tape" in BCPL. | ||||
Class 5 ‑ | Tue 1‑2‑2022 | Finishing the tape reading program. ios.b: a proper files library, (TTY = teletype = user's terminal); A TTY port. Operations allowed on a disc. Starting work on a contiguous allocation disc file system: superblock, root directory, directory entry format, etc. | ||||
Class 6 ‑ | Thur 3‑2‑2022 | Operations on a contiguous allocation file system. Advantages and disadvantages. Starting to think of files as linked lists of blocks. | ||||
Class 7 ‑ | Tue 8‑2‑2022 | Linked lists of blocks, for files and the free block list. Single level indexes, 2-level, and even 0-level indexes, Variable level indexes for files, Maximum file sizes, access speeds for sequential and random access. Using a bitmap to record which blocks are free. | ||||
Class 8 ‑ | Thur 10‑2‑2022 | When the number of levels in a file changes. The list of free blocks as a stack. (Or a queue). Partitions and clusters. Inodes, hard and soft links. | ||||
Class 9 ‑ | Tue 15‑2‑2022 | NTFS runs or extents, and the MFT. A look at FAT-16, and FAT-32. A B-Tree, Reiser-FS. | ||||
Class 10 ‑ | Thur 17‑2‑2022 |
disc failure modes, and SSDs, RAID, A little program illustrating how local variables are allocated, and how basic expressions are translated. | ||||
Class 11 ‑ | Tue 22‑2‑2022 | An aside: some help with wrong programs. Compiling functions and function calls: stack frames, SP, FP. Where C's gets function lets us down. | ||||
Class 12 ‑ | Thur 24‑2‑2022 | Worms. A scheme for malloc and free. | ||||
Class 13 ‑ | Tue 1‑3‑2022 | The first disc i/o assignment. Garbage Collection. Mercury delay lines, again, Nickel delay line. Core Memory: C2, C3, C4, C5, C6, C7. | ||||
Class 14 ‑ | Thur 3‑3‑2022 | The Buddy system illustrated. Base and limit memory management. Paged systems. | ||||
Class 15 ‑ | Tue 8‑3‑2022 | Intel's memory management scheme. What's in memory when Virtual Memory is active. The plan shown differently. How the emulator handles virtual memory. | ||||
Class 16 ‑ | Thur 10‑3‑2022 | The algorithm for address translation. Build the page tables, turn on virtual memory, and run a program in user mode. How interrupts are processed. | ||||
Break | ||||||
Class 17 ‑ | Tue 22‑3‑2022 | Device drivers, disc scheduling. A first example program using interrupts. Something more serious: the keyboard interrupt dealt with properly. | ||||
Class 18 ‑ | Thur 24‑3‑2022 | Shared variables (or other resources) cause trouble: Critical sections and how to protect them, Mutexes, P(s), and V(s), and how to implement them, Atomic test and set; Intel's x86 interlocked instructions. Single user devices: card reader, (codes), line printer, graph plotter. | ||||
Class 19 ‑ | Tue 29‑3‑2022 | semaphores. A very basic monitor. Mutexs and semaphores may have queues of sleeping processes. Deadlock with the CR and LP example, The dining philosophers. Off-line processing or ordered allocation of resources. | ||||
Class 20 ‑ | Thur 31‑3‑2022 | The lifecycle of a Unix process. A hint at how to make a process. | ||||
Class 21 ‑ | Tue 5‑4‑2022 | Two processes running independently, and it improved. A serious page map, and its implementation: vm5.b, os5.b, usr5.b. | ||||
Class 22 ‑ | Thur 7‑4‑2022 | os5.b improved to handle page faults (mostly). Advice on assignments 6 and 7. | ||||
Class 23 ‑ | Tue 12‑4‑2022 | Building a virtual machine: physical memory and basic instructions. | ||||
Class 24 ‑ | Thur 14‑4‑2022 | Building a virtual machine: interrupts and virtual memory. Bytecode. | ||||
Class 25 ‑ | Tue 19‑4‑2022 | Compiling: Our starting point. Where we got to: a trivial program. | ||||
Class 26 ‑ | Thur 21‑4‑2022 | Continuing: The factorial program. Local variables, loops, conditionals, Where we got to. | ||||
Class 27 ‑ | Tue 26‑4‑2022 | Defining and calling functions; local variables. | ||||
Class 28 ‑ | Thur 28‑4‑2022 | Talking about the assignments - whatever you need. |