These are the Operating System Laboratory assignments/programs for Information Technology Students. These assignments/programs are created as per Pune University. Following are the Operating System Programs created and self implements. Following Programs are implemented on Unix/Linux Operating System using C/C++ Language. If you find this helpful then share with colleagues.Thank You.

  1. Process control system calls: The demonstration of fork, execve and wait system calls along with zombie and orphan states.
    1. Implement the C program in which main program accepts the integers to be sorted. Main program uses the fork system call to create a new process called a child process. Parent process sorts the integers using merge sort and waits for child process using wait system call to sort the integers using quick sort. Also demonstrate zombie and orphan states.
    2. Implement the C program in which main program accepts an integer array. Main program uses the fork system call to create a new process called a child process. Parent process sorts an integer array and passes the sorted array to child process through the command line arguments of execve system call. The child process uses execve system call to load new program that uses this sorted array for performing the binary search to search the particular item in the array.

  2. Thread management using pthread library. Implement matrix multiplication using multithreading. Application should have pthread_create, pthread_join, pthread_exit. In the program, every thread must return the value and must be collected in pthread_join in the main function. Final sum of rowcolumn multiplication must be done by main thread (main function).

  3. Thread synchronization using counting semaphores and mutual exclusion using mutex. Application to demonstrate: producer-consumer problem with counting semaphores and mutex.

  4. Deadlock Avoidance Using Semaphores: Implement the deadlock-free solution to Dining Philosophers problem to illustrate the problem of deadlock and/or starvation that can occur when many synchronized threads are competing for limited resources.

  5. Inter process communication in Linux using following.
    1. Pipes : Full duplex communication between parent and child processes. Parent process writes a pathname of a file (the contents of the file are desired) on one pipe to be read by child process and child process writes the contents of the file on second pipe to be read by parent process and displays on standard output.
    2. FIFOs : Full duplex communication between two independent processes. First process accepts sentences and writes on one pipe to be read by second process and second proc ess counts number of characters, number of words and number of lines in accepted sentences, writes this output in a text file and writes the contents of the file on second pipe to be read by first process and displays on standard output.
    3. Signals : Detecting the termination of multiple child processes : Implement the C program to demonstrate the use of SIGCHLD signal. A parent process Creates multiple child process (minimum three child processes). Parent process should be Sleeping until it creates the nu mber of child processes. Child processes send SIGCHLD signal to parent process to interrupt from the sleep and force the parent to call wait for the Collection of status of terminated child processes.

  6. Linux Kernel configuration, compilation and rebooting from the newly compiled kernel. Requirements:
    1. Get a Linux kernel source code from www.kernel.org
    2. Menu based configuration of Linux kernel using menuconfig/xconfig/gconfig
    3. Creating a monolithic compressed image of a kernel
    4. Compilation of kernel modules
    5. Installation of kernel modules
    6. Finalize installation

  7. Kernel space programming: Implement and add a loadable kernel module to Linux kernel, demonstrate using insmod, lsmod and rmmod commands. A sample kernel space program should print the "Hello World" while loading the kernel module and "Goodbye World" while unloading the kernel module.

  8. Implement a new system call, add this new system call in the Linux kernel (any kernel source, any architecture and any Linux kernel distribution) and demonstrate the use of same.

  9. Implementing a CPU scheduling policy in a Linux OS. OR
    Implementing a memory management policy in a Linux OS. OR
    Implementing a file system in a Linux OS