Objectives

Deepened understanding of the basic concepts of operating systems and of the most important computer architectural issues that govern the design and implementation of an operating system.

Content

This course studies the principles and concepts that govern the design of modern computer operating systems. In general terms, the course covers the two primary functions of an operating system: insulating users and applications from details of the computer hardware, and managing the allocation of resources to improve efficiency. The course involves lectures covering several topics, weekly exercises and a project.

Topics

  • Process and threads models.
  • Interprocess communication (IPC): semaphores, monitors, message passing, barriers.
  • Classical IPC Problems: Philosophers, Producers-Consumers, Readers-Writers, Sleeping Barber.
  • Process deadlock detection and recovery, avoidance and prevention.
  • Basic memory management, swapping, paging and segmentation.
  • Principles of Input/Output (hardware and software), and case studies: disks, clocks, terminals.
  • File system specification and implementation.
  • Introduction to distributed operating systems.
  • Case studies: Unix, Linux, Mac OS X and Windows.