Below are non-exhaustive lists of key questions you should be able to answer on the referenced exam.
You should be able to apply the key functional concepts inherent in these questions.
It is thus important to study these with the aim of understanding the key concepts, as opposed to simply being able to regurgitate a memorized response.
If you have a good understanding of the core concepts inherent in the questions on this page, you should do fine.
What a stack is
What a heap is
What an Instruction Pointer is
What a Stack Pointer is
What STDIN, STDOUT, and STDERR are
What an operating system is
What the two core roles of an OS are
What the three areas of OS abstraction are
The two core dimensions along which CPU virtualization is done
The difference between a program and a process
How a process is an abstraction
What a process' address space is
What the machine or execution state of a process is, and what it includes
What some of the core functionalities of a CPU virtualization API are
What privilege separation is
What a procedure call is
What a system call is
What a privileged instruction is
What POSIX is
What a Process ID (PID) is
What the steps are to launch a process
What the three process states are
How the OS tracks active processes
What a Process Control Block (PCB) is and what is contains
What the UNIX fork() and exec() commands do
What the Linux commands ps, top, and kill do
The two key functional dimensions of implementing a virtualized CPU
The downside of surrendering control of the CPU to a process
What the difference is between user and kernel mode
What a trap instruction is and what its role is in executing a system call
What a trap table is
What a timer interrupt is and how it is used in CPU virtualization
What a context switch is
What a scheduling policy is
The various dimensions of a workload
Explain what the following scheduling metrics seek to measure: utilization, turn around time, response time, fairness, and overhead optimization
Explain how these metrics perform in various policy approaches, such as FIFO, SJF, Round Robin, and SCTF
What the convoy effect is
The difference between non-preemptive and preemptive scheduling
What a time slice is and how it relates to context switching cost
What overlap is and how it helps improve CPU virtualization efficiency
How the Multi-Level Feedback Queue works, and what its parameters are that we can adjust to tweak performance
What process starvation is
What the goal of a lottery based scheduling approach is
How a lottery based scheduling approach works
What a process stride is
How a process stride relates to its priority
How the pass value relates to process selection for execution
The goal of the Linux CFS
What vruntime is
What sched_latency is
What time_slice is
What niceness is and how it relates to process priority
How vrun_time and time_slice are affected by niceness
What we use a red-black tree for, in the context of process management
The three goals of memory virtualization
What process isolation is
What dynamic relocation is
How base and bounds relocation works and what role the base and bounds registers play
What the offset value is
What the free_list is
What the MMU is and what controls it
Where exceptions may occur in dynamic relocation
How exceptions are handled by the OS
What happens to the base and bound values on a context switch
Identify the downsides of dynamic relocation
What the logical segmentation approach to memory virtualization is, and how it is different form basic dynamic relocation
What the role of the segment bit is in tracking logical segmentation
How segment registers work in translating virtual to physical addresses
How protection bits help in the safe sharing of code segments between processes
What the benefits of generic segmentation are
What the malloc()function does
What the free() function does
How the free_list is managed by splitting and coalescing
What the purpose of a memory space header is
Options for storing the free_list
What a linked list is
Explain the best fit, worst fit, first fit, next fit, segregated fit and buddy allocation strategies, in general terms.
What the key problems are with segmentation based memory virtualization approaches
What the core idea behind paging is
What a page is
What a VPN is
What a frame is
What a PFN is
What the page table is, and how it is organized
What a PTE is
How paging address translation is done
How the offset value in a page table entry relates to a location in a physical frame
What caching is
What the TLB is and the role it plays in paging
What the key steps in accessing the TLB are, i.e. what happens on a hit or a miss
What spatial locality is
What temporal locality is
How LRU, MRU and RANDOM TLB policies work
The high level difference between CISC and RISC architectures and how each handles TLB misses
How we manage the TLB cache in a context switch
What an Address Space Identifier is
What a multi-level table is and how it works
What a Page Directory is
What a Page Table is
What the benefits of a multi-level table are
What swapping is
The benefits of swapping
The downsides of swapping
The role of the present bit in tracking swapped pages
What a page fault is
Why keeping an amount of free memory in a swapping implementation is important
How the swap daemon manages free memory with a low and high water mark
What a page replacement policy is, and why it is important
What the AMAT metric is
What the three types of misses are
What the theoretical optimal replacement policy is, and why we cannot implement it
How a FIFO and RANDOM replacement policy work and why they are unlikely to be a good solution in many cases
How spatial and temporal locality can improve a replacement policy
What page eviction is
How the clock algorithm works and why it seems to work well
What a dirty page is, and how dirtiness plays a role in creating a replacement policy
What thrashing is
All the stuff from the Midterm as well as the following:
What a thread is
What a Thread Control Block (TCB) is
What functionality a thread maintains within its own address space, and what it may share with other threads
What a race condition is, and what may cause it
What a critical section is, and how to identify one
What mutual exclusion is
What atomicity is
How to achieve atomicity
What a Lock is
What system calls implement a lock in UNIX-like OSs
What Lock overhead is and how to assess it
What spin-waiting is
How a Test-and-Spin Lock works
How to assess fairness in a lock implementation
What a Compare-and-Swap Lock is and how it works
What the Load-Linked And Stored-Conditional instructions are and how they are used to create a lock
What a Fetch-and-Add is
How a Ticket Lock works
What thread starvation is, and how to avoid it
What a Two-Phased or Queued Lock is
How to improve performance with a queue
What a Condition Variable is and what its key utility is
Provide examples of scenarios where Condition Variables are useful
Explain how a Condition Variable is implemented
What a wait() call does
What a signal() call does
Be able trace/debug the state of Condition Variable components in code where it is used
What Mesa Semantics are
Explain the Producer-Consumer problem and what the components are for solving it with Condition Variables.
How to deal with multiple Producers and/or Consumers
What a covering condition is
What a semaphore is
What the two key operations are, and how they relate to each other, and their effect on a semaphore
What a Binary Semaphore is and how to implement one
What a Counting Semaphore is and how to implement one
How to use a Semaphore for Parent-Child thread execution
How to solve the Producer-Consumer problem with semaphores
What a Reader-Writer Lock is and how to implement it with Semaphores
What writer starvation is, and how to reduce it
What Deadlock is, and how to (theoretically) avoid it
List, describe, and give examples of the three types of concurrency bugs
Identify four conditions where we might encounter Deadlock, and strategies to address these
How we might achieve Deadlock Avoidance
What I/O is
What an I/O interface is, and why it is a good idea to have one
How we might implement a basic I/O device for interaction with an OS
Identify the usual OS-I/O interaction steps
What an I/O interrupt is and why we need them
What coalescing is, in the context of I/O
What DMA is
What memory mapped I/O is
What a device driver is, and what its usual components are
What the various control elements of a device driver are
Explain the core structure of both the File and Directory abstractions
What an inode is
What a directory hierarchy is and how it relates to the Directory abstraction
What the file system interface is
What the open() call does
What a file descriptor is
What the open file table is
How the /proc/ directory works and what its function is
What a struct is
How non-sequential file access is handled
What an offset is
What the lseek() call does
What the dup() call does
Why write() can bring synchronization challenges and options for solving this issue
What the fsync() call does
What stat() and fstat() do
How not to delete your whole filesystem accidentally
What hard links and soft or sym links are, and why they are useful
What a link reference count is
How file permission and access control is implemented in UNIX-like OSs
What mounting a filesystem does
Identify the key components of a basic file system
What the data an inode bitmaps are and how they are used
What the superblock/boot sector is
What data is usually tracked with respect to a particular inode
What direct and indirect pointers are and how they work
What the effect of double or triple indirect pointers are
What an extent is
How the FAT file system organizes itself
How the core FS interface calls are implemented in the basic file system
Identify strategies to improve file system efficiency
What the differences between static and dynamic partitioning are
How to improve writing efficiency
How to deal with the basic file system's inefficiencies
What a block group is
How the FFS works, at a high level
Identify atomicity challenges with the basic file system
What the fsck call does
What journaling is and why we want to do it
What the difference between physical and logical logging is
How journaling works when writing to a disk
How Copy on Write works when writing to a disk
How a NAND Flash works, at a high level
How an SSD drive's architecture is put together
Describe why an SSD write() is weird
Describe the three key data operations available on an SSD
Describe the three page states
Describe what wearout and disturbance are and how to mitigate these effects
What the CIA security goals are
What economy of mechanism is
What fail-safe defaults are
What complete mediation is
What the role of the Reference Monitor is
What the key properties of the Reference Monitor are
What separation of privilege is
What least privilege is
What the key players in the authentication process are
What an identity is
Identify the three ways of authenticating human users
What password hashing is
How Unix-like systems store usernames and passwords
What a PAM is
What Access Control is
Identify and describe the three elements of access control
What an Access Control List is and how it works
How the ACL is stored in Unix-like systems
What Capability-based Access Management is
The challenges of both the ACL and Capability approaches to access control
Explain the various types of access control (MAC, DAC, RBAC, ABAC) and be able to give examples
What privilege escalation is and what its risks are