CISC-324/3.0 Operating SystemsOriginal Author: Dorothea Blostein
Last Revised: September 25, 2006
Layered operating systems for conventional shared memory computers. Concurrent processes. Synchronization and communication. Concurrent algorithms. Scheduling. Deadlock. Memory management. Protection. File systems. Device management. Typical layers.
Prerequisites: CISC 221/3.0, CISC 235/3.0. Recommended Prerequisite: CISC 220/3.0Objectives
The two main topics of this course are concurrent programming and operating systems.
Concurrent programs consist of processes that execute in parallel, communicating by sending messages or by referencing shared data structures. References to shared data structures must be synchronized, to ensure consistency and integrity of the data structures. This course uses a programming language such as Java (threads, sleep, synchronized, notify, wait) to allow students to explore issues that arise in concurrent programming: interprocess communication, mutual exclusion, deadlock, and starvation. The course illustrates the use of concurrent programming in operating systems and in simulations.
An operating system provides a convenient and efficient interface for the computer user. Operating systems must permit several users to share the same hardware, and to cooperate in mutually-agreed upon ways, while ensuring that one user cannot accidentally or maliciously interfere with other users. An operating system consists of software written in a mixture of high-level language, assembly-language, and perhaps microcode. Several methods of organizing an operating system are presented, including (1) using layers of abstraction, with the hardware as the lowest layer and the user interface as the uppermost layer, and (2) using a small kernel, which implements the concept of process, augmented by a collection of processes to handle aspects such as memory management, file management, and CPU scheduling.
The courses to which this course is a prerequisite are
This course is required in the following programs: CSCI, SODE, and MAJ.Topics
Introduction and Review
Instruction execution cycle, interrupts, DMA (Direct Memory Access). Concurrent processes and threads. Process Control Blocks. Context switching. Operating system kernel; operating-system processes and user processes. Process synchronization.The Mutual Exclusion Problem
Software and hardware solutions. Language constructs for process creation, synchronization and communication. Use of semaphores. Classic synchronization problems, such as bounded buffer, readers/writers, and dining philosophers. Monitors. Message Passing.Deadlock
Prevention, avoidance, detection, recovery.Memory Management
Address spaces. Review of linking and loading. Memory partitions, paging, segmentation. Virtual memory, swapping, demand paging. Page replacement algorithms, and frame allocation. Memory protection.CPU scheduling
Short and long-term scheduling. Scheduling algorithms.Protection
Examples of security problems such as buffer overflow attacks. Access lists and Capabilities. Creation and revocation of access rights.Study of Selected Operating Systems
e.g., Linux or Windows 2000, to illustrate layered and kernel organizations.Possible Texts
The selection of operating system textbooks is large. Here are two possibilities.