William Armstrong

PRJ-03

Concurrent Systems

A syscall-log parser rebuilt as a concurrent pipeline, and a disk device driver synchronised through bounded queues.

Status
Coursework
Period
2025–2026

Multithreaded strace analyser

A sequential syscall-log parser, rebuilt as a concurrent pipeline. A producer thread streams trace lines into a bounded work queue backed by a condition variable; each worker holds a thread-local statistics map, merged once at join rather than contended on throughout.

The interesting part was not making it concurrent but finding where concurrency stops paying. Benchmarking sequential against multithreaded runs across increasing thread counts locates the point where speed-up flattens against parsing cost and queue synchronisation overhead — past which more threads buy nothing.

Concurrent disk device driver

Application threads synchronised against a disk device through two bounded producer-consumer queues, drained by dedicated read and write worker threads, with voucher-based asynchronous completion so callers are not blocked waiting on the device.

Note

This was assessed coursework, so no source code is published. The design and the results are discussed here instead.

Figure pending

The speed-up-against-thread-count benchmark chart is the figure this page needs. Source data not yet located.