COMP 3000 Final exam review 2010: Difference between revisions
No edit summary |
No edit summary |
||
Line 34: | Line 34: | ||
# Can LOOM be applied to bypass races in commercial off-the-shelf (COTS) software (e.g., Microsoft products)? Or, is LOOM better suited to open source software? Explain briefly. | # Can LOOM be applied to bypass races in commercial off-the-shelf (COTS) software (e.g., Microsoft products)? Or, is LOOM better suited to open source software? Explain briefly. | ||
# Describe one technique LOOM uses to make sure live updates are safe in running, highly concurrent programs. | # Describe one technique LOOM uses to make sure live updates are safe in running, highly concurrent programs. | ||
# | # What is ad-hoc synchronization, and why is it error prone? | ||
# When SyncFinder finds ad-hoc synchronization in a program, should the responsible code be removed or changed? Why? |
Latest revision as of 17:42, 5 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...
- 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?)
- What are the arguments to execve? Fork? And what do they return?
- What does ldd do? What does /proc/<PID>/maps tell you about a process? How are these related?
- How could you change UNIX to get rid of unkillable processes (zombies)? What rammifications would such a change have?
- 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 UNIX signals? What are they used for?
- What is the connection between pipes and files in UNIX? How does this compare to sockets and pipes?
- 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?
- 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.
- 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 OS support is required to implement threading? How does this relate to kernel versus userspace threads?
- How does volume management relate to file systems?
- While flash storage is now often used as a hard drive replacement, full use of flash arguably will require a major shift in how operating systems work. Why?
- At a high level, how are databases and filesystems similar, in their design and implementation? How are they different? And how do those differences lead to different implementation strategies?
- In a distributed file system, what is the difference between object-based stores and block-based stores? What are the key advantages of object-based stores? Disadvantages?
- 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?
- What is a sloppy counter? Why is it more scalable than a regular counter?
- 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?
- Why is OS timekeeping affected by power saving mechanisms?
- Why does live migration of VMs pose fundamental problems for OS clocks?
- What is one source of false positives in TaintDroid? (In other words, what kind of code/data behavior leads to false alarms?)
- What part of Android did was modified for TaintDroid? Is this part of Android's kernel? Explain briefly.
- What is a hardware breakpoint? Why is it essential to the implementation of DataCollider?
- 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.
- Why are exceptions (software interrupts/traps) expensive on modern processors?
- What problem is FlexSC's M-on-N threading system designed to solve?
- Why is it potentially beneficial to have a web browser with a small trusted code base (TCB)? Specifically, what sorts of web security problems can a small browser TCB help with?
- IBOS has to make some user interface compromises in the name of security. What is one such compromise, why was it made, and what is its effect on the user's experience?
- Can LOOM be applied to bypass races in commercial off-the-shelf (COTS) software (e.g., Microsoft products)? Or, is LOOM better suited to open source software? Explain briefly.
- Describe one technique LOOM uses to make sure live updates are safe in running, highly concurrent programs.
- What is ad-hoc synchronization, and why is it error prone?
- When SyncFinder finds ad-hoc synchronization in a program, should the responsible code be removed or changed? Why?