Operating Systems Learning Goals
Virtualisation (3-4, 11, 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.
Sharing CPU (6–7)
- 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.
Advanced Scheduling (7 + 8 or 9)
- You know what scheduling policies there are and how they compare.
- you know at least one scheduling approache like MLFQ (Multi-level Feed-Back Queue) or CFS.
Sharing Memory (13, 15, 16)
- 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.
Paging (13, 15, 18)
- 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.
Concurrency (25–26, consult 27 if needed)
- You know what threads and multi-threaded applications are.
- You know how the OS creates and controls threads.
Locks (28, 29.1)
- 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.
Condition Variables (30)
- You know how condition variables can be used to ensure synchronisation in the producer/consumer problem.
- You know how condition variables are implemented.
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.
Concurency Bugs (32)
- 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.
Event-based Concurrency (33) & Proactor
- You know how to build concurrent servers without using threads.
- You know a different style of concurrency based on events, like the Proactor pattern.
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 and 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 craches.
- You know how fsck (File Systems Checkers) and journaling methods are used by file systems to realise crash consistency.
LFS (40 and 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 and 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.
Data Integrity (40 and 45)
- You know the data structures (inodes, indexes) to implement and the access methods of vsfs (very Simple File System).
- You know how latent-sector errors and block corruption can be detected and recovered from.
- You know other failure modes: misdirected and lost writes.
Distributed Systems (47–48, 51)
- You know how distributed systems communicate, reliably and unreliably.
- You know the remote procedure calls (RPC) abstraction for programming.
NFS (49)
- 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)
- 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.
Access Control (55)
- You know how the OS decides whether a particular user can access a system resource based on its security policies (capabilities and ACL).
- You know what RBAC is and how it is used to enforce security policies.
Cryptography (56)
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.
Distributed System Security (57)
It can be helpful to consult 8.2 and 8.3 of “Computer Networking: A Top Down Approach” and chapter 54.
- You know what task encryption has, and what symmetric and public key cryptography are.
- You know how authentication in distributed systems can be realised using cryptography.
- You know how SSL/TLS work and can be used in secure authentication (with passwords).