Operating Systems, Fall 2022
Intro Course in Operating Systems
Welcome!
This is the webpage for CS 450: Operating Systems at IIT. This course is for junior/senior level undergraduates and graduates in Computer Science. CS 450 is a core requirement for the CS curriculum. Both CS 350 and CS 351 are required prerequisites.
Course Communication
We’ll be using the Diderot platform for course communication. You will receive an invite from me in the first week of class. The course schedule, lecture materials, class discussion, and assignments will all be on Diderot.
Other Useful Links and Resources
This is a list of other resources that you might find useful for this class. Feel free to peruse them at your own convenience.
Links
- Good resource for OS development
- Resources for learning Git
- Another nice Git resource
- QEMU documentation
- Nice article on virtual memory
- The ELF executable format
- Intel Architecture Manual
- AMD Architecture Manuals
- Brennan’s Guide to Inline Assembly
- GCC Inline Assembly
- Various simulators, e.g. for process schedulers, disk head schedulers, etc.
- Code for various Linux kernel and Windows kernel exploits
Interesting, important, historical, and new OS Kernels
- The Linux Kernel, arguably the most important kernel of our time
- FreeBSD
- Nautilus, a research OS written by your instructor for parallel runtime systems
- Plan 9, an important (but commercially unsuccessful) UNIX successor by Bell Labs
- Harvey OS, a new successor to Plan 9
- Drawbridge, research prototype from MSR (components of which are now in the NT kernel).
- MINIX 3, a historically important microkernel (originally—and still—used for teaching). Intel chips actually run this internally!
- Several OSes based on the L4 kernel, an important early microkernel
- Android OS, Google’s mobile OS (based on Linux kernel, but probably soon Fuchsia (below))
- Fuchsia OS, a new microkernel-based OS from Google
- Barrelfish OS, an important research OS from ETH Zurich (the OS is a distributed system)
- Redox, an OS written in Rust (UNIX-like)
- Kitten Lightweight Kernel, an OS kernel designed for supercomputing
- Scout, a network-oriented research OS
- MirageOS, a Unikernel for OCaml applications
- OSv, a popular new Unikernel
- Pintos, a teaching OS based on the Nachos research OS.
- JOS, another teaching OS
- OS/2, an important mainframe OS from IBM
- COS, an OS for some of the first supercomputers
- CP/M, an OS for some of the first microcomputers. Here is the code.
- code for the OS of Xerox Alto, the first computer with a GUI
- source code for MS-DOS 1.25 and 2.0
- source code for the XNU kernel, part of Darwin, which powers macOS
- source code for ReactOS, a WindowsNT-compatible kernel
- System software for the Apollo Guidance Computer
- Code for the Apple II’s DOS
- Code for the Atari 7800’s OS