Operating Systems Learning Goals
CPU Virtualisation (3–4, 6–7, 11)
- You know what processes are and how they relate to programs.
- You know what processes comprise, what states they can be in and how they are organised in process lists.
- You know what limited direct execution is and why it is used in CPU sharing.
- You know how the OS interrupts processes and carries out context switches.
- You know what scheduling policies there are and how they compare.
MLFQ (8)
- You know the rules of MLFQ and how apply them.
- You know the role and handling of priorities in MLFQ.
- You can compare MLFQ to other scheduling approaches, like SJF or CFS.
Proportional Sharing (9)
- You understand the use of randomness in scheduling and how it can be implemented with tickets.
- You know goal of CFS and how it is designed.
- You can compare CFS to other scheduling approaches, like SJF or MLFQ.
Multiprocessor Scheduling (10)
- You know the which problems and how they arise in multiprocessor scheduling.
- You know SQMS and why it does not scale.
- You know MQMS and how load can be better balanced with CPU migration.
Memory Virtualisation (3–4, 12–13, 24)
- You know what processes are and how they relate to programs.
- You know what processes comprise, what states they can be in and how they are organised in process lists.
- You know how the OS virtualises memory and the goals of virtual memory.
Memory Management (15–17)
- You know what address spaces and address translation are, and what hardware support the OS uses to realise them.
- You what segmentation is, why it is needed and how segmentation faults arise.
- You know the basic approaches to manage free space, and how the slab and binary buddy allocator work.
Paging (18–19)
- You know what address spaces and address translation are.
- You know what paging is, what problem it solves, and how it can be implemented in the OS with the page tables.
- You know what translation-lookaside buffer (TLB) is used for, how it is used and what it comprises of.
Virtual Memory Systems (18, 23)
- You know what address spaces and address translation are.
- You know what paging is, what problem it solves, and how it can be implemented in the OS with the page tables.
- You know the VAX/VMS and Linux VM systems, e.g., address space, page table structure.
Concurrency (25–26, consult 27 if needed, 34)
- You know what threads and multi-threaded applications are.
- You know how the OS creates and controls threads.
Lock-based Data Structures (28, 29.1–29.2)
- You know what locks are and how they are used to ensure mutual exclusion in the implementation of a concurrent counter.
- You know how spin-locks and yield-locks (with queues) can be built, with hardware and OS support, and how the compare.
- You know the concurrent data structures counter and linked list.
Semaphores (31)
- You know what semaphores are, how they compare to locks and how they can be used to ensure synchronisation in the producer/consumer problem.
- You know how to implement semaphores.
Concurrency Bugs (32 + [SGG18, Chap. 8])
- You know non-deadlock and deadlock types of concurrency bugs.
- You know when these types of bugs occur and how to avoid or prevent them.
Persistence (35–36, 46)
- You know how an OS interacts with an I/O (input/output) device via polling, interrupts and DMA.
Hard Disk Drives & RAIDS (37–38)
- You know the interface of a hard-disk drive, and how the geometry affects access, read and writes time.
- You know how to store and access data on a hard-disk drive, and how the access can be scheduled.
- You know the interface of a RAID and how RAID designs are evaluated.
- You know RAID-0 and RAID-1 and how they compare.
Basic File Systems (39.1, 40–41)
- You know the data structures (inodes, indexes) to implement and the access methods of vsfs (Very Simple File System).
- You know how disk reads and writes and caching are realised in vsfs.
- You know what FFS (Fast File System) is and how it compares to vsfs.
Crash Consistency (40, 42)
- You know the data structures (inodes, indexes) to implement and the access methods of vsfs (Very Simple File System).
- You know how a file system updates persistent data structures despite power loss or system crashes.
- You know how fsck (File Systems Checkers) and journaling methods are used by file systems to realise crash consistency.
Data Integrity (45)
- You know how latent-sector errors and block corruption can be detected and recovered from.
- You know other failure modes: misdirected and lost writes.
Advanced Persistence (35–36, 46)
- You know how an OS interacts with an I/O (input/output) device via polling, interrupts and DMA.
LFS (40, 43)
- You know the data structures (inodes, indexes) to implement and the access methods of vsfs (Very Simple File System).
- You know what LFS is, what problem it solves and how a LFS updates the disk.
- You know what shadow paging and copy-on write techniques are.
SSD (40, 44)
- You know the data structures (inodes, indexes) to implement and the access methods of vsfs (very Simple File System).
- You know what a Solid-State Storage (or SSD) is, how SSDs are used in persistent storage and how a good flash translation layer can be designed.
- You know the how the mapping table size and the wear on an SSD can be reduced.
NFS (47–49, 51)
- You know the basic idea of distributed file systems.
- You know how the NFS protocol works and how it can be used to implement a reliable and performant distributed file system.
Security (52–53)
- You know what security goals and policies there are for operating systems, and how secure systems can be designed.
Authentication (54 + [SGG18, Chap. 16.5])
- You know how an OS assigns identities to processes in order to realise its security policies.
- You know three authentication approaches for identification, and their strengths and weaknesses.
Protection & Access Control ([SGG18, Chap. 17], opt. 55)
- You know the protection ring and the domain of protection structures.
- You know what an access matrix is and how it can be implemented.
- You know what RBAC is and how it is used to enforce security policies.
- You know at least four protection improvement methods.
Cryptography (56 + source of choice)
It can be helpful to consult 8.2 and 8.3 of “Computer Networking: A Top Down Approach”
- You know what task encryption has, what symmetric and public key cryptography are, and how RSA realises public key cryptography.
- You know what a cryptographic hash function is and how it can be used to ensure data integrity.
- You know how cryptographic schemes may be attacked (or even cracked) and how they are implemented through at-rest crypto in operating systems.