EEN521 (Operating Systems) Autumn 2003
- Syllabus for the Course.
- Downloads: Software to make things work
- The book
- vi editor cheat-sheets as Word .doc and as Normal HTML
- Information concerning the emulator:
- Mid-Term: To be determined.
- Final Examination: To be determined.
- Assignments:
- The Gets Worm, report due Tuesday 30th September.
(Sample (bad) report showing depth expected, in PDF format)
- Interrupt-driven Input System, report due Tuesday 28th October.
Using the emulator, install your own handler for the keyboard, and build a general-purpose
input library based on it, providing at least read_character(), read_int(), read_string(),
and unread_character(), or equivalent functionality.
- File System, report due Tuesday 2nd December
Using the emulator, implement a disc file system. It should be possible to create files,
delete files, add/write data to files, and read data from files. Provide a small library
of functions that allow C programs to conveniently perform all of those operations.
Integrate this with the second assignment, so that a program can use the same functions
to read/write to disc files as it uses to interact with the user on a terminal. You do
not need to implement subdirectories, but that is a good source of extra credit. You
should support reasonably large files, but do not need to go to extremes; that is also
a source of extra credit.
- Shell, report due Friday 12th December
Using the emulator, implement a basic shell (perhaps like DOS or unix's sh or csh), allowing
the user to enter basic commands, manipulating and inspecting files, loading and
running programs, and other basic operating system operations.
- Class History:
- Class 1 (28-8-2003) General introductions; How even simple input from keyboard is really complicated.
- Class 2 (2-9-2003) Layering and interactions between parts of the i/o system; beginning of memory mysteries.
- Class 3 (4-9-2003) Memory Mysteries: how do program get just the right amount of memory? stack frames, etc.
- Class 4 (9-9-2003) Virtual Memory Part 1, compilation process, segments, address spaces.
- Class 5 (11-9-2003) Details and examples for gets-worm assignment; Virtual Memory part 2: cache translation help.
- Class 6 (16-9-2003) Virtual Memory part 3: page tables, base and length registers, page translation, virtual page tables.
- Class 7 (18-9-2003) Big worked example of VM; loading programs, allocating on demand.
- Class 8 (23-9-2003) Core and Valves; End of Virtual Memory: the translation procedure, effects on speed, non-resident pages.
- Class 9 (25-9-2003) Interrupts, introduction, hardware support, rapid switching, IPL, interrupt vectors, fetch-execute cycle.
- Class 10 (30-9-2003) Hidden registers; Programming with interrupts; example; second assignment: interrupt-based input system.
- Class 11 (2-10-2003) Magnetic tapes and discs, physical characteristics, organisation of media; blocks, CRCs, etc.
- Class 12 (7-10-2003) Physical disc org.: sectors, cylinders, etc.; Logical org.: contiguous allocation scheme, condensing file system.
- Class 13 (9-10-2003) More disc orgs: FAT-16 and similar, MBRs, Boot sectors, file allocation tables, directories, clusters, partitions.
- Class 14 (14-10-2003) Sensible disc structure, super blocks, free lists, allocating and deallocating blocks.
- Class 15 (16-10-2003) File structures, zero, one, two, ...-level indexes, linked lists; programs that manipulate blocks directly.
- Class 16 (21-10-2003) Determining capacities and access times; unix: inodes, inode list, fsck.
- Class 17 (23-10-2003) NTFS; fragmentation; how malloc() and free() work; Disc access on the emulator.
- Class 18 (28-10-2003) Device drivers, terminal drivers, IORPs, whole cycle of an I/O request.
- Class 19 (30-10-2003) Disc scheduling: FCFS, SSTF, Scan; Processes: different models, representation (PCB), mode, state, etc.
- Class 20 (4-11-2003) Static Linking, Dynamic Linking, System Calls; Structure of a Process.
- Class 21 (6-11-2003) Attributes of a process; creating a process, fork, exec, and COW pages; Life-cycle (states) of a process.
- Class 22 (11-11-2003) Free software, GNU, Linux, and Ethics; Communications between Processes (introduction).
- Class 23 (13-11-2003) Inter-process communications: flags for strict turn-taking; semaphores; interlocked instructions.
- Class 24 (18-11-2003) Implementing semaphores; Race conditions (CR+LP example) and deadlock; Dining Philosophers illustration.
- Class 25 (20-11-2003) All about the dining philosophers; solutions to deadlock problems; race conditions; monitors and synchronised methods.
- Class 26 (25-11-2003) Attmepted demo of ARP cache poisoning; data security concerns; how insecure amateur cryptography can be.
- Class 27 (2-12-2003) Successful demo of ARP cache poisoning; xor and permutation encryption insecure; one-time pads; DES/DEA; one-way hashes.
- Class 28 (4-12-2003) Evaluations; Diffie-Hellman secure key invention; RSA; computing power needed for cracking.