UCLA CS111, Syllabus

Instructor: Mark Kampe
Last updated: September 20, 2004

  1. Introduction to Course

    lectures, assignments, work, grading, academic honesty, learning objectives, reasons to study OS.

    Key principles (mechanism/policy separation, modularity and functional encapsulation, interfaces vs implementations, appropriate abstraction), types of resources, roles and functions of operating systems,

  2. Introduction to Operating Systems

    Viewing services in termps of objects and operations, Instruction Set Architectures, APIs and ABIs. Threads and Processes.

  3. Computer Architecture

    Supervisor vs user-mode execution, traps and interrupts. Busses, controllers and devices. I/O mechanisms (polled, direct, memory-mapped, interrupt driven). Disks (geometry and performance).

  4. Processes

    Object modules, load modules, linkage editing. Process address spaces, registers, and context. Stacks, procedure calls, and system calls. Asynchronous exceptions and signals.

    Process descriptors, process and thread context switching. User vs Supervisor mode execution, trap gates. Message based service requests. Virtual Machines and OS emulations. Blocking, unblocking, dispatching, yielding, and swapping.

  5. Scheduling

    Goals and responsibilities of schedules. Performance definition and measurement. Non-preeptive algorithms and starvation. Preemptive scheduling algorithms, optimal time slices, priority-based scheduling, multi-queue scheduling. Throughput/response behavior of real systems.

  6. Critical Sections and Synchronization

    Critical sections and race conditions. Limitations of disables and spin-locks. Locking operations and atomic instructions. Advisory vs enforced locking. Resource contention and convoys.

    Semaphores (principles, use, and implementation). Monitors and condition variables. The "Dining Philosphers" problem. Inter-Process communication meachanisms and features.

  7. Deadlocks

    General considerations, commodity vs general resource deadlocks, the four necessary conditions for deadlock. Leases and revocation. Live-locks, health monitoring, and practical recovery.

  8. Memory Allocation

    Responsibilitie of memory manager, implementing process address spaces. Fixed-partition allocation algorithms and internal fragmentation. Variable-partition allocation algorithms and external fragmentation. Garbage collection. The "relocation problem" and virtual addressing.

  9. Virtual Memory

    Paging MMUs, demand paging, replacement algorithms. Paging and I/O (scatter/gather), cross-address space transfers.

  10. Device Drivers

    Roles and functions of device drivers, classes of devices, standard entry-points. Driver interfaces and system services for drivers. I/O techniques (interrupt driven DMA) and synchronization.

  11. File Systems

    Random access files, contiguous, linked, and indexed allocations. Allocation and free lists. Case studies: DOS, UNIX, MVS. Indexed sequential files (VSAM). Volumes and volume structure.

    File names and name spaces, catalogs, directory hierarchies. Links vs copies, hard vs symbolic links. Case studies (DOS, UNIX, MVS). File system performance. Disk partitioning, volume mounting.

  12. Security and Encryption

    Authentication and Authorization mechanisms. Considerations in correct authorization control. The problems of privileged users and software. The problems of network security. Cryptographic hashes. Symmetric and asymmetric encryption. Public key encryption, signatures, and certificates. Case studies (SSL, Kerberos).

  13. Distributed File Systems

    Classes of solutions. Issues and solutions in remote file system implementation. Case studies (NFS, Andrew, Microsoft Briefcase).

  14. Distributed Computing

    Classes of distributed systems (SMP, SSI clusters, horizontally scaled systems). Deutsch's "seven falacies of network computing". Distributed computing paradigms and network aware applications (RPC, ORBs).