Skip to content

777-flyer/Operating-Systems

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CSE321: Operating Systems

A hands-on journey through operating systems fundamentals—from system calls to custom kernel schedulers.

What's Inside

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.

Expeditions

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.

Lottery Scheduler Project

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

View Implementation Details →

Problem Solving

Practical exercises exploring process synchronization and thread programming.

Quick Start

C Programs:

cd Expeditions/E1/
gcc 01_fork_hierarchy.c -o fork_hierarchy
./fork_hierarchy

Shell Scripts:

cd Expeditions/E2/
chmod +x sample.sh && ./sample.sh

Lottery Scheduler:

cd "Lottery Scheduler Project"
# Follow instructions in README.md

Tech Stack

  • C for system programming
  • Bash for automation
  • xv6-riscv for kernel development
  • GCC and standard Unix utilities

Academic Integrity Notice

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.

License

This repository is licensed under the MIT License.


Course: CSE321 – Operating Systems | BRAC University
Semester: Fall 2025

Open to feedback. Still learning, improving.

About

CSE321 - OPERATING SYSTEMS LAB

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published