Final Review Sheet
This final review sheet covers the class components each
annotated with high-level questions you should be able to answer.
Not every lecture is linked in this document, if you want to view
them all you can always refer back to the website for more
Good luck studying!
Below is a listing of all major class topics, some of them have questions
attached, they are designed to highlight the “main ideas” from lecture.
- How does booting work?
- What are the different ways to boot a machine?
- What does the BIOS do?
- What is a bootloader?
- What is the boot process in JOS?
- What are the different ways to organize the kernel?
- How do we do process isolation?
- What is paging?
- Why do we use paging over other memory protection schemes?
- What is different between single level paging,
and multilevel paging?
### Interrupts and Exceptions
### System Calls
### Processes and Threads
### File Systems
Each lab has a set of high level conceptual questions, the exam will draw
heavily from the labs and it is important to understand what you did
in each lab, it is easy to forget after a couple of weeks and is
definitely worth reviewing.
- How are stack frames layed out?
- How can we use that knowledge to write a backtrace command?
- Physical Pages vs. Virtual Pages
- What are the differences between virtual, linear, and physical addresses?
- When is adresss translation performed, and by what?
- Why do we use virtual memory? which problems does it solve?
- How are permissions used?
- What is an environment?
- How does JOS’s environment model compare to
traditional thread/process distctions?
- What state must each environment maintain?
- How do we handle an interrupt, and what are the
- What is the Task State Segment used for?
- Why do we want System Calls? what do they accomplish?
why can’t we just directly invoke that code?
- How do we perform a system call? why do we need two pieces
of code for every system call?
- What setup do user space environments require? what pieces are shared, which are unique?
- What is the difference between multiprocess
- What changes are needed to support SMP?
- Why do we need locking? can we make our
version of JOS more concurrent?
- What is the difference between preemptive and cooperative scheduling?
- What is do we need to implement preemptive scheduling?
- How does IPC work in JOS, what is the control flow
when a message is sent, and received?
- Why implement COW fork?
- What syscalls are needed to implemen COW fork in userspace?
- What happens if we don’t properly copy a page when implementing COW?
- Why do we need a page fault handler to implement COW fork?
- How do file systems typically divide the availble disk space?
- What is the difference between a sector and a block?
- What is a super block?
- What is the difference between a directory and file?
- Why is our block cache approach not feasible on modern 32-bit systems?
- Why do we need indirect blocks? why not use only direct blocks?
- Why do we use spawn, instead of fork and exec?
Here is a listing of the larger exercsies we did in class, questions from
these are fair game and it is good to be familar with the ideas in each