COMP 3000 Final exam review 2010

From Soma-notes
Revision as of 07:43, 2 December 2010 by Soma (talk | contribs)
Jump to navigation Jump to search

Here are some sample questions for the final exam. Consider each question to refer to a specific topic. While some of these questions may appear on the final exam as they are here, expect many others to be changed. Memorized answers won't get you a passing grade...

  1. What are the key performance bottlenecks in virtualization? In other words, when you virtualize an OS, what sort of operations do you expect to be slower, and why? (And what should remain just as fast?)
  2. What are the arguments to execve? Fork? And what do they return?
  3. What does ldd do? What does /proc/<PID>/maps tell you about a process? How are these related?
  4. How could you change UNIX to get rid of unkillable processes (zombies)? What rammifications would such a change have?
  5. What is the basic form of a producer/consumer problem? Where does it show up in "real systems"? Why is it hard to get producer/consumer solutions right?
  6. What are UNIX signals? What are they used for?
  7. What is the connection between pipes and files in UNIX? How does this compare to sockets and pipes?
  8. Compare and contrast hypervisors, monolithic OS kernels, microkernels, extensible kerrnels (such as SPIN), and exokernels. How are they similar from an architecture and functionality viewpoint? How are they different?
  9. How do mainstream operating systems keep kernel extensions, such as device drivers, from compromising the kernel? How are these protections circumvented?
  10. Scaling an operating system kernel to run on many cores normally requires changes to the core algorithms and data structures to increase efficiency (typically through lower complexity algorithms) and decrease contention. What is an area of the kernel that requires greater efficiency? What about decreased contention? Explain briefly for both.
  11. What are some basic strategies for testing for race conditions? How effective are these strategies and finding them (i.e., what will it catch and what will it miss)? Why? And are there any alternatives to protecting against such race conditions?
  12. What are the basic trade-offs between userspace and kernel space thread scheduling? What about hybrid implementations?
  13. What are two uses for nested virtual machines?
  14. Multi-dimensional page tables are designed to avoid using shadow page tables in nested virtualization. What are shadow page tables, and when must they be used?
  15. What is a sloppy counter? Why is it more scalable than a regular counter?
  16. In Boyd-Wickizer et al (Linux Scalability to Many Cores), they analyze the scalability of seven applications. For one of these applications, briefly explain 1) what does the program do, 2) what was one key bottleneck they found in the kernel for this application, and 3) how did they address this bottleneck?
  17. Why is OS timekeeping affected by power saving mechanisms?
  18. Why does live migration of VMs pose fundamental problems for OS clocks?
  19. What is one source of false positives in TaintDroid? (In other words, what kind of code/data behavior leads to false alarms?)
  20. What part of Android did was modified for TaintDroid? Is this part of Android's kernel? Explain briefly.
  21. What is a hardware breakpoint? Why is it essential to the implementation of DataCollider?
  22. Why does DataCollider have an extremely high rate of false positives? As part of your explanation, give an example of a benign action that DataCollider would flag that is actually benign.
  23. Why are exceptions (software interrupts/traps) expensive on modern processors?
  24. What problem is FlexSC's M-on-N threading system designed to solve?