Our primary course book is Arpaci-Dusseau et al.: Operating Systems: Three Easy Pieces (Version 1.00). We will also occasionally refer to the MIPS R4000 Microprocessor User’s Manual (2nd Edition), the RISC-V Iinstruction Set Manuals (unprivileged and privileged), and the Intel 64 and IA-32 Architectures Software Developer’s Manual (Version 325462-084).
If, for any reason, you need more information, there are other excellent books that can help you study. Favorites include:
- Anderson et al.: Operating Systems Principles and Practice
- Silberschatz et al.: Operating System Concepts
- Tanenbaum et al.: Modern Operating Systems
None of these books follows the course exactly, but all contain enough material to suffice as a learning material.
A good book on the computer systems background is Patterson et al.: Computer Organization and Design.
For those who do not regularly work with Linux or C, we recommend our introduction to Linux and our system programming course.
Manuals
- MIPS R4000 Microprocessor User’s Manual (2nd Edition)
- System V Application Binary Interface, MIPS RISC Processor Supplement (3rd Edition)
- RISC-V Instruction Set Manual, Unprivileged ISA (20191213)
- RISC-V Instruction Set Manual, Privileged Architecture (20211203)
- RISC-V ABIs Specification (version 1.0)
- Intel 64 and IA-32 Architectures Software Developer’s Manual (Version 325462-075)
Blogs and other more informal resources
- Daniel Mangum: RISC-V Bytes (set of blog posts about RISC-V)
- Tom Mewett: Everything I wish I knew when learning C (useful tips and links for C newbies)
- James Fisher: How do varargs work in C? (also contains a skeleton of
printf
) - How does the kernel implement Linked Lists? (detailed discussion of the linked list implementation used in the Linux kernel)
- Course overview and M00 (lab slides from 2024-10-03)
- Memory management overview (MIPS and RISC-V) (lab slides)
Selected topics from other courses
- Computer Systems (NSWI170)
- C language basics
- Instructions and compilation of basic programming language constructs (also contains an introduction to the MIPS instruction set)
- Introduction to Linux (NSWI177)