COMP 3000 Assignment 1 2010

From Soma-notes
Revision as of 10:44, 27 September 2010 by Praman (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Please make an attempt to answer all of the following questions. While all of them can potentially require long answers, you should be able to come up with the outline of an answer to each with a few searches. If you cannot understand the questions even after referring to the textbook and online resources, try to answer the question by saying what you do and don't understand about it.

  1. To what extent can exokernels be seen as a compromise between virtual machines and microkernels? Explain how the key design characteristics of these three system architectures compare with each other.
  2. How do the available system calls in modern versions of the Linux Kernel (2.6.30+) compare with the system calls available in the earliest versions of UNIX? How has the system call interface been expanded, and why? Focus on major changes or extensions in functionality.
  3. To what extent do modern Windows systems provide mainframe-equivalent functionality? What about Windows coupled with add-on commercial products such as VMWare's virtualization and EMC's storage solutions? Explain.
  4. What "operating systems" have been implemented in the following languages: LISP, Modula-3, Smalltalk, Java? To what extent do these systems match the capabilities of operating systems implemented in C and C++?
  5. Compare and contrast the evolution of the default BSD/FreeBSD and Linux schedulers.
  6. What are some examples of notable systems that have failed due to flawed efforts at mutual exclusion and/or race conditions? How significant was the failure in each case?
  7. How is it possible for systems to supports millions of threads or more within a single process? What are the key design choices that make such systems work - and how do those choices affect the utility of such massively scalable thread implementations?
  8. What is the history of POSIX Threads (pthreads)? Consider - does this history explain why UNIX was so late to implement support for multithreaded processes?
  9. What requirements distinguish the Zettabyte File System (ZFS) from traditional file systems? How are those requirements realized in ZFS, and how do other operating systems address those same requirements? (Please discuss legacy, current, and in-development systems.)
  10. How do the constraints of flash storage affect the design of flash-optimized file systems? Explain by contrasting with hard disk-based file systems.
  11. Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.
  12. There have been multiple attempts to have operating systems use databases or database-like stores. What have been some of the major past attempts at this? What was their fate? Why? Key examples (not exhaustive): WinFS, ReiserFS, PalmOS, Newton OS, BeOS