This repository contains solutions and documentation for assignments and term projects of the CSE331 Operating Systems Design course at Yeditepe University, Fall 2024. Below is a summary of the tasks for each assignment and project phase.
Explore and compare three programming paradigms: multi-process, multithreaded (with and without mutual exclusion), and single-process programming, by performing operations on a long array.
- Multi-Process Program: Parent process creates child processes, each incrementing elements in its designated subarray. Parent collects results and calculates execution time.
- Multi-Threaded Program with Mutual Exclusion: Threads increment elements in their assigned subarrays with synchronization using mutual exclusion mechanisms.
- Multi-Threaded Program without Mutual Exclusion: Threads increment subarray elements without synchronization.
- Single-Process Program: A single process updates the entire array.
Compare multi-process programs with shared semaphores and multi-threaded programs using POSIX semaphores for unsharp filtering of images.
- Multi-Process Program with Shared Semaphores:
- Perform Laplacian filtering followed by matrix subtraction.
- Use POSIX semaphores to synchronize operations between child processes.
- Multi-Threaded Program with POSIX Semaphores:
- Similar functionality as the multi-process program, but implemented using threads and POSIX semaphores.
Implement a new system call in Linux that provides information about the current process.
- Add a system call,
getProcInfoF24, to return details such as PID, parent PID, user ID, and a calculated value. - Write a user-space program to test the system call and demonstrate functionality for valid and invalid inputs.
Modify the Linux scheduler to implement fair-share scheduling and compare its performance with the default scheduler.
- Implement a New Scheduling Policy: Modify
kernel/sched.cto allocate CPU resources fairly among users. - Enable/Disable Custom Scheduler: Add a system call to toggle the custom scheduler.
- Develop Performance Instrumentation: Collect detailed performance metrics for both schedulers and analyze results.
Prepared for: CSE331 Operating Systems Design, Yeditepe University, Fall 2024.
Phase 1, Assigment 1, Assigment 2 Prepared by: Ulaş Can Demirbağ
Phase 2 Prepared by: Ulaş Can Demirbağ, Mevlüt Akif Şahin, Emirhan Tala