This repository documents a structured 12-week journey into OS development, systems programming, C internals, Linux kernel fundamentals, concurrency, assembly, performance engineering, and systems architecture.
The purpose of this project is simple:
Become a systems engineer who understands software from the perspective of hardware, memory, processes, CPU, kernel, and low-level constructs — not frameworks.
This repo contains:
- Daily C and OS experiments
- Kernel module exercises
- Concurrency + networking projects
- Bootloader and hobby OS work
- Benchmarking, profiling, and assembly practice
- Weekly deliverables and public write-ups
All work is done inside a dedicated Linux VM to ensure safety and reproducibility.
Modern engineers rely heavily on abstractions.
This journey intentionally removes them.
The goal is to:
- Understand how the OS interacts with hardware
- Understand memory deeply
- Understand processes, syscalls, scheduling, threading
- Build components that most engineers never touch
- Reach FAANG/HFT-level systems depth
By the end of 12 weeks, this repo becomes a portfolio demonstrating real systems engineering competence.
Master fundamentals deeply instead of rushing.
Every evening includes coding or debugging or reading OS internals.
Each week ends with a tangible artifact (program, module, benchmark, etc.).
Every day → commit.
Every week → publish a summary.
systems-playground/
│
├── README.md
│
├── WEEK1/
│ ├── WEEK1.md
│ ├── day1/
│ ├── day2/
│ ├── day3/
│ ├── day4/
│ ├── day5/
│ ├── day6/
│ ├── projects/
│ └── assets/ (optional)
│
├── WEEK2/
│ ├── WEEK2.md
│ ├── day1/
│ ├── projects/
│ └── ...
│
├── WEEK3/
│ ├── WEEK3.md
│ ├── day1/
│ └── ...
│
└── WEEK12/
├── WEEK12.md
└── projects/
Default: 8:30–10:30 PM IST (flexible)
- 5 min → setup
- 75–90 min → coding + experiments
- 20–30 min → reading + notes + commit
- 5 min → setup
- 45–60 min → minimal task
- 15–20 min → commit + notes
Build a safe playground for OS development.
- Create repo
systems-playground - Install VM (Ubuntu), VirtualBox/QEMU
- Create snapshot: clean-base
- Configure shared folders or SSH workflow
- Install:
build-essential, gdb, valgrind, git, python3 - Clone repo inside VM
VM ready + repo initialized.
Goal: Understand C, pointers, malloc/free, syscalls, fork/exec
Weekly Project: memplay utilities + file operations + process demos
hello.c, sum.c, gcc basics, commit.
pointer arithmetic, reverse_string.c.
malloc/free demos, valgrind leak checks.
filecopy.c using syscalls (open/read/write/close).
fork_demo.c + strace.
Parent–child pipe communication project.
Goal: pthreads, mutexes, race conditions, IO multiplexing
Weekly Project: Multi-threaded echo server
race condition demo → fix with mutex.
producer-consumer.
stdatomic.h, atomic increment.
select/poll echo server.
perf, gprof.
Benchmark using wrk/ab.
Goal: Registers, calling conventions, cache behavior
Weekly Project: Cache + performance benchmark suite
gcc -S, objdump -d.
add.s callable from C.
locals, arrays, gdb stack inspection.
stride tests, CSV output.
unrolling, perf comparisons.
Analyze cache + performance effects.
Goal: Write real kernel modules safely
Weekly Project: chardev + ioctl interface
Important: Always use VM snapshots before kernel work.
insmod, rmmod, dmesg.
memory allocation in kernel space.
alloc_chrdev_region, cdev_add, user clients.
toggle module behavior.
test failure modes.
Polish module + README + logs.
Each week = one real system artifact.
Implement FCFS, RR, SJF, MLFQ.
Deliverable: scheduler/ + visualizer.
Append-only WAL + memtable + crash recovery.
Deliverable: kv/wal-kv.
Add locking, crash tests, durability.
Deliverable: kv-store with concurrent writes.
Log shipping, replay, consistency.
Deliverable: replication/ demo.
Stage 1 bootloader → print to serial.
Deliverable: hobby-os/bootloader.
Cooperative or basic preemptive scheduler.
Deliverable: hobby-os/scheduler.
Choose one major path.
Deliverable: bytecode-vm/ or kv-compaction/.
Benchmark, polish, record a 10–15 min screencast.
Tag release v1.0.
[ ] Start VM (restore snapshot if kernel work) [ ] Pull latest code [ ] Open notes.md [ ] 75–90 min coding / experiments [ ] Run tests, capture logs [ ] git commit -m "weekN: " [ ] Push [ ] Write 10–20 lines of notes/reflection [ ] 45–60 min small task [ ] commit + note
- Operating Systems: Three Easy Pieces (OSTEP)
- CS:APP — Computer Systems: A Programmer’s Perspective
- MIT 6.828 — OS Engineering
- Learn-C.org
- Linux Kernel Module Programming Guide
- Gynvael Coldwind (YouTube)
- Ben Eater (YouTube)
- Little OS Book + OSDev Wiki
- strace, gdb, perf, valgrind manuals
- System V AMD64 ABI (for calling conventions)
- x86-64 assembly tutorials
- Consistency > Talent.
- Protect your evening block — it is a contract with your future self.
- Commit before risky changes.
- Snapshot before kernel work.
- If you miss days → recover on weekend with a reduced load.
- This 12-week journey builds the foundation top engineers rely on.
This repo will be your systems engineering identity.