Operating Systems

Operating Systems is a basic course offered within the context of our Computer Science Degree Program. It is a theoretic-practical course that covers most of the fundamental concepts and algorithms regarding system level software. A set of classic books (see bibliography bellow) give scientific support to the course, while the Linux System yields a platform for the practical exercises carried along the course.

Requisites

The requisites for this course are Computer Architecture I and Assembly Programming.

Program (72 hours)

* The course on Parallel Programming covers these topics in depth.
+ The course on Software/Hardware Integration covers these topics in depth.
Topic Notes Hours
1 - Introduction PDF
1.1 - Historic Perspective
2
1.2 - Computer Systems Structures
2
1.3 - Operating System Structures
2
2 - Process Management
2.1 - Processes
PDF 6
2.2 - CPU Scheduling
PDF 6
2.3 - Process Synchronization
PDF 2*
2.4 - Deadlocks
PDF HTML 2*
3 - Memory Management
3.1 - Physical Memory
PDF 6
3.2 - Virtual Memory
PDF PDF 6
4 - File Management
4.1 - File Systems
PDF 4
4.2 - Disk Management
PDF 4
5 - I/O Management
5.1 - I/O Systems
PDF 2+
5.2 - Unix (Linux) Device Drivers
PDF SRC 4+
6 - Introduction to Distributed Systems PDF 6
7 - Discussion 2

Evaluation

Students will undergo three evaluation steps: process management, memory managemen and I/O management.

Exercises

  1. Remembering compilation
  2. The true story of Hello World (or at least a good part of it)
  3. UNIX process creation
  4. User-level Threads
  5. The Dining-Philosophers Problem: an Operating System Perspective
  6. User-level Memory Management
  7. User-level File System
  8. A device driver example: RTC (Linux 2.4, Linux 2.6)

Literature

  1. Maurice J. Bach, The Design of the UNIX Operating System, Prentice-Hall, 1987.
  2. Moshe Bar, Linux Internals, Osborne McGraw-Hill, 2000.
  3. Samuel J. Leffler, Marshall Kirk McKusick, and Michael J. Karels, The Desing and Implementation of The 4.3 BSD UNIX Operating System, Addison-Wesley, 1989.
  4. Alessandro Rubini and Jonathan Corbet, Linux Device Drivers, 2nd ed., O'Reilly, 2001.
  5. Abraham Silberschatz, Peter Galvin and James Peterson, Operating Systems Concepts, 5th ed., John Wiley and Sons, 1998.
  6. Andrew S. Tanenbaum, Modern Operating Systems, Prentice-Hall, 1992.

Links

Editions