Advanced Operating Systems M (2012-2013)
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.
Prerequisites
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.
Timetable
The course runs during semester 2, and consists of lectures and
associated tutorials. There are no scheduled laboratory sessions.
Recommended Reading
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.
Credits
This is a level M course, worth 10 credits.
Assessment
The course will be assessed by a combination of coursework (20%) and a
final examination (80%).
Lecture Slides
Tutorials
Coursework
Past exam papers