ECE421 T, Operating Systems, Spring 2022
Tues, Thurs at 6:00 p.m. in MM 203

The Book

Documentation

Assignments

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: Sat 30th April.
I'll allow up to 7th May.
Multiprocessing.
Submit assignments (code + sample run(s)) to grader421 at rabbit.eng.miami.edu
Capture your code as text, not an image: cat, copy, paste.

Class History

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.