Resources
Course material
- Textbook: Operating Systems: Three Easy Pieces by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, free online.
- Course VM: Ubuntu VirtualBox image with the tools used in labs and homework.
- Recordings: YouTube playlist of the 2018 lectures.
- Code used in class: the code folder on this site.
- Source of this site: nipunbatra/os2018 on GitHub, including lab code.
- Project ideas: course project ideas spreadsheet.
Videos
- Introduction to memory management in Linux
- Google Chrome and security: sandboxing, on Chrome’s multi-process design
Further reading
- Dennis M. Ritchie and Ken Thompson, The UNIX Time-Sharing System
- Maurice J. Bach, The Design of the UNIX Operating System
- Andrew S. Tanenbaum, Modern Operating Systems
- OSDev Wiki
- Linux kernel documentation
- xv6, a simple Unix-like teaching operating system (source)
- Minix, a microkernel-based operating system
- seL4, a high-assurance microkernel
Programming
- Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language
- C reference on cppreference.com
- GDB documentation
- W. Richard Stevens and Stephen A. Rago, Advanced Programming in the UNIX Environment
- Robert Love, Linux System Programming
- Michael Kerrisk, The Linux Programming Interface
- Tools used in the course: GCC, GDB, Valgrind, Make,
top,htop,ps,straceandperf.