This is a repository for keeping all of the work that I have completed so far for my Operating Systems class. Below I will briefly describe the purpose/Objective of each program
Simply introduces forking by forking a process and identifying the parent and child processes
Builds on 1.cpp by forking a process and having the child execute a command through using the execvp() method
Again, builds off of 2.cpp by having the child process execute a command given by the user and displaying the output of the command in the parent process using a pipe
Focus shifts to threads. This program simply creates two seperate threads and counts from 1 to 10 using them
Recreates the solution to the producer consumer problem. This program takes in a number of producers and consumers and creates them to do work on a buffer without producers overwritting full slots of data
Almost identical to 6.cpp, but the buffer is bounded
Recreates the solution to the Readers-Writers problem. Readers and Writers are created randomly and do work on the same buffer. No thread can enter when a writer thread is doing work, but multiple readers threads can do work at the same time. Turnstile semaphore is used to prevent writer starvation.
Recreates a particular solution to the Dinning Philosopher's problem, Where Philosopher's are replaced with gamers who are playing games in a living room.
The ash project is an ongoing project to implement a basic shell and learn how they fundamentally work. Currently, all built in is functional and soon regular commands will be too.