Advanced Operating Systems – Spring 2007
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 :
- “Understanding the Linux Kernel, 2nd edition,” Daniel P. Bovet and Marco Cesati, O’Reilly, 2003 (Linux 2.4.18)
- “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/
- Exam (40%), Presentation (30%), Project (30%)
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.