Computer Architecture and Operating Systems Lab
Course: Computer Architecture and Operating Systems Lab (320232)
Instructors: Heinrich Stamerjohanns Jürgen Schönwälder [jabber]
TAs: Razvan Pascanu
Monday 14:15 - 18:00 Lecture Hall, Research I
Start: February 5th 2007

This lab complements the Computer Architecture and Operating Systems course. Students will gain practical experience with systems programming above and below the system call interface of operating systems. Students will learn how to write concurrent programs and gain understanding how kernel programming differs from normal application development.

Course Materials:
  • R. Love, "Linux Kernel Development", Sams Publishing, 2003
  • P.J. Salzman, M. Burian, O. Pomerantz, "The Linux Kernel Module Programming Guide", Linux Documentation Project Guides, Rev. 2.6.3, December 2005
  • J. Corbet, A. Rubini, G. Kroah-Hartman, "Linux Device Drivers", 3rd edition, O'Reilly, January 2005
2007-02-05 Introduction and programming warmup
2007-02-12 Thread programming in user space
2007-02-19 Synchronization primitives in user space
2007-02-26 Kernel modules and system calls
2007-03-05 Process file systems to access kernel information
2007-03-12 Memory management (malloc) in user space
2007-03-19 Memory management in the kernel (struct page)
2007-03-26 Character devices
2007-04-16 Character devices and IO controls (ioctl)
2007-04-23 Character devices and blocking/non-blocking IO
2007-04-30 Character devices and select/poll
2007-05-07 Interprocess communication using sockets
2007-05-14 Signals

Assignments 70% + Quizzes 30%

Any programs which have to be written will be evaluated based on the following criteria:

  • correctness including proper handling of error conditions
  • proper use of programming language constructs
  • clarity of the program organization and design
  • readability of the source code and any output produced