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).