CSE 221: Homework 1

Fall 2014

Hardcopy due Tuesday, November 4, 2014 at the start of class (11am)

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. A fundamental aspect of protection in operating systems is rights amplification. Rights amplification enables a more privileged protection domain to perform an operation on behalf of a less privileged protection domain in a controlled fashion without violating protection in the system. For each of the following operating systems, state (a) the protection domain 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.

    Support your answers with a bit of explanation, such as a concise summary explanation in your own words (a quote of a phrase or sentence from the papers is fine as well). For instance, two possible answers to part (a) for Hydra are:

    A protection domain in Hydra is the "local name space" (LNS). An LNS represents the current set of objects and rights to which a process has access, and those objects and rights change when a process moves from one LNS to another.

    A protection domain in Hydra is the "local name space" (LNS): "At any instant, the execution environment (domain) of a program is defined by an LNS object associated with it...the rights lists in each capability define the permissible access rights of this program at this instant." (Hydra p. 341).

    In other words, we're looking for more than just "local name space" — but at the same time your answers don't have to be lengthy discussions. The balance in the example above is fine.

  2. 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?

  3. Some of the systems we have read about and discussed use specialized hardware to facilitate their implementation. Choose one such instance, describe the hardware that was used, and what advantage it gave the system implementors and designers. What is one drawback of relying upon specialized hardware? Do we still use hardware of this form today?

  4. 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 statement still holds today? If so, why? If not, why not? Try to incorporate how technology has changed since Plan 9 was developed (hardware and/or software), or how users have changed how and for what they use computers (workloads), in your answer. Does your answer depend on whether the users you consider are users at home, departments/enterprises, or Internet services like Google and Amazon?

  5. Pilot made a strong and persuasive argument for tailoring the design and implementation of operating systems to personal computers. We have also seen commercial operating systems like MSDOS, Windows before NT, and "classic" MacOS tailored towards personal computers as well. Why do you think we still run multi-user timesharing systems like Unix — which the Plan 9 developers refer to as "old UNIX warhorses" — on our PCs today? (Even Android, one of the most popular operating systems for smartphones, uses Linux!) Consider, for example, the requirements we have of the systems that we use.