CPRE308 · Operating Systems

Operating Systems —
concurrency & design.

Explored core OS concepts — processes, threads, synchronisation, scheduling, deadlock handling, memory management, and file systems — through lectures and Linux-based lab experiments.

What I
learned.

CPRE308 covers core operating system concepts including processes, threads, synchronisation, scheduling, deadlock handling, memory management, file systems, and I/O systems. Security considerations and practical Linux-based lab experiments are an integral part of the course.

Key
topics.

Processes & Threads
Studied process creation, lifecycle management, and inter-process communication alongside threading models and their synchronisation primitives.
Synchronisation
Implemented mutexes, semaphores, and monitors to manage race conditions and critical sections in concurrent programs.
Scheduling & Deadlocks
Compared process and thread scheduling algorithms, analysed performance trade-offs, and explored deadlock detection, prevention, and avoidance strategies.
Memory & File Systems
Examined paging, segmentation, allocation strategies, and file system internals including I/O subsystem design.

Hands-on
work.

Lab exercises included implementing mutex locks and multi-threaded programs. A major project compared different locking granularities — fine-grained, medium-grained, and coarse-grained locking — by building multithreaded programs and measuring performance and contention effects.

These exercises taught practical synchronisation patterns and the trade-offs between concurrency and correctness.

C / POSIX Linux Mutexes Semaphores Scheduling Paging File Systems