Advanced Operating Systems M (2015-2016)
The computing landscape has changed radically in the last decade. The desktop personal computer has become largely irrelevant, and heterogeneous, multicore, mobile, and real-time systems — smart mobile phones, net books, and laptops — are now ubiquitous. Yet, despite this shift, these systems are still programmed in C, and the majority run some variant of the Unix operating system. This course will review research literature on systems programming techniques and operating systems design, discuss the limitations of deployed systems, and show how the operating system infrastructure might evolve to address the challenges of supporting modern computing systems.
Aims and Objectives
This course aims to explore the programming language and operating systems facilities essential to the implementation of real-time, reactive, and embedded systems. To discuss the limitations of industry-standard operating systems, and introduce new approaches to operating systems design that address the challenges of security, robustness, and concurrency. To give participants an understanding of the practical engineering issues caused by the design of real-time and concurrent systems; to suggest appropriate implementation techniques for such systems.
At the end of this course, students should be able to:
- clearly differentiate the different issues that arise in designing real-time systems;
- analyse a variety of real-time scheduling techniques, and prove the correctness of the resulting schedule; implement basic scheduling algorithms;
- apply real-time scheduling theory to the design and implementation of a real-world system using the POSIX real-time extensions; demonstrate how to manage resource access in such a system;
- describe how embedded systems are constructed, and discuss the limitations and advantages of C as a systems programming language; understand how managed code and advanced type systems might be used in the design and implementation of future operating systems;
- discuss the advantages and disadvantages of integrating garbage collection with the operating system/runtime; understand the operation of popular garbage collection algorithms; know when it might be appropriate to apply garbage collection and managed runtimes to real-time systems;
- understand the impact of heterogeneous multicore systems on operating systems; compare and evaluate different programming models for concurrent systems, their implementation, and their impact on operating systems;
- construct simple concurrent programs using transactional memory and message passing, to understand trade-offs and implementation decisions.
Required pre-requisite courses are Computer Systems 2, Operating Systems 3, Advanced Programming 3, and Functional Programming 4.
Computer Architecture 4 is a recommended co-requisite.
The course runs during semester 2, and consists of lectures and associated tutorials. There are no scheduled laboratory sessions.
Jane W. S. Liu, "Real-Time Systems", Prentice Hall, 2000, ISBN 0130996513 is recommended background reading for the real-time systems parts of the course. Research papers will be set as required reading for some tutorials, and as background reading for some lectures.
This is a level M course, worth 10 credits.
The course will be assessed by a combination of coursework (20%) and a final examination (80%).
Past exam papers:
- Exam paper (2016)
- Exam paper (2015)
- Exam paper (2014)
- Exam paper (2013)
- Exam paper (2012)
- Exam paper (2011)
- Sample exam
- Sample exam (with answers)
- Lecture 1: Introduction and Principles of Real-time Systems
- Lecture 2: Real-time Scheduling of Periodic Tasks (1)
- Lecture 3: Real-time Scheduling of Periodic Tasks (2)
- Lecture 4: Real-time Scheduling of Aperiodic and Sporadic Tasks (1)
- Lecture 5: Real-time Scheduling of Aperiodic and Sporadic Tasks (2)
- Lecture 6: Resource Management
- Lecture 7: Real-time and Embedded Systems Programming
- Lecture 8: Garbage Collection (1)
- Lecture 9: Garbage Collection (2)
- Lecture 10: Region-based Memory Management
- Lecture 11: Implications of Multicore Systems
- Lecture 12: Message Passing (1)
- Lecture 13: Message Passing (2)
- Lecture 14: Managing Concurrency Using Transactions
- Lecture 15: General Purpose GPU Programming (1)
- Lecture 16: General Purpose GPU Programming (2)
- Lecture 17: Virtualisation
- Lecture 18:
- Tutorial 1: Real-time Scheduling of Periodic Tasks
- Tutorial 2: Real-time Scheduling of Aperiodic and Sporadic Tasks
- Tutorial 3: Resource Management/Systems Programming
- Tutorial 4: Garbage Collection
- Tutorial 5: Region-based Memory Management
- Tutorial 6: Implications of Multicore Systems
- Tutorial 7: Message Passing
- Tutorial 8: Transactions
- Tutorial 9: General Purpose GPU Programming
- Tutorial 10: Virtualisation and Wrap-up