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.