Lectures and labs
- For lecture slides, please refer to the schedule page.
- For lab sessions, please refer to the Moodle page.
Reference books
-
Main textbook: Remzi Arpaci-Dusseau and Andrea Arpaci-Dusseau. Operating Systems: Three Easy Pieces. Freely available online.
-
Silberschatz, Galvin, Gagne. Operating Systems Concepts. Wiley. (Preferably 8th edition or above.)
-
A.S. Tanenbaum. Modern Operating Systems. Pearson education. (Preferably 3rd edition or above.)
-
S. Mathews, T. Newhall, K. Webb. Dive into systems. Freely available online.
- This is a multidisciplinary textbook, which covers C programming, computer organization and architecture, (Intel and ARM) assembly programming, operating systems, and parallel computing. May be useful for the pre-requisites (C programming, notions of assembly and computer architecture).
Past exams
-
Midterm 1 – October 2021
-
Midterm 1 – October 2022 Answers [pdf]
-
Final exam – December 2021 [pdf]
-
Final exam – December 2022 [pdf]
Misc. articles for further reading
Some interesting (and usually relatively short) articles about specific/timely topics related to operating systems. (Note: these are optional readings.)
-
An outlook on the evolution and R&D challenges for operating systems in the next decade (2016-2025). * Dejan Milojicic, Timothy Roscoe. Outlook on Operating Systems. IEEE Computer. January 2016. [pdf]
-
A parallel between (OS/paging/swapping) memory management techniques to avoid “thrasing” (pathological performance collapse) and managing multitasking in your real life. Understanding the former may help you with the latter. And vice versa. * Peter J. Denning. Multitasking Without Thrashing. Communications of the ACM. September 2017. [pdf]
-
A story (from 2003) about an attempt to introduce a “security backdoor” in the Linux kernel. Here are a few additional details to help you understand the principle of this attack:
- The attack targeted the (kernel-side) implementation of
wait4
, a variant ofwaitpid
. - In the Linux kernel,
current
is a global variable that points to thetask_struct
(i.e., the process control block) of the currently running process. current->uid
corresponds to the user ID of the owner of the currently running process.
- The attack targeted the (kernel-side) implementation of
Misc. documentation (for the lab sessions)
-
Installing Linux
- A few slides on how to install Linux on a Windows machine
- For the 2022-2023 academic year, we recommend using the Ubuntu 22.04 Linux distribution.
- Helpful links for enabling enhanced features in VirtualBox:
-
Linux online man pages (from man7.org)
-
GDB (the GNU Debugger):
-
[Advanced topic] A very detailed/advanced description of how system calls are implemented on Linux/Intel processors
-
Intel/AMD x86_64 processors
-
Note: These processors equip the vast majority of the machines that you will use at the University (servers and desktop machines). They also (most likely) equip your own laptop/PC.
-
A short description of function calling conventions and stack frames on x86_64
-
CMU documentation on x86_64 machine-level programming:
-
Document (quite long but very clear/accessible)
-
Lecture slides:
-
-
The specification of the ABI used by Linux on x84_64
-
-
For assembly programming, see also “Dive into systems” (freely available):
Useful references about C programming
-
Books and documents in English:
* S. Mathews, T. Newhall, K. Webb. [*Dive into systems*.](https://diveintosystems.org) (**Freely available**) - Chapters [1](https://diveintosystems.org/antora/diveintosystems/1.0/C_intro/index.html), [2](https://diveintosystems.org/antora/diveintosystems/1.0/C_depth/index.html) and [3](https://diveintosystems.org/antora/diveintosystems/1.0/C_debug/index.html). * B. W. Kernighan, D. M. Ritchie. *The C Programming Language (2nd edition)*. Prentice Hall, 1988. * K. N. King. *C Programming. A Modern Approach (2nd edition)*. Norton, 2008. * J. Gustedt. *Modern C (2nd edition)*. Manning, 2019. **Freely available as a pdf ebook from the following page: [https://modernc.gforge.inria.fr](https://modernc.gforge.inria.fr)** * T. Love. [*ANSI C for UNIX programmers*](http://www-h.eng.cam.ac.uk/help/tpl/languages/C/teaching_C). * M. Dahlin. [*C for Java programmers*](http://www.cs.utexas.edu/~dahlin/Classes/439/reference.htm).(See section 1.1: Reading) * J. H. Silverman. [*C Reference Card*](http://www.math.brown.edu/~jhs/ReferenceCards/CRefCard.v2.2.pdf). * [CMU C Bootcamp](http://www.cs.cmu.edu/afs/cs/academic/class/15213-s18/www/activities/c_bootcamp.pdf) * [Types in C](https://www.cs.cmu.edu/~fp/courses/15122-f15/lectures/21-types.pdf)
-
Books and documents in French:
- B. W. Kernighan, D. M. Ritchie. Le Langage C (2e edition). Dunod.
- B. Cassagne. Introduction au langage C. 1998.
- A. Braquelaire. Methodologie de la programmation en C. Dunod.