Operating Systems Lab


Dr. Janibul Bashir

Course Overview

In this Lab, we will learn the implementation of operating system functionalities. We will develop the programs to perform the functionalities of the OS and add those functionalities to the open source kernel,

Course Code



Mon, Fri

Book For OS Programming (P1): Programming in C by A.D. Marshall [html]

xv6: a simple, Unix-like teaching operating system by Russ Cox Frans Kaashoek Robert Morris [PDF]


LAB 1 -- Install any version of Ubuntu on your system and learn the basic shell commands 

LAB 2 -- Implement the process manipulation system calls like fork(), exec(), etc.

LAB 3 -- Implement the file manipulation system calls like open(), close(), etc.

LAB 4 -- Implement the system calls for manipulating the file descriptors.

LAB 5 -- Implement the system calls for Inter-Process communication.

LAB 6 -- Implementing the new signal handlers for the standard signals.

LAB 7 -- Understand the use of free and pmap utilities in Linux

LAB 8 -- Install the Qemu emulator on your system and run xv6 operating system on Qemu. Explore the code and different services available in xv6.

LAB 9 -- Implement a multi-threaded program that is doing the matrix multiplication using multiple threads.

LAB 10 -- Use Pthread lock functions to provide solution to the critical section problem. Understand the use of atomic instructions.

LAB 11 -- Implement the condition variables and semaphores using Pthread library.

LAB 12 -- Understand the working of file system calls.

LAB 13 -- Understand the use of strace and stat tools in linux.

LAB 14 -- Understand the working of file system calls in xv6.

LAB 15 -- Understand the working of file status system calls in xv6.