OS course project

50 views
Skip to first unread message

Mandar Mitra

unread,
May 14, 2025, 9:23:53 AMMay 14
to isi-mt...@googlegroups.com
Recall that 20% of your score will be based on a programming project that you have to complete.

I've attached a list of traditional projects that students have done in earlier years. You may choose one of these projects, but you are encouraged to define your own project; the only requirement is that it should have a strong relationship to the course material.

I. Tentative deadline for submission:

MTech students: Officially, you need to submit your project by the end of May, so that we can send your marks to the Dean's Office, and backpaper exams can be held as scheduled (between 02.06 and 06.06). Unofficially: I do not think we will all be able to complete grading by end of May. You should plan on submitting a reasonable version of your project by Friday, 13 June, 2025. This version will determine whether your name appears in the backpaper list or not. Please submit the final version of your project by the end of June / very early July, so that your marks can be finalised when the post-backpaper meeting is held.

JRFs: early July, so that your overall marks can be finalised and submitted 1-2 weeks before your annual evaluation.


II. You can send me your code, along with instructions on how to compile and run it, and how to interpret the results, if any. You do not need to give an in-person demo, or submit a report.


III. Zero tolerance for AI generated code. If you are unable to satisfactorily explain every line of code that you have written, you will be heavily penalised.
projects.txt

Mandar Mitra

unread,
Jul 3, 2025, 6:05:21 AMJul 3
to isi-mt...@googlegroups.com
Updates:

1. If you have not already submitted your project, or would like to submit an updated version, please do so by Tuesday, 08 July, 2025. The final Teachers' Committee meeting will be held the following week.

2. Mid-sem and end-sem answer scripts for the MTech students have been checked. If/when you are back on campus, please come by to take a look. I'm currently checking answer scripts for JRFs, and expect to be done by next week.

