This repository contains my solutions to the programming assignments of this course that I took in Spring 2022 at IIT Bombay.
I took this course to satisfy the requirements for a minor degree in Computer Science. This course was taught by Prof. Mythili Vutukuru{:target="_blank"}. The course website can be found here{:target="_blank"}.
This [assignment](./Programming Assignment 1/pa1.pdf){:target="_blank"} consists of three parts and deals with the following concepts:
- Understanding Processes in Linux
- Working of a Simple Shell
- Working of System Calls in xv6
This [assignment](./Programming Assignment 2/xv6-mem.pdf){:target="_blank"} consists of two parts and is based on understanding memory management in xv6:
- Displaying Memory Information
- Memory Mapping
- Implementing demand paging
This assignment{:target="_blank"} consists of 4 parts, but only the last 2 parts were required to be done. It is based on understanding concurrency and synchronization using semaphores and conditional variables:
- Implementing semaphore using
pthreads
library - Using our own problem on concurreny and synchronization, coming up with
- One correct and one incorrect solution using semaphores
- One correct and one incorrect solution using conditional variables