OS Projects in C

Three systems projects from CS 415 (Operating Systems) — a pseudo-shell built on fork/exec, a process controller scheduling CPU- and I/O-bound workloads with signals, and the Duck Park concurrency simulation. All C, all valgrind-checked.

20251 min read#c #systems #unix #concurrency #performance
repo

Overview

The three programming projects from CS 415 (Operating Systems, Spring 2025) at the University of Oregon — the classic sequence where you stop calling the OS and start being it: process creation, scheduling, and synchronization, all in C against the raw POSIX API.

Project 1 — Pseudo-shell

A miniature Unix shell: a hand-rolled tokenizer (string_parser.c) feeding a command layer that implements the core utilities, with both interactive and file-driven batch modes. The discipline is in the memory management — every path exercised under valgrind.

Project 2 — Process controller

A controller that launches and time-slices a workload of CPU-bound and I/O-bound programs, built up across five parts — from forking and coordinating children to signal-driven scheduling (SIGSTOP/SIGCONT-style alarm handling) that multiplexes the processes and reports on their behavior. Each part ships with its valgrind log; the written report analyzes how the two workload types respond to scheduling.

Project 3 — Duck Park

A themed concurrency simulation in three parts, coordinating concurrent actors with threads and synchronization primitives, with a written report (Duck_Park_Report.pdf) on the design and its correctness.

related

← back to tech