Queen's School of Computing

CISC-324/3.0 Operating Systems

Original Author: Dorothea Blostein
Last Revised: September 25, 2006

Calendar Description

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.0


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

  • CISC/SOFT-426/3.0 (Real-Time Systems)
  • CISC-434/3.0 (Distributed Systems)
  • CISC-435/3.0 (Computer Communication and Networks)
  • CISC/SOFT-437/3.0 (Performance Analysis)
  • CISC-441/3.0 (Advanced Computer Architecture)
  • ELEC-476/3.0 (System Simulation)
  • CISC-486/3.0 (Game Engine Development)

This course is required in the following programs: CSCI, SODE, and MAJ.


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.


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.


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.

  • Silberschatz, Galvin, Gagne: Operating System Concepts, 6th edition, Wiley, 2003.

  • Tanenbaum and Woodhull: Operating Systems Design and Implementation, 3rd edition, Pearson Prentice Hall, 2006