A hands-on journey through operating systems fundamentals—from system calls to custom kernel schedulers.
This repository documents my exploration of OS concepts through practical implementation. Each project builds understanding from the ground up, starting with basic system interactions and progressing to kernel-level modifications.
E1: System Calls & Process Management
Getting comfortable with the kernel interface—process creation (fork, exec, wait) and low-level file I/O.
E2: Shell Scripting & Automation
Learning system automation through bash scripting fundamentals.
Replaced xv6's round-robin scheduler with a proportional-share lottery scheduler. Processes get CPU time proportional to their ticket count—a hands-on dive into kernel scheduling mechanisms.
Key Features:
- Custom
settickets()system call - In-kernel PRNG for fair lottery selection
- Process tickets & scheduling rounds tracking
- Children inherit parent tickets
Practical exercises exploring process synchronization and thread programming.
C Programs:
cd Expeditions/E1/
gcc 01_fork_hierarchy.c -o fork_hierarchy
./fork_hierarchyShell Scripts:
cd Expeditions/E2/
chmod +x sample.sh && ./sample.shLottery Scheduler:
cd "Lottery Scheduler Project"
# Follow instructions in README.md- C for system programming
- Bash for automation
- xv6-riscv for kernel development
- GCC and standard Unix utilities
This repository is shared publicly for learning and reference purposes. While you're welcome to study the implementations and understand the concepts, please do not copy code directly for your coursework or assignments.
Academic integrity matters. Use this as a learning resource to build your own understanding, not as a shortcut. Your future self (and your professor) will thank you.
This repository is licensed under the MIT License.
Course: CSE321 – Operating Systems | BRAC University
Semester: Fall 2025
Open to feedback. Still learning, improving.