CS 503 Fall 2009

HW 0: Features of Operating Systems (50 pts)

Due: Friday 09/11/2009, 11:59 PM

Problem

  1. Describe how isolation/protection is achieved in modern operating systems, distinguishing hardware and software (i.e., OS) support features. Argue why isolation/protection is guaranteed, including any assumptions that are required to do so.
  2. Consider a user of an OS who downloads driver code for a device that is then installed as part of the kernel. What aspect of isolation/protection may this end up violating? What about the case when a user downloads software (i.e., program) from the Internet that is compiled and executed as a process in an OS?
  3. Isolation/protection may also be achieved purely in software without special hardware support by creating a software layer that interprets instructions of running processes to ascertain safety and soundness. The drawback, of course, is the resultant overhead. For what applications or target environments might it be meaningful (at least partly) to affect isolation/protection through software means? What are some ways to reduce the overhead associated with this approach?
  4. Read the article "Introduction and overview of the Multics system" by Corbato and Vyssotsky. Write a half-page review that discusses the similarities and differences when compared to today's desktop operating systems (e.g., UNIX/Linux, Windows) based on your experience.
  5. Virtualization where multiple operating systems concurrently run on a single machine (say x86 PC) has its roots in Turing's universal computer. As discussed in class, a universal Turing machine (UTM) is a special computer that takes as input the description of any other computer (i.e., Turing machine) and emulates its behavior so that the outputs match. That is, one gets the same result whether one builds a computer in hardware or emulates it in software by giving its specification as input to a UTM. We call this specification a "program." Since the computer being emulated may itself be universal, we may end up with nested emulations where a UTM A emulates a UTM B that in turn emulates a UTM C (and so forth). How does running Java code on a Java Virtual Machine that, in turn, runs on a Windows PC fit into the picture? What about emulating Windows within Linux that runs on a x86 PC? Keep in mind that emulated Windows itself may be running Java Virtual Machine as a process (or group of threads) which in turn run Java code. And the Java code may be a homework assignment that implements a universal Turing machine that takes as input specifications of other Turing machines.

          Write your answers in a file named HW0Answers.txt (if simple text), HW0Answers.ps (if Postscript, e.g., generated from LaTeX/dvips), or HW0Answers.pdf (for PDF files). Please place this file in the sys/ directory and turn it in, along with the lab programming assignment.


    Back to the CS 503 web page