To provide a thorough understanding of modern operating system design and implementation.
By the end of the course students will be able to describe the basic principles used in the design of modern operating systems. In particular, they will:
- be able to distinguish different styles of operating system design.
- understand device and I/O management functions in operating systems
as part of a uniform device abstraction.
- have an understanding of disk organisation and file system
- be able to give the rationale for virtual memory abstractions in
- understand the main principles and techniques used to implement
processes and threads as well as the different algorithms for
- understand the main mechanisms used for inter-process communication.
- understand the main problems related to concurrency and the
different synchronization mechanisms available.
- have the ability to evaluate security risks in operating systems and
understand the role operating systems can and should play in
OS structure: kernel organisation, OS functionality
Device management: I/O layers, device independence, device drivers, I/O APIs
Disk management: disk storage devices, hardware layout, disk performance, disk scheduling, RAID, caching
File systems: files, file system organisation, directories
Memory management: logical/physical address spaces, virtual memory, paging, demand paging, page replacement
OS virtualisation: virtual machines, type 1/2 hypervisors, paravirtualisation, memory and I/O virtualisation
Processes: basic concepts and motivation, process creation and execution, implementation issues, process scheduling
Threads: basic concepts and motivation, user-level threads vs. kernel threads
Inter-process communication: signals. pipes, sockets, shared memory
Process synchronization: critical sections and mutual exclusion, race conditions, locks and semaphores, deadlocks
Security: basic concepts, security attacks, access control, automatic techniques for detecting security vulnerabilities
Teaching is based on lectures and tutorials. There is also a strong lab component.