CSE 221 Homework 1

Due: Thursday, October 13, 2016 at the start of class (8am)

Answer the following questions. For questions asking for short answers, there may not necessarily be a "right" answer, although some answers may be more compelling and/or much easier to justify. But I am interested in your explanation as much as the answer itself. Also, do not use shorthand: write your answers using complete sentences.

  1. Operating systems go to great lengths to provide isolation and protection among processes executing on the system. Process debugging, however, represents a necessary, interesting feature that is made more difficult by process isolation and protection, and requires support from the operating system to function correctly. To the extent possible and where appropriate, when answering the following questions support your answers with approaches for debugging support found in the papers you have read to this point (e.g., Tenex, Lampson Protection, Pilot).

    1. Why must a traditional operating system like Unix explicitly provide support for process debugging?
    2. List two distinct operations that a debugger must perform that require support from the operating system.
    3. Because processes are protected and isolated from each other, operating systems must also provide support for communication and coordination among processes. Why can't debuggers just use the support that operating systems already provide for process communication and coordination?
    4. Do language runtime environments like Java and Perl require operating system support for debugging programs in those languages? Why or why not?
    5. When working on an operating system, developers also need to use a debugger on the operating system itself. Why is debugging the kernel of an operating system more challenging than debugging a user-level process? What is one option for where to run a kernel debugger?

  2. Plan 9 used a three-tier storage model. The third tier, an optical write-once read-many jukebox, was used for daily dumps of the entire file system — and no data was ever deleted. Hard disk and memory were used solely as caches to data stored on the jukebox. At this point in time, their experience was that capacity was not an issue: "Technology has created storage faster than we can use it." Do you think that this model — daily snapshots and no data ever deleted, while never exceeding economical storage capacity — is appropriate today (using any storage technology for the third tier) for department/enterprise groups (as in their installation, or in our department)? For home users? For Internet services like Google, Yahoo!, Bing, Facebook, etc.?

  3. The Multics paper set out a set of principles regarding operating system design. For each of the five principles, explain how the design of Multics attempted to address them. For example, we discussed in class how Multics used explicit permission bits in the segment descriptors to ensure that the virtual memory hardware enforced the privileges established by the associated ACL at each memory access. Additionally, discuss how—or if—they are addressed in both Hydra and Unix.

Last updated: 2017-07-27 15:52:12 -0700 [validate xhtml]