CSE 221: Homework 1

Winter 2009

Due: Tuesday, January 27, 2009 at the start of class (3:30pm)



Answer the following questions. For questions asking for short answers, support your answers with material from the referenced papers, or with your own critical arguments, as appropriate. I am interested in your justifications as much as the answer itself. There may not necessarily be a "right" answer, although some answers may be easier to justify. Finally, do not use shorthand -- write your answers using complete sentences.

  1. A fundamental aspect of protection in operating systems is rights amplification. Rights amplifications enables a more privileged protection domain to perform an operation on behalf of a less privileged protection domain in a control fashion while maintaining protection in the system. For each of the following operating systems, state (a) the protection domains that they support, (b) the mechanism for crossing protection domains, (c) how rights are represented, (d) how rights are amplified crossing domains, and (e) how the OS determines whether to allow the domain crossing.

  2. Pilot made a strong argument for tailoring the design and implementation of operating systems to personal computers. We have also seen commercial operating systems like MSDOS and MacOS tailored towards personal computers as well. Why do you think we still run multi-user timesharing systems like Unix on our PCs? (Note: Consider, for example, the requirements we have of the systems that we use today.)

  3. 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, Pilot, Lampson Protection).

    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?


voelker@cs.ucsd.edu