Computer Science 159.335
Concurrent Programming & Operating Systems

Course Outline

Lecturer: Dr. Martin Johnson
Telephone: 414 0800 ext 9491
Office: QA 2.52 (Second Floor of Quad A)
To take this course you must have passed 59201

The operating system is a program which manages the resources of a computer. Application programs very rarely manipulate hardware directly, they use an abstract model and let the OS do the rest. Common abstractions are Files, Processes, and Memory.
Understanding how an operating system works involves an understanding of hardware structures (devices, networks, memory organisation) and software structures (scheduling, concurrency, security). The Operating System also allows multiple programs to run at the same time and communicate - Concurrent Programming.

Learning Outcomes
On successful completion of this course the student should be able to:

  1. Describe the structure of an operating system and know the major the parts of an OS

  2. Know the most important hardware structures upon which an OS is based

  3. Understand the difference between processes and threads and be able to write programs that create them

  4. Understand how an OS schedules tasks and describe various scheduling algorithms

  5. Understand the classical synchronization problems and know their solutions using semaphores and monitors

  6. Understand how deadlock can occur and know how it can be prevented or avoided

  7. Understand how virtual memory is used and describe the operation of a memory management unit for paging

  8. Understand various memory allocation algorithms

  9. Describe various mechanisms for file allocation and understand how a logging filesystem operates

  10. Understand how an OS schedules disk access

  11. Describe how access to resources is managed by an OS

Texts and Course Material
Silberschatz, A and Galvin, P (and Gagne, G), Operating System Concepts (Seventh Edition), (Addison Wesley 2005)
Tannenbaum, A.S., Modern Operating Systems, (Prentice Hall)
Lecture Notes and course information is available from or

The course will be assessed by a combination of practical and theoretical work.
There will be three programming assignments, together worth 30% and a three hour exam worth 70%.

Course Schedule
This is a rough plan, the course may not conform to this schedule.
1. Introduction
What is an operating system,Early Systems, Simple Batch Systems, Multiprogramming, Batched Systems, Time-Sharing Systems, Personal-Computer Systems, Parallel Systems, Distributed Systems, Real-Time Systems.

2. Hardware Structures
Computer-System Operation, I/O Structure, Storage Structure, Storage Hierarchy, Hardware Protection, General System Architecture.
3. Operating System Structures
System Components, Operating-System Services, System Calls, System Programs, System Structure, Virtual Machines, System Design and Implementation, System Generation.

4. Processes
Process Concepts, Process Scheduling, Operation on Processes, Cooperating Processes, Threads, Interprocess Communication.
5. CPU Scheduling
Basic Concepts, Scheduling Criteria, Scheduling Algorithms, Multiple-Processor Scheduling, Real-Time Scheduling, Algorithm Evaluation.
6. Synchronization
Background, The Critical-Section Problem, Synchronization Hardware, Semaphores, Classical Problems of Synchronization, Critical Regions, Monitors.
7. Deadlocks
System Model, Deadlock Characterization, Methods for Handling Deadlocks, Deadlock Prevention, Deadlock Avoidance, Deadlock Detection, Recovery from Deadlock, Combined Approach to Deadlock Handling.
8. Memory Management
Background, Logical versus Physical Address Space, Swapping, Contiguous Allocation, Paging, Segmentation, Segmentation with Paging.
9. File Systems
Concepts, Access Methods, Directory Structure, Protection, Consistency Semantics, File-System Structure, Allocation Methods, Free-Space Management, Directory Implementation, Efficiency and Performance, Recovery.
10 Secondary Storage Structure
Disk Structure, Disk Scheduling, Disk Management, Swap-Space Management, Disk Reliability, Stable-Storage Implementation.
11 Protection and Security
Goals of Protection, Domain of Protection, Access Matrix, The Security Problem, Authentication, Program Threats, System Threats, Threat Monitoring, Encryption.

M Johnson 2006