ECE421 T, Operating Systems, Spring 2020
Tues, Thurs at 5:05 p.m. in MM 100

The Book

Documentation

Assignments

email to grader521 @ rabbit.eng.miami.edu, include typescript/screenshot.
     1  due:  Just do it!      Simple program in BCPL.     
2  due:  Sat 25th Jan A basic data structure in BCPL.
3  due:  Sat 22nd Feb newvec and freevec working on a tree of strings.
4  due:  Sat 4 Apr Make a basic file system.
5  due:  Sat 2 May Processes, part I.
6  due:  Wed 6 May Processes, part II.
The grader's reminders page.

Class History

Class 1  ‑ Tue 14‑1‑2020   Quick introductions.
Up to point 14 in the BCPL documentation.
Class 2  ‑ Thur 16‑1‑2020 Up to point 33,
Beginning data structures.
Class 3  ‑ Tue 21‑1‑2020 Data structures: thre tree and the vector.
Beginning to think about malloc() and free().
Class 4  ‑ Thur 23‑1‑2020 Newvec and freevec (malloc and free).
A more advanced version of newvec/freevec.
Class 5  ‑ Tue 28‑1‑2020 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.
Writing output to a "magnetic tape" in BCPL.
Our unfinished attempt to read from a tape.
Class 6  ‑ Thur 30‑1‑2020 The finished tape reading example.
File systems: contiguous allocation.
Class 7  ‑ Tue 4‑2‑2020 Condensing a contiguous allocation system.
What kind of meta-data does a file need? Time formats etc.
1-, 2-, and 3-level index formats,
maximum file sizes and average access times.
Class 8  ‑ Thur 6‑2‑2020 Variable level index,
size of a block pointer, partitions, clusters,
I-nodes, linked list of nodes, contiguous allocation runs.
Class 9  ‑ Tue 11‑2‑2020 Free block management: as a linked list, as a free-file, and
as a stack of free block numbers.
Class 10  ‑ Thur 13‑2‑2020 Separate compilation
Code generation: how function calls and returns are handled.
Class 11  ‑ Tue 18‑2‑2020 Code generation: a complete program example
How worms exploit the gets vulnerability.
Class 12  ‑ Thur 20‑2‑2020 Simple example dealing with interrupts,
A proper keyboard buffer this time, but it has a problem.
Critical sections.
Class 13  ‑ Tue 25‑2‑2020 Semaphores, Mutexes.
The dining Philosophers.
Intel's x86 interlocked instructions.
Class 14  ‑ Thur 27‑2‑2020 Monitors.
Single user devices: card reader, (codes), line printer, graph plotter, ASR33 teletype, (paper tape).
Mutual exclusion through software: A, B, C, D, E, F.
Class 15  ‑ Tue 3‑3‑2020 A very old-fashioned file system coded.
Class 16  ‑ Thur 5‑3‑2020 A look at FAT-16.
Mercury delay lines, again, Nickel delay line,
Core Memory: C2, C3, C4, C5, C6, C7.
Break
Class 17  ‑ Tue 17‑3‑2020 (closed)
Class 18  ‑ Thur 19‑3‑2020 (closed)
Class 19  ‑ Tue 24‑3‑2020 (recorded class)
Class 20  ‑ Thur 26‑3‑2020 Introducing Intel's paged virtual memory method.
Illustrations of a system running with virtual memory.
Under the emulator, making VM really happen, here's the plan.
Now the big thing, Build the page tables, turn on VM, and run something in user mode.
(recorded class)
Class 21  ‑ Tue 31‑3‑2020 Finishing up from Tuesday.
Programming with processes under unix.
(recorded class)
Class 22  ‑ Thur 2‑4‑2020 Timesharing and Processes, Life-cycle of a Unix process.
(recorded class)
Class 23  ‑ Tue 7‑4‑2020 A hint at a way of starting a process.
Timesharing between two threads.
(recorded class)
Class 24  ‑ Thur 9‑4‑2020 A serious page map, and its implementation: vm5.b, os5.b, usr5.b.
os5.b improved.
(recorded class)
Class 25  ‑ Tue 14‑4‑2020 Working with paged virtual memory.
(recorded class)
Class 26  ‑ Thur 16‑4‑2020 Building a Virtual Machine, part 1.
(recorded class)
Class 27  ‑ Tue 21‑4‑2020 Virtual machines part 2: virtual memory.
Timesharing between two threads.
(recorded class)
Class 28  ‑ Thur 23‑4‑2020 An adventure with Posix Threads.
(recorded class)
Class 29  ‑ Tue 28‑4‑2020 End of threads, beginning of code generation
(recorded class)
Class 30  ‑ Thur 30‑4‑2020 Part two of code generation
(recorded class)
Class 31  ‑ Thur 5‑5‑2020 The end of code generation.
(recorded class)