COMP 3000 Midterm exam 2010

From Soma-notes
Revision as of 12:37, 26 October 2010 by Soma (talk | contribs) (Created page with "==Question 1== Q: On an x86-class processor that supports hardware virtualization, it is possible in principle to virtualize any OS that can run on the native hardware. In pract…")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Question 1

Q: On an x86-class processor that supports hardware virtualization, it is possible in principle to virtualize any OS that can run on the native hardware. In practice, only certain operating system types and versions will run well on a given VM platform (e.g., VirtualBox, VMWare Player). What is one reason for this discrepancy?

A:

Question 2

Q: Typically, what does a guest OS's hard disk look like to the host OS?

A:

Question 3

Q: The execve system call gets three arguments: a full pathname to an executable, arguments, and environment variables. What are each of these for when "chmod a+r foo.txt" is run?

A:


  1. Why doesn't \texttt{ldd} report all the libraries that are
 listed in /proc/$<$PID$>$/maps?
  1. When a process becomes undead (a zombie), who can send it to its
 grave permanently?  What must it do?
  1. UNIX files each have permissions for three classes of users.
  2. A solution to the producer/consumer problem must take into account many conditions. What are three of them?
  3. What are three events that cause signals to be sent in UNIX?
  4. What system call do you use to receive data over an already
 existing pipe?
  1. How is an exokernel library OS like a guest OS running on a VM?
 How are they different?
  1. What is one reason the UNIX system call interface has had to
 change in response to computer architectural changes?
  1. What is one reason why mainframes support near perfect hardware
 virtualization of CPU, memory, and all I/O devices?
  1. How can a cluster have higher overall reliability than the
 individual computers that it consists of?
  1. What was a key advantage of the Lisp machine OS, Genera, over
 current operating systems?  What was a key disadvantage?
  1. Why did kernel extensions in SPIN need to be written in a "safe"
 language?  Why don't kernel extensions in Windows and Linux
 (drivers, modules) need to be written in a safe language?
  1. What is an important reason why modern schedulers, like the ULE
 and recent Linux schedulers, require a scheduling algorithm which
 operates in sublinear time?   Correspondingly, why was a linear-time
 scheduler okay for the original UNIX?  Explain briefly.
  1. Describe a race condition error and a test that would catch that
 error in testing.  (You may describe a ``well-known race condition
 or one that you make up.)
  1. Can a threading library like pthreads be implemented on a system
 that has no native support for threads, such as the original UNIX?
 What is required for such an implementation?
  1. Despite their performance disadvantage, what is one reason kernel space
 thread schedulers are generally favored over userspace implementations?
  1. Linux's logical volume manager (LVM) allows for the creation of
 synthetic block devices that span physical disks, e.g., the blocks
 in two hard disks can be appended or striped so they appear to be
 one large hard disk.  LVM, however, implements no file system
 abstraction---the unified block device must be formatted with a
 regular filesystem. What is one way LVM plus ext4 (a standard Linux filesystem) is similar to ZFS?  What is one way in which they are different?
  1. Hard disk-based filesystems must design around the slow seek
 times of hard disks (relative to their sequential transfer speed).
 What characteristic(s) of flash (solid state) storage must
 flash-based filesystems design around to achieve high performance
 and reliability?
  1. Storage area networks (SANs) allow many computers to share
 access to the same storage devices via a special trusted network.
 Standard SAN access protocols work in terms of blocks.  By reading
 from multiple devices concurrently, SANs can provide impressive I/O
 performance.  Given that SANs already are extremely high
 performance, why are many researchers arguing that they should
 transition to object-based stores?
  1. What key properties of a database are developers trying to
 capture with database-filesystem hybrids?
  1. Why aren't standard databases a drop-in replacement for filesystems?