Course Outline

  1. Overview of Operating Systems (OS)
    1. applications vs. the OS
    2. role & purpose of the OS
    3. history of OS development
    4. types of OSs: mainframe, networked, single-user, real-time, embedded
    5. components & functions of contemporary OSs
    6. OS design goals: efficiency, robustness, flexibility, portability, security, compatibility
    7. OS design influences: security, the Internet, multimedia, GUIs
    8. OS architectures: monolithic, layered, microkernel, network
  2. Computer Hardware & Software
    1. computer hardware components: motherboard, processors, memory, peripherals
    2. memory hierarchy
    3. device I/O models: character, block
    4. device I/O methods: polled, interrupt, DMA
    5. hardware support for protection: processor operating modes, memory protection
    6. programming languages hierarchy
    7. programming paradigms: structured & object-oriented
    8. application programming interfaces (APIs) & middleware
    9. software development process: compiling, linking, loading
  3. Operating System Principles
    1. abstractions, processes and resources
    2. application needs and evolution of hardware/software techniques
    3. operating system modes: kernel vs. user
    4. device organization and abstraction
    5. user state / system state and protection
  4. Concurrency
    1. concept and need of concurrency
    2. task states and state diagrams
    3. data structures for task management: stacks, queues, etc.
    4. dispatching and context switching
    5. role of system interrupts
    6. the mutual exclusion problem and solutions
    7. producer-consumer problems and synchronization
    8. models and mechanisms: semaphores, monitors, condition variables, rendezvous
    9. deadlock: causes, conditions, prevention
  5. Scheduling and Dispatch
    1. preemptive vs. nonpreemptive scheduling
    2. schedulers and policies
    3. processes and threads
    4. deadlines and real-time issues
  6. Memory Management
    1. physical vs. virtual memory and memory management hardware
    2. overlays, swapping and partitions
    3. paging and segmentation
    4. placement and replacement policies: FIFO, LRU, LFU, NUR
    5. working sets and thrashing
    6. caching
  7. Device Management
    1. serial and parallel device characteristics
    2. device abstraction
    3. buffering strategies
    4. direct memory access
    5. failure recovery
  8. File Systems
    1. files: data, metadata, organization, operations, buffering
    2. file types: sequential, nonsequential
    3. directories: contents and structure
    4. file systems: partitioning, mounting/unmounting, virtual file systems
    5. standard implementation techniques
    6. memory-mapped files
    7. special-purpose file systems
    8. naming, searching, access, backups
    The following optional topics may be chosen by the instructor:
  9. Security & Protection
    1. overview of system security and ethics
    2. separation of policy and mechanism
    3. security methods and devices
    4. protection, access and authentication
    5. protection models
    6. memory protection
    7. encryption
    8. recovery management
  10. Real-Time and Embedded Systems
    1. process and task scheduling
    2. real-time environment requirements on memory and disk management
    3. failures, risks and recovery
    4. special concerns in real-time systems
  11. Fault Tolerance
    1. concepts: reliable and available systems
    2. spatial and temporal redundancy
    3. fault tolerance implementation methods
  12. Scripting
    1. scripting and the role of scripting languages
    2. basic system commands
    3. creating scripts, parameter passing
    4. script execution
    5. influences of scripting on programming
Revised 2012