COMP 3000 Lab 2 2011

From Soma-notes
Jump to navigation Jump to search

Part A (Mandatory)

This part is to be completed in class.

  1. Copy the ISO images from the class DVD to your computer. Boot at least two of the ISOs in Virtualbox or VMware Player by creating a new virtual machine and using the ISO for the virtual CD drive. For at least two distributions:
    1. Roughly how long did the VM take to boot completely?
    2. How similar is the environment to that available on the Lambda SCS hosts?
  2. Create an account on the class wiki. What username did you choose?
  3. Look at /proc/cpuinfo in a Linux virtual machine (any distribution). Is the "guest" CPU the same as that reported by the Windows "host"?
  4. Examine the PCI devices as reported by the command line program "lspci" and identify the video card. Is this "virtual" video card the same as the "real" one that Windows uses?
  5. Compile the program hello.c (below) with gcc -O hello.c -o hello-dyn and then run it using the command ltrace ./hello-dyn . What dynamic functions does the program call?
  6. Compile the same program with gcc -O -static hello.c -o hello-static . Run this second binary with ltrace as before. What dynamic functions does the program now call?
  7. How can you make the output of hello.c go to the file "hello-output" by changing how it is invoked at the command line?
  8. How can you make the output of hello.c go to the file "hello-output" by changing its code?
/* hello.c */
#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
       printf("Hello, world!\n");
       return 0;
}

Part B (on your own)

  1. Typically, what does a guest OS's hard disk look like to the host OS?
  2. Do guest OSs need the same device drivers as host OSs? Why?
  3. Why do we "open" files? Specifically, to what extent is it possible to do file I/O without open and close operations - assuming you could change the UNIX API?
  4. What is the difference between dynamic library and system calls?