email to grader521 at rabbit.eng.miami.edu, include typescript/screenshot. | ||||||
1 | due | Wed 15th Sept | A simple program in assembly language. | |||
2 | due | Wed 22nd Sept | The same program, but with proper stack frames and local variables. | |||
3 | due | Mon 18th Oct | Make your own BIOS. | |||
3 | due | Due Later | Make your own File-System. |
Class 1 | Wed 25‑8‑2010 | Some groundwork: the assembly-linking-loading process, how wide should memory be?, varieties of instruction formats, introducing the mystery of virtual memory. | ||||
Class 2 | Mon 30‑8‑2010 | Reminders about the internal structure of a CPU, the fetch execute cycle, our first traditional assembly language program. | ||||
Class 3 | Wed 1‑9‑2010 | (consoles: a, b, c, d) Some very low-level programming, and seeing what a linker does (the library file, the main program, transcript of run). | ||||
Class 4 | Wed 8‑9‑2010 | Memory structure, working out the calling convention (i.e. how functions work in high level languages, with local variables and supporting recursion). Beginning a simple implementation of virtual memory. | ||||
Class 5 | Mon 13‑9‑2010 | Full consideration of the structure of a stack frame, a worked example with crazy recursion. The full picture of Primitive virtual memory hardware, leading to ideas about interrupts and modes of operation. | ||||
Class 6 | Wed 15‑9‑2010 | Automatic generation of assembly code: the picture, step 1, step 2, step 3, step 4, step 5, step 6. | ||||
Class 7 | Mon 20‑9‑2010 | How to make an Operating System. | ||||
Class 8 | Wed 22‑9‑2010 | Enormous example with interrupts, timesharing, system calls, process deletion, etc. | ||||
Class 9 | Mon 27‑9‑2010 | How input/output operations are really done, PERI-like instructions, and
data structures in assembly language. Magnetic tapes, drums, and discs: blocks, checksums, the inter-block gap. A single magnetic tape unit, and a bunch of them in a typical large installation. a reminder about probability theory for disc drives. A magnetic drum storage device, and one of them opened up, 1957 specs. A disc drive from 1965, with specs. | ||||
Class 10 | Wed 29‑9‑2010 | Disc fundamentals, bad old CHS, DOS horrors, partitions, clusters. Structure of files and directories, contiguous allocation of files good for access speed but very bad when files are deleted or modified. | ||||
Class 11 | Mon 4‑10‑2010 | Observations on BIOS-making. Structures for files and header blocks, files as linked lists of blocks, header containing array of block numbers, pointer blocks. | ||||
Class 12 | Wed 6‑10‑2010 | Concrete implementations of all the disc block structures, formatting and using a disc; some physics to assess access time claims. | ||||
Class 13 | Mon 11‑10‑2010 | File formats: contiguous allocation, N-level-indexes, I-nodes; maximum file capacities, minimum space requirements, sequential and random access times. | ||||
Class 14 | Wed 13‑10‑2010 | B-trees as disc data structures. The ReiserFS file system. | ||||
Class 15 | Mon 18‑10‑2010 | File systems implemented as layered software systems, basic block oriented operations supporting system-level functions (such as open, read, write) with block-sized buffers, supporting user-level functions (such as getchar, putchar, printf). Two bad ways of building a free list. | ||||
Class 16 | Wed 20‑10‑2010 | Full consideration of the free-list (collection of unused blocks). The device driver with its queue of requests from different processes - what happens if two processes try to enqueue a request at the same time? Multiple processes cooperating through shared memory - the race condition caused by concurrent update operations. The race condition in Read-Modify-Write instructions when multiple CPU cores access same memory unit. Critical Sections, Semaphores, Atomic and Interlocked Operations. | ||||
Class 17 | Mon 25‑10‑2010 | helpful things for inspecting filesystems. Minor variations on semaphores, Monitors and Synchronised methods. Competition for shared resources, Deadlock. Introducing the Dining Philosophers. | ||||
Class 18 | Wed 27‑10‑2010 | Examining the world of the dining philosophers and how they correspond to processes in an operating system. Butler, Footman, Fork Boy, Fork Monster, Requiring ordered resource allocation, Workstudy with transfusions: off-line device access. Leases on resources. Considering the problems with Network File Systems. | ||||
Class 20 | Wed 3‑11‑2010 | Network systems: Token ring, Aloha (U. of Hawaii) net, ethernet, hardware (MAC) addresses, IP addresses, ARP system. | ||||
Class 21 | Mon 8‑11‑2010 | Ethernet, IEEE802, IP, UDP, and TCP. | ||||
Class 22 | Wed 10‑11‑2010 | server programming, client programming, DNS, setting non-blocking mode for multi-source interactive input. | ||||
Class 23 | Mon 15‑11‑2010 | Security problems: the "gets worm", "!" shell escapes, and other acts of careless programmers. Un-reversable encryption for passwords, the perfect one-time-pad and its hopeless relatives. | ||||
Class 24 | Wed 17‑11‑2010 | One-way hashes, password files, fingerprinted data, symmetric encryption, DES, asymmetric public key/private key encryption, RSA, guaranteed sender and/or receiver. | ||||
Class 25 | Mon 22‑11‑2010 | A modern paged virtual memory system. | ||||
Class 26 | Mon 29‑11‑2010 | Details of paged virtual memory, proecss life-cycle. | ||||
Class 27 | Wed 1‑12‑2010 | Heap management: new/malloc and delete/free; garbage collection. |