Best,
Mandar.
> General information
> -------------------
> You are encouraged to formulate your own project: the only requirement is that it should have enough to do with what you're learning in the course.
>
> The system that you implement has to run on a standard Linux distribution. Your code will be checked for plagiarism against submissions from earlier years, and standard repositories like github and gitlab.
>
> Depending on your project, you may also be required to submit a short
> written report.
>
>
> General problems
> ----------------
> 1. Implement a basic shell. Your program should run in an infinite loop in
> which it prints a command prompt, accepts a command, executes the
> command, and prints the prompt for the next command.
> (upto 4 students)
>
> Your program should handle:
> . running jobs in the foreground and background (see the man page for
> the wait system call ("$ man 2 wait" on Linux) for details)
> . simple input/output redirection (>, <, |)
> . inbuilt commands cd, logout, exit
> . keeping track of a PATH variable, so that programs can be run without
> specifying the complete path
> . simple shell variables and variable substitution
> . command-line editing and history
>
>
> Process related problems (1-2 students)
> ------------------------
> 1. Write your own version of the pstree command.
> 2. Write a program to kill a process and all its (current) descendants.
> Your program should take the PID of the target process as its only
> compulsory argument.
>
> Information about the proc file system:
>
> https://medium.com/@razika28/inside-proc-a-journey-through-linuxs-process-file-s
> ystem-5362f2414740
>
> https://www.geeksforgeeks.org/proc-file-system-linux/
>
> https://www.tecmint.com/exploring-proc-file-system-in-linux/
>
> https://docs.kernel.org/filesystems/proc.html
>
> https://en.wikipedia.org/wiki/Procfs
>
> Videos:
> https://www.youtube.com/watch?v=BuasM8AH8AM
> https://www.youtube.com/watch?v=0XdjODvsRN8
>
>
> Memory management problems (upto 3 students)
> --------------------------
> 1. Write a simulator for a demand paging memory management system. The
> following will be input parameters for your program:
> - a file containing a list of processes and their sizes
> - a file containing a sequence of memory accesses in the following form:
> <pid> <logical address>
> - page replacement algorithm (implement at least FIFO, optimal, true
> LRU, and reference byte/second chance)
> - amount of RAM and swap available
> - number of TLB entries
> Your simulator should have data structures for per-process page tables,
> and the kernel frame table. The simulator's output should report TLB
> hits/misses, and page faults for each process.
> 2. Implement replacements for the malloc/calloc, realloc and free system
> calls.
> Please see: https://en.wikipedia.org/wiki/Buddy_memory_allocation.
> Notes:
> - Your functions should have the same calling conventions as the
> original malloc, calloc, and realloc. Put them together in a static
> library (.a).
> - I should be able to take a working program, link it to your library
> and run it, and it should behave normally. If you find it easier to
> give your functions different names, then I will do the required
> string replacements before compiling.
> - You should preferably include a debug() or info() or similarly-named
> function (not provided by the standard C library). A call to this
> function should print information about the current state of the heap
> to stderr.
>
>
> Filesystem problems
> -------------------
> 1. Write a directory search routine (like a simplified version of
> "find"). Your program should take a name, and look for a file /
> directory / etc. by that name recursively within the current
> directory. If the named file/directory is found, the path to the
> file/directory should be printed along with the filetype (file /
> directory / link / etc.). Otherwise, a suitable error message should be
> displayed.
> (1-2 students. A 2-student group is expected to write something that is
> close to "find" in functionality.)
> 2. Write a multi-threaded filesystem simulator that works in client-server
> mode. Your program will function in a manner similar to the filesystem
> component of a kernel. Use a regular file to simulate the underlying
> physical storage.
> (3-4 students)
> 3. Write a multi-threaded file downloader. Your program should take a URL
> as a compulsory argument, and the number of threads and the output file
> name as optional arguments. Create a heterogeneous sample of 10 URLs and
> compare the times taken by your program and wget to download the files
> pointed to by these URLs.
> Optional: Design your program so that it is possible to interrupt and
> resume downloads. (1-2 students)
>
>
> Other problems
> --------------
> 1. Write a version control system. Content can be "checked in" and "checked
> out". Changes must be kept track of, so that rollbacks are possible.
> http://en.wikipedia.org/wiki/Revision_control
> (3-4 students)
> 2. Implement your own simplified version of file system synchronisation
> software (like Dropbox / Ubuntu One). You should create a server that
> will run on an ISI machine, and will keep a designated folder
> synchronised acrss several client machines.
>
> See the documentation for inotify.
> (3-4 students)
> 3. Implement a boot loader that selects from installed and *multiple*
> images of hibernating systems.
>
> ---
>
> References:
>
> 1. Advanced Programming in the UNIX Environment - Stevens
> Chapter 14 (semaphores, and shared memory).
> 2. Man pages for shmget, shmat, semget, semop, pthread_create, pthread_exit,
> etc.
> 3. Linux synchronization slides (course web-site).
> 4. Pthread tutorials:
> http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html
> http://www.ibm.com/developerworks/library/l-posix1.html
> 5. Man pages for opendir, readdir, scandir, etc.
> 6. Linux Kernel Development - Robert Love
> (Sams Publishing)
> 7. Linux Kernel in a Nutshell - Greg Kroah-Hartman
> 8. http://www.faqs.org/docs/Linux-HOWTO/Kernel-HOWTO.html

Mandar Mitra

unread,
Jul 3, 2025, 6:05:26 AMJul 3
to isi-mt...@googlegroups.com
Updates:

1. If you have not already submitted your project, or would like to submit an updated version, please do so by Tuesday, 08 July, 2025. The final Teachers' Committee meeting will be held the following week.

2. Mid-sem and end-sem answer scripts for the MTech students have been checked. If/when you are back on campus, please come by to take a look. I'm currently checking answer scripts for JRFs, and expect to be done by next week.

Best,
Mandar.


Mandar Mitra wrote (Wed, May 14, 2025 at 06:51:35PM +0530):
Reply all
Reply to author
Forward
0 new messages