CS1254 Operating System Lab Syllabus

CS1254 OPERATING SYSTEM LAB (Linux based) 0 0 3 100
(Implement the following on LINUX platform. Use C for high level language implementation)

1. Shell programming
- command syntax
- write simple functions
- basic tests
2. Shell programming
- loops
- patterns
- expansions
- substitutions
3. Write programs using the following system calls of UNIX operating system:
fork, exec, getpid, exit, wait, close, stat, opendir, readdir
4. Write programs using the I/O system calls of UNIX operating system (open, read, write, etc)
5. Write C programs to simulate UNIX commands like ls, grep, etc.
6. Given the list of processes, their CPU burst times and arrival times, display/print the Gantt chart for FCFS and SJF. For each of the scheduling policies, compute and print the average waiting time and average turnaround time
7. Given the list of processes, their CPU burst times and arrival times, display/print the Gantt chart for Priority and Round robin. For each of the scheduling policies, compute and print the average waiting time and average turnaround time
8. Implement the Producer – Consumer problem using semaphores.
9. Implement some memory management schemes – I for eg
Free space is maintained as a linked list of nodes with each node having the starting byte address and the ending byte address of a free block. Each memory request consists of the process-id and the amount of storage space required in bytes. Allocated memory space is again maintained as a linked list of nodes with each node having the process-id, starting byte address and the ending byte address of the allocated space.
10. Implement some memory management schemes – II for eg
When a process finishes (taken as input) the appropriate node from the allocated list should be deleted and this free disk space should be added to the free space list. [Care should be taken to merge contiguous free blocks into one single block. This results in deleting more than one node from the free space list and changing the start and end address in the appropriate node]. For allocation use first fit, worst fit and best fit.