This covers a series of advanced projects from the Operating Systems course, that span across process scheduling, API communication, multithreading, and the development of an Elevator Operating System scheduler. Each project, developed in C/C++, explores a distinctive area of OS design like implementing Round Robin and Priority CPU Scheduling, developing robust multithreading and synchronization mechanisms and building a simulated environment for resource allocation. Together, these projects reflect a deep understanding of how modern operating systems function and demonstrate strong skills in problem-solving, system analysis, and implementation.
-
Bash, Makefiles, and Utilizing the HPCC
- Topic: Bash Scripting and Makefiles
- Description: This assignment involves creating a Bash script for automating tasks such as file decryption and transformation on the HPCC, utilizing GNU 5.4.0.
-
Using APIs to Communicate
- Topic: API Communication
- Description: A C/C++ program that interacts with APIs running in a singularity container. The program sends and retrieves data using PUT and GET requests to modify internal data objects.
-
Multithreading
- Topic: Multithreading and Mutex/Semaphores
- Description: A program that reads integers from a file and processes them concurrently using multiple threads, implementing mutexes or semaphores to ensure thread safety.
-
Scheduling
- Topic: Process Scheduling
- Description: This assignment simulates various process scheduling algorithms, including FCFS, Round Robin, SPN, SRT, and HRRN, based on process data provided through input files.
-
Elevator Operating System
- Topic: Multithreading and API Communication
- Description: The final project involves developing a multithreaded scheduler for an Elevator OS that communicates with a Python-based system via asynchronous API calls, simulating real-time elevator operations.
This repository primarily utilizes:
Bash: For scripting and job submission on the HPCC.
C/C++: Used for API communication, multithreading, and scheduling algorithms.
By completing these assignments and the final project, I gained practical experience in key areas of operating system design:
- Bash Scripting & Automation: Developed skills in creating and debugging Bash scripts to automate tasks on distributed systems, managing jobs, files, and processes efficiently.
- API Communication: Mastered sending and receiving data via APIs using C/C++, with a solid understanding of HTTP requests and inter-process communication.
- Multithreading & Synchronization: Built multithreaded applications using synchronization techniques like mutexes and semaphores to ensure thread safety and prevent race conditions.
- Process Scheduling: Implemented and analyzed scheduling algorithms, including FCFS, Round Robin, SPN, and HRRN, assessing their efficiency and impact on CPU utilization.
- Systems-Level Problem Solving: Applied operating system concepts like scheduling and resource allocation, culminating in the Elevator OS project with real-world multithreading and API communication challenges.
This experience deepened my understanding of operating system fundamentals and real-world problem-solving.
