Advanced Operating Systems – Spring 2007

 

Yeonseung Ryu

 

This class is designed toward obtaining in depth knowledge of the Linux operating system internals. This class deals with the conceptual aspect as well as the implementation details of the Linux operating system: Process Structure and Management, Memory Management, File System, Virtual Memory, etc.

 Text Book :

-           Understanding the Linux Kernel, 3rd edition,” Daniel P. Bovet and Marco Cesati, O’Reilly, 2005 (Linux 2.6.11)

( errata page : http://www.oreilly.com/catalog/understandlk/errata/ )

-           Understanding the Linux Kernel, 2nd edition,” Daniel P. Bovet and Marco Cesati, O’Reilly, 2003 (Linux 2.4.18)

 

References :

-            Understanding the Linux Kernel, 1st edition,” Daniel P. Bovet and Marco Cesati, O’Reilly, 2000 (Linux 2.2.14)

-            The Wonderful World of Linux 2.6,” Joseph Pranevich (http://www.kniggit.net/wwol26.html)

-            Linux kernel source : http://lxr.linux.no/source/

 

Grading :

- Exam (40%), Presentation (30%), Project (30%)

 

Schedule :

Week 1 : Introduction

Week 2 : Chapter 1. Introduction

Week 3 : Chapter 2. Memory Addressing

Week 4 : Chapter 3. Processes

Week 5 : Chapter 4. Interrupts and Exceptions

Week 6 : Chapter 6. Timing Measurements

Week 7 : Chapter 7. Memory Management

Week 8 : Midterm Exam

Week 9 : Chapter 8. Process Address Space

Week 10 : Chapter 9~10. System Calls, Signals

Week 11 : Chapter 11. Process Scheduling

Week 12 : Chapter 12. Virtual File System

Week 13 : Chapter 16. Swapping

Week 14 : No Class

Week 15 : Project Presentation

Week 16 : No Class 

 

Project : Showing your creativity using the /proc file system

The /proc directory contains virtual files that show the current state of the running linux kernel. For example, you can see the type of processor in your system by reading the file /proc/cpuinfo (i.e., cat /proc/cpuinfo). 

In this project, your job is to understand the /proc file system and extend the functionality of it. 

The first step is to study everything below (of course, you should be familiar with the linux system) :

l The /Proc file system (http://tldp.org/LDP/lkmpg/2.6/html/c708.html, http://lxr.linux.no/source/Documentation/DocBook/procfs_example.c etc)

l How to compile the linux kernel

 Now that, I believe, you are familiar with the /proc file system, it’s time to start working on the linux kernel source code to add your ingenious creativity into it.

You can browse the kernel source code at http://lxr.linux.no/source/ and find the necessary functions and data structures. For instance, you can search for the files that contain a word “proc_mkdir” using freetext search. 

The next step of your project is as follows :

l find the functions that you want  

l add your originality into the functions

l make a new kernel image and install it on your PC (I assume, of course, that you have a linux PC)

l verify your work by checking whether new items are displayed or not in your /proc directory 

When your work arrives here successfully, you might think this project simple, depending on how you work on it.

Remember that it is important to show your creativity in order to get high score. 

Also, remember you have to submit the final report that describes your project in detail.