Skip to content
All projects

2025

Operating systems coursework in C

Seven small repositories from the operating systems and real-time courses: system-call and interrupt simulation, process and scheduler simulation with four policies, IPC over System V shared memory and semaphores, bare-metal MSP432 examples, and a readers-writers solution in C++.

The programming assignments from the operating systems and real-time courses, published together. None is large. Together they are where I first worked through the mechanisms mod_http3 later depended on: process lifecycle, interrupts, scheduling, and shared memory.

  • syscall-simulator reads a trace of CPU bursts, system calls, and I/O completions against a vector table, simulates the interrupt handling with randomised overheads, and writes an execution log. A Python script charts how time splits between CPU, I/O, and overhead.
  • process-simulator adds fork and exec, memory partitions, and external program files. Its README records the design decisions, including whether init comes from the simulator or the trace.
  • scheduler-simulator implements FIFO, round robin, shortest job first, and an external-priority policy, with scripts that compute throughput, turnaround, and wait time and plot the comparison.
  • ipc and classical-concurrency are two-process programs that talk through System V shared memory and semaphores; the second models a task queue drained by concurrent workers.
  • t-embedded collects MSP432 bare-metal examples for GPIO, ADC, PWM, timers, UART, and interrupts, plus QNX mutex and deadlock demos from the real-time course.
  • rw_sync is a readers-writers solution in modern C++ with std::mutex and std::binary_semaphore, added later as a comparison to the C versions.

All are MIT licensed, each with a Makefile and a tests/ directory.