CS 3210 Operating System Design

Spring 2003, TuTh 1:35-2:25

 

Homework 1

DUE: 1:30 pm (class time) Tuesday 28 January 2003

 

Topics Covered:

·        OS/Kernel Intro

·        Booting/Kernel Init

·        System Calls, Modules, /proc

 

Please prepare typed or printed solutions to the following questions (no handwritten solutions accepted) and bring to class on the due date. Answers should be short but concise. Questions amplify material from the lectures and the assigned readings. Questions frequently require you to investigate Linux or OS features and capabilities. Please make use of all available resources (web, man pages, kernel source, discussions with staff, etc.). Most questions can be answered in about one page of well-written text.

 

1. IBM introduced a novel virtual machine architecture for structuring operating systems in the 1970’s called VM/370. Briefly describe the advantages and disadvantages of virtual machine architectures using either the open-source emulator User-Mode Linux or the proprietary VMware product as a case study.

 

        User-Mode Linux – usermodelinux.org

        VMwarewww.vmware.com

 

2. Two popular contemporary approaches for structuring operating systems are microkernels and exokernels. Compare and contrast the two approaches. How are they similar? How are they different?

 

        MIT Exokernel Operating System - www.pdos.lcs.mit.edu/exo.html

        DMOZ Microkernel page –

dmoz.org/Computers/Software/Operating_Systems/Microkernel/

 

 

3. Druschel and Zwaenepoel believe that efforts at OS extensibility have gone too far and are “leading OS research astray”. Summarize their argument and offer your own carefully reasoned (J) response.

       

        Druschel, Zwaenepoel

“Extensible Systems are Leading OS Research Astray”

Proceedings of Hot Topics in Operating Systems VI

IEEE p. 38-42, 1997

http://www.cs.dartmouth.edu/~cs108/papers/druschel97.pdf

 

4. Capture a page of the boot screen startup messages (you can use the dmesg command for this) from a standard Linux system. Describe as many of the messages as you can. Using lxr.linux.no, search for the kernel code (printk) that outputs the messages and indicate where each message is produced in the kernel.

 

        dmesg

Running Linux

       

5. The Linux kernel has a built-in profiling mechanism. Explain how code profiling works in general and how it works in the Linux kernel in particular. Here is a code fragment from init/main.c that initializes kernel profiling data structures:

 

376         if (prof_shift) {
377                 unsigned int size;
378                 /* only text is profiled */
379                 prof_len = (unsigned long) &_etext - (unsigned long) &_stext;
380                 prof_len >>= prof_shift;
381                 
382                 size = prof_len * sizeof(unsigned int) + PAGE_SIZE-1;
383                 prof_buffer = (unsigned int *) alloc_bootmem(size);
384         }

 

Extra-credit if you actually generate a profile trace from your iPAQ or home Linux system.

 

6. Explain why special hardware support is required to secure an effective transition from user to kernel mode as part of the system call sequence. Explain why system calls can be made secure in the presence of such hardware support.

 

7. Describe in detail the mechanism used by dynamically loadable kernel modules (dlkm) to import and export symbols from the kernel symbol table (System.map).

 

8. Explore the /proc filesystem on your own Linux system or on the Intel machines in the lab. Describe in detail 5 interesting proc files that you discover.

 

        man proc

        Rubini