COMP 3000 Final exam review 2010

From Soma-notes
Revision as of 07:30, 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. On an x86-class processor that supports hardware virtualization, it is possible in principle to virtualize any OS that can run on the native hardware. In practice, only certain operating system types and versions will run well on a given VM platform (e.g., VirtualBox, VMWare Player). What is one reason for this discrepancy?
  2. The execve system call gets three arguments: a full pathname to an executable, arguments, and environment variables. What are each of these for when ”chmod a+r foo.txt” is run?
  3. Why doesn’t ldd report all the libraries that are listed in /proc/<PID>/maps?
  4. When a process becomes undead (a zombie), who can send it to its grave permanently? What must it do?
  5. A solution to the producer/consumer problem must take into account many conditions. What are three of them?
  6. What are three events that cause signals to be sent in UNIX?
  7. What system call do you use to receive data over an already existing pipe?
  8. How is an exokernel library OS like a guest OS running on a VM? How are they different?
  9. What is the primary way that mainstream operating systems keep kernel extensions, such as device drivers, from compromising the kernel?
  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 two uses for nested virtual machines?
  12. 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?
  13. What is a sloppy counter? Why is it more scalable than a regular counter?
  14. 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?
  15. Why is OS timekeeping affected by power saving mechanisms?
  16. Why does live migration of VMs pose fundamental problems for OS clocks?
  17. What is one source of false positives in TaintDroid? (In other words, what kind of code/data behavior leads to false alarms?)
  18. What part of Android did was modified for TaintDroid? Is this part of Android's kernel? Explain briefly.
  19. What is a hardware breakpoint? Why is it essential to the implementation of DataCollider?
  20. 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.
  21. Why are exceptions (software interrupts/traps) expensive on modern processors?
  22. What problem is FlexSC's M-on-N threading system designed to solve?