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,
Viewing services in termps of objects and operations, Instruction Set Architectures, APIs and ABIs. Threads and Processes.
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).
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.
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.
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.
General considerations, commodity vs general resource deadlocks, the four necessary conditions for deadlock. Leases and revocation. Live-locks, health monitoring, and practical recovery.
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.
Paging MMUs, demand paging, replacement algorithms. Paging and I/O (scatter/gather), cross-address space transfers.
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.
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.
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).
Classes of solutions. Issues and solutions in remote file system implementation. Case studies (NFS, Andrew, Microsoft Briefcase).
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).