Operating Systems Concepts

(MSc Conversion / JMC2)

Course Objectives

To answer and develop the ability to answer the following questions: What is the purpose of an operating system? How are operating systems constructed? Introduction: resource manager view, virtual machine view, types of operating system. Evolution of operating systems: user driven, operator driven, simple batch system, off-line batch system, directly-coupled off-line system, multiprogrammed spooling system, on-line timesharing system, multi-processor systems, multi-computer/distributed systems. Program construction utilities: assembler, archiver, link editor, relocating loader.
Concurrent processes: interleaving, non-determinism, process interaction - sharing, synchronisation, communication, locks, semaphores, monitors.
The system nucleus (kernel): context switching, first level interrupt handling, kernel implementation of processes,Kernel implementation of semaphores.
Scheduling: priority - pre-emption, run to completion, time sliced, multi-level queues.
Input/output: polled input/output, interrupt driven input/output, device driver structure.
Memory management: single contiguous store allocation and overlays, fixed partition store allocation, dynamic partition store allocation and fragmentation/compaction, virtual addressing, memory management policies


Text Book

Modern Operating Systems, Andrew S Tanenbaum, Prentice Hall, Second Edition (2001).

Course Notes and Other Material

Note: Only the material above the red line has been updated for the current year!
Week 3
Lecture Notes: Chapter 1 (4-up, for printing), Chapter 1 (1 slide per page).
Tutorial 1: Tutorial 1.
Heartbeat program used in the tutorial: heart.cc.
Week 4
Lecture Notes: Chapter 2 (4-up, for printing), Chapter 2 (1 slide per page).
Tutorial: Tutorial 2.
Fibonacci program used in the tutorial: fibonacci.c.
Week 5
Lecture Notes: Chapter 3 (4-up, for printing), Chapter 3 (1 slide per page).
Tutorial: Tutorial 3.
Process creation program program used in the tutorial: process_create.c.
Week 6
Lecture Notes: Chapter 4 (4-up, for printing), Chapter 4 (1 slide per page).
Tutorial: Tutorial 4.
Program files used for the tutorial: bridge.c, specs.h, colourdraw.c.
Week 7
Lecture Notes: Chapter 5 (4-up, for printing), Chapter 5 (1 slide per page).
Tutorial: Tutorial 5: Linking and Loading
Program files used for the tutorial: assembler.s, cversion.c, writeexit.s, example.c.
Week 8
Lecture Notes: Chapter 6 (1 slide per page), Chapter 6 (4-up, for printing).
Example programs used in the lectures: Programs to print contents of a file: C version, C++ version.
Tutorial 6: Introduction to Simple Kernel, Notes on Solution for Tutorial 6.
Week 9
Tutorial 7: Modifying Simple Kernel. The solution to Tutorial 7 will be distributed as the "starting point" for the assessed coursework next week.
Example programs used in the lectures: Program to illustrate stack - C version, Assembler generated by the Intel C compiler. Program to illustrate buffer overrun attack: Check PIN.
Assessed Coursework: Managing Resources without Deadlock.
Lecture Notes: Help for Assessed Coursework (1 slide per page), Help for Assessed Coursework (4-up, for printing).
Week 10
Lecture Notes: Chapter 7 (4-up, for printing), Chapter 7 (1 slide per page).
Tutorial 9: Interrupt Handling and Context Switching, Notes on Solution for Tutorial 8.
Week 11
Lecture Notes: Chapter 8 (4-up, for printing), Chapter 8 (1 slide per page).
Tutorial 10: Memory Management, Notes on Solution for Tutorial 10.
Lecture Notes: Chapter 9 (Some Security Issues).
Course Summary and Revision Lecture
Lecture Notes: Revision Lecture.
Course Summary. This is a guide to what I consider to be the examinable contents of this course.

Olav Beckmann