Workshop Title: Linux Kernel Programming
Venue:P.D.V.V.P. College of Engineering, Ahmednagar
1. Tushar B Kute
Participants: T. E. Information Tech.
Organized by: Mrs. Jyoti Gaidhani, Assistant Professor, PDVVP, A’ Nagar.
1. Thread synchronization using counting semaphores and mutual exclusion using mutex. Application to demonstrate: producerconsumer problem with counting semaphores and mutex.
2. 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.
Full duplex communication between two independent processes. First process accepts sentences and writes on one pipe to be read by second process and second process 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 number 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.
3. Linux Kernel configuration, compilation and rebooting from the newly compiled kernel.
a. Get a Linux kernel source code from www.kernel.org
b. Menu based configuration of Linux kernel using menuconfig/xconfig/gconfig
c. Creating a monolithic compressed image of a kernel
d. Compilation of kernel modules
e. Installation of kernel modules
f. Finalize installation
4. 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.
5. 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.
6. Implementing a virtual file system in a Linux OS.