OS. Operating Systems (22 core hours)

OS1. Operating system principles (core -- 2 hours)

  Structuring methods and the layered model
  Applications needs and the evolution of hardware/software techniques
  Device organization
  Interrupts: methods and implementations
  Concept of user/system state and protection

OS2. Concurrency (core -- 6 hours)

  States and state diagrams
  Structures (ready list, process control blocks, and so forth)
  Dispatching and context switching
  The role of interrupts
  Concurrent execution
  The "mutual exclusion" problem
  Deadlock: causes, conditions, prevention
  Models and mechanisms (semaphores, monitors, rendezvous)
  Producer-consumer problems

OS3. Scheduling and dispatch (core -- 3 hours)

  Preemptive and nonpreemptive scheduling
  Schedulers and policies
  Processes and threads
  Deadlines and real-time issues

OS4. Virtual memory (core -- 3 hours)

  Review of physical memory and memory management hardware
  Overlays, swapping, and partitions
  Paging and segmentation
  Memory mapped files
  Placement and replacement policies
  Working sets and thrashing

OS5. Device management (core -- 2 hours)

  Characteristics of a serial or parallel device
  Buffering strategies
  Free lists and device layout
  Servers and interrupts
  Recovery from failures

OS6. Security and protection (core -- 3 hours)

  Overview of system security
  Security methods and devices
  Protection, access, and authentication
  Models of protection
  Memory protection
  Encryption
  Recovery management

OS7. File systems and naming (core -- 3 hours)

  File layout
  Directories: contents and structure
  Naming, searching, access, backups
  Fundamental file concepts (organization, blocking, buffering)
  Sequential files
  Nonsequential files

OS8. Real-time systems

  Process and task scheduling
  Memory and disk management
  Failures, risks, and recovery
  Special concerns in real-time systems