TDDB68 Concurrent programming and Operating Systems
Course Literature VT 2017
BooksThe main textbook for this course is:
Silberschatz, Galvin and Gagne: Operating System Concepts, 9th ed., John Wiley & Sons, 2014. ISBN 978-11180-9375-7.
Earlier editions of the book, such as the 8th edition of 2010 (ISBN 978-0-470-23399-3) or 7th edition of 2005 (ISBN 0-471-69466-5), are still useful to a very large degree. Some alternative textbooks are listed below.
Note that there is also a variant of the book (by the same authors) called Operating Systems Concepts in Java. That book contains basically the same presentation of the theory, but most code examples (especially on synchronization) are in Java. In contrast, our lecture examples and labs are based on C (for good reasons), and Java-specific issues are also covered in the ordinary (non-Java) variant of the book. If you can easily abstract from the programming language used, there is no major problem with the Java variant of the book. However, as Java is less suitable as an OS implementation language, we do not recommend the Java variant. Reading directions are based on the non-Java version.
Errata for the 7th edition, first printing compiled by C. Kessler, July 2005
- Deitel, Deitel and Choffnes: Operating Systems, 3rd ed., Prentice Hall, 2004 (or a newer edition).
- Stallings: Operating Systems, Internals and Design Principles 5th ed., Prentice Hall, 2004 (or a newer edition).
- Tanenbaum: Modern Operating Systems, 3rd edition, Pearson / Prentice Hall, 2009.
- Silberschatz, Galvin and Gagne: Applied Operating Systems Concepts, John Wiley & Sons, 2003 (or a newer editon)
- Nutt: Operating Systems, 3rd ed., Addison-Wesley, 2003
- Bacon and Harris: Operating Systems - Concurrent and Distributed Software Design, Addison-Wesley, 2003
- Bic and Shaw: Operating Systems Principles, Prentice Hall, 2003
Lab assignmentssee the lab page
- Besides the code itself, the most important piece of documentation is the original pintos documentation [stanford.edu]. Or if you prefer it, as pdf. - The projects refered to in this document are not the same as our laboration assignments!
Programming in C
- B. Kernighan, D. Ritchie: The C Programming Language, 2nd ed.. Prentice-Hall, 1988, or a later edition.
- H.M. Deitel, P.J. Deitel: C How To Program. Prentice-Hall, 1992, or a later edition (more recently: 5th edition, Pearson, 2007).
- or any newer book on C.
DebuggingWe use the GDB debugger for debugging in the Pintos labs. A general introduction to debugging is
Norman Matloff and Peter Jay Salzman:
The art of debugging with GDB, DDD, and Eclipse.
Available as electronic copy in the LiU library.
- Some general debugging topics.
DDD debugger (with Lab 0 only)
Some recent articles on operating systems and concurrent programming
- Peter J. Denning:
The Locality Principle.
Communications of the ACM 48(7):19-24, July 2005.
Short review of OS research on virtual memory, working sets, and locality optimizations.
- B. Kuperman et al.: Detection and prevention of stack buffer overflow attacks. Communications of the ACM 48(11):19-24, Nov 2005.
- Edward A. Lee: The Problem with Threads. IEEE Computer May 2006, pp. 33-42.
- A. Adl-Tabatabai, C. Kozyrakis, B. Saha: Unlocking Concurrency: Multicore programming with transactional memory. ACM Queue Dec/Jan 2006/2007.
- M. Price: The Paradox of Security in Virtual Environments.
IEEE Computer Nov 2008, pp. 22-28.
Short review of virtualization techniques and their positive and negative implications on system security.
Some follow-up courses at IDA
- TDDC78 Programming parallel computers - methods and tools
- TDDD56 Multicore and GPU Programming
- TDDD25 Distributed systems
- TDDD07 Real-time systems
Page responsible: Mikael Asplund
Last updated: 2016-12-16