COMP 3000 Final exam review 2010: Difference between revisions

From Soma-notes
No edit summary
No edit summary
Line 1: Line 1:
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...
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...


# 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?
# 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?)
# 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?
# What are the arguments to execve?  Fork?  And what do they return?
# Why doesn’t ldd report all the libraries that are listed in /proc/<PID>/maps?
# What does ldd do?  What does /proc/<PID>/maps tell you about a process?  How are these related?
# When a process becomes undead (a zombie), who can send it to its grave permanently? What must it do?
# How could you change UNIX to get rid of unkillable processes (zombies)? What rammifications would such a change have?
# A solution to the producer/consumer problem must take into account many conditions. What are three of them?
# 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?
# What are three events that cause signals to be sent in UNIX?
# What are UNIX signals?  What are they used for?
# What system call do you use to receive data over an already existing pipe?
# What is the connection between pipes and files in UNIX?  How does this compare to sockets and pipes?
# How is an exokernel library OS like a guest OS running on a VM? How are they different?
# 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?
# What is the primary way that mainstream operating systems keep kernel extensions, such as device drivers, from compromising the kernel?
# How do mainstream operating systems keep kernel extensions, such as device drivers, from compromising the kernel?  How are these protections circumvented?
# 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.
# 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.
#  
# 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?
# What are the basic trade-offs between userspace and kernel space thread scheduling?  What about hybrid implementations?
# What are two uses for nested virtual machines?
# What are two uses for nested virtual machines?
# 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?
# 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?

Revision as of 11:43, 2 December 2010

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?