Advanced Operating Systems M (2016-2017)
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, and alternative techniques for memory management, and know when it might be appropriate to apply such techniques and managed run-times to real-time systems and/or operating 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 and/or analyse simple programming to demonstrate understanding of novel techniques for memory management and/or concurrent programming, to understand the trade-offs and implementation decisions.
Required pre-requisite courses are Computer Systems 2, Operating Systems (H), Advanced Programming (H), and Functional Programming (H).
The course runs during semester 2, and consists of lectures and associated tutorials. There are no scheduled laboratory sessions.
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 (2017)
- 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
- Lecture 2: Systems Programming
- Lecture 3: Hardware Trends
- Lecture 4: Hardware Trends: Implications for Systems Programming
- Lecture 5: Memory Management
- Lecture 6: Region-based Memory Management
- Lecture 7: Garbage Collection (1)
- Lecture 8: Garbage Collection (2)
- Lecture 9: Implications of Concurrency for Systems Programming
- Lecture 10: Managing Concurrency using Transactions
- Lecture 11: Message Passing (1)
- Lecture 12: Message Passing (2)
- Lecture 13: Network Programming
- Lecture 14: High Performance Networking
- Lecture 15: Real-time Systems: Scheduling Periodic Tasks
- Lecture 16: Real-time Systems: Scheduling Aperiodic and Sporadic Tasks
- Lecture 17: Virtualisation: Hypervisors
- Lecture 18: Virtualisation: Jails and Containers
- Lecture 19: Wrap-up
- Tutorial 1: Systems Programming and Alternative Operating Systems
- Tutorial 2: Hardware Trends and their Implications
- Tutorial 3: Region-based Memory Management
- Tutorial 4: Garbage Collection
- Tutorial 5: Implications of Concurrency for Systems Programming
- Tutorial 6: Message Passing
- Tutorial 7: Networking
- Tutorial 8:
- Tutorial 9: Virtualisation