CSE 221: Homework 1
Fall 2005
Due: Section A (Marzullo): Wednesday, October 19, 2005 at the start of class (5pm)
Due: Section B (Voelker): Thursday, October 20, 2005 at the start of class (9:30am)
Answer the following questions. 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.
- The Multics paper lists five principles for protection in an
operating system. Critique Hydra according to those principles. To
what extent does Hydra implement each principle?
- Critique Pilot according to the same principles. For each, if
you think that Pilot does not implement the principle, explain whether
it is important (or not) that it does not.
- Both Pilot and Swift used typesafe languages to implement the
system, and both reported significant benefits in doing so. Why do
you think the operating systems we use are not implemented in
type-safe languages?
- 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.)
- 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).
- Why must a traditional operating system like Unix explicitly
provide support for process debugging?
- List two operations that a debugger must perform that require
support from the operating system.
- 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?
- Do language runtime environments like Java and Perl require
operating system support for debugging programs in those languages?
Why or why not?
- 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?