Lab1: A terminal driver that supports multi-threaded concurrent non-interleaved reads and writes using monitor and condition variables.
Lab2: An operating system kernel featuring memory management, context switching, and trap/interrupt handling with process scheduling mechanisms using bi-directional circular linked lists to manage process execution.