University of Wisconsin–Madison · M.S. Computer Science

Coursework.

Papers I've read, projects I've built, and assignments I've worked through as part of my graduate coursework. Cards marked with a reflection contain my personal notes on the work.

Semester

Course

Type

22 entries

PaperFall 2025

Exterminate All Operating System Abstractions

Dawson R. Engler, M. Frans Kaashoek · 1995

A position paper arguing that traditional OS abstractions (files, processes, sockets) harm performance, reliability, and adaptability by preventing applications from tailoring resource management. Advocates lowering the OS interface to bare hardware — the seed idea for the Exokernel architecture — where the kernel only securely multiplexes hardware while library OSes implement policy.

OS DesignExokernelAbstractionsPosition Paper
PaperFall 2025

The Structure of the "THE"-Multiprogramming System

Edsger W. Dijkstra · 1968

Introduces layered OS design using the THE system as a case study: hardware sits at layer 0, memory management at layer 1, process abstraction at layer 2, I/O device management at layer 3, and the user program at layer 4. Each layer is verified independently, and semaphores appear here as a formal synchronization primitive for the first time.

OS StructureLayered DesignSemaphoresClassic
PaperFall 2025

Sharing and Protection in a Single-Address-Space Operating System

Jeffrey S. Chase, Henry M. Levy, Michael J. Feeley, Edward D. Lazowska · 1994

Presents Opal, a single-address-space OS for 64-bit architectures that decouples addressability from protection. Rather than isolating processes in separate address spaces, Opal uses segments and capabilities to grant fine-grained protection within one shared 64-bit address space, enabling efficient pointer-based sharing without expensive context switches.

Address SpaceMemory ProtectionSharing64-bit
PaperFall 2025

Policy/Mechanism Separation in Hydra

R. Levin, E. Cohen, W. Corwin, F. Pollack, W. Wulf · 1975

Establishes policy/mechanism separation as a foundational OS design principle, demonstrated through the Hydra kernel at CMU. The kernel provides only mechanisms (scheduling, paging, protection); all policy is delegated to higher-level components. The paper shows this concretely for three subsystems: CPU scheduling, paging, and protection, proving that a minimal kernel can support diverse policies without modification.

Policy/MechanismOS DesignKernelSeparation of Concerns
PaperFall 2025

Arrakis: The Operating System is the Control Plane

Simon Peter, Jialin Li, Irene Zhang, Dan R. K. Ports, Doug Woos, Arvind Krishnamurthy, Thomas Anderson, Timothy Roscoe · 2014

Arrakis splits the OS into a control plane (the kernel, for configuration and resource allocation) and a data plane (user space, for all I/O). Applications use SR-IOV hardware virtualization to access network and storage devices directly without kernel involvement on the critical path. Redis achieves 2–5× throughput improvement and 9× latency reduction over Linux.

Kernel BypassI/OSR-IOVData PlanePerformance
PaperFall 2025

Virtual Memory Primitives for User Programs

Andrew W. Appel, Kai Li · 1991

Exposes five low-level virtual memory primitives (trap, prot1, protn, unprot, dirty) to user programs, enabling user-level implementations of garbage collection, persistent stores, shared virtual memory, and data-compression paging — without kernel modifications. The paper demonstrates that VM hardware, usually hidden behind the OS, is a rich substrate for user-level systems software.

Virtual MemoryUser-LevelGCMemory Primitives
PaperFall 2025

Coordinated and Efficient Huge Page Management with Ingens

Youngjin Kwon, Hangchen Yu, Simon Peter, Christopher J. Rossbach, Emmett Witchel · 2016

Ingens treats memory contiguity as a first-class OS resource and tracks actual page utilization before promoting to huge pages. Linux's Transparent Huge Pages (THP) often promotes eagerly, causing bloat and stalls; Ingens coordinates promotion with access patterns to deliver up to 18% throughput improvement and 41% reduction in tail latency.

Huge PagesMemory ManagementTHPLinux
PaperFall 2025

Borrowed-Virtual-Time (BVT) Scheduling: Supporting Latency-Sensitive Threads in a General-Purpose Scheduler

Kenneth J. Duda, David R. Cheriton · 1999

BVT lets latency-sensitive threads 'borrow' virtual time from the future by warping their effective virtual time backward, letting them preempt other threads immediately upon waking. The borrowed time is repaid later, so long-run fairness is maintained while interactive threads get sub-millisecond scheduling response.

SchedulingLatencyFair ShareReal-Time
PaperFall 2025

SEDA: An Architecture for Well-Conditioned, Scalable Internet Services

Matt Welsh, David Culler, Eric Brewer · 2001

SEDA (Staged Event-Driven Architecture) structures internet services as a pipeline of event-driven stages connected by queues. Each stage has a thread pool and a controller that dynamically adjusts concurrency based on queue depth, enabling graceful degradation under overload without thread-per-request overhead.

ArchitectureScalabilityEvent-DrivenInternet Services
PaperFall 2025

The Scalable Commutativity Rule: Designing Scalable Software for Multicore Processors

Austin T. Clements, M. Frans Kaashoek, Nickolai Zeldovich, Robert T. Morris, Eddie Kohler · 2013

Establishes a theoretical principle: whenever interface operations commute (their results are order-independent for any interleaving), there exists an implementation with conflict-free memory accesses that scales to many cores. Introduces COMMUTER to generate commutativity conditions from specs and evaluates against POSIX and the sv6 kernel.

ScalabilityMulticoreConcurrencyFormal MethodsPOSIX
PaperFall 2025

Hyperkernel: Push-Button Verification of an OS Kernel

Luke Nelson, Helgi Sigurbjarnarson, Kaiyuan Zhang, Dylan Johnson, James Bornholt, Emina Torlak, Xi Wang · 2017

Hyperkernel encodes OS kernel handlers as finite, loop-free SMT queries and uses Z3 to automatically verify isolation: a process can only access its own memory. The 'push-button' approach requires no manual proof annotations — if Z3 discharges the queries, the kernel is verified. Hyperkernel verifies a complete, bootable OS in under a minute.

VerificationSMTFormal MethodsOS Safety
PaperFall 2025

F2FS: A New File System for Flash Storage

Changman Lee, Dongho Sim, Joo-Young Hwang, Sangyeun Cho · 2015

F2FS is a log-structured file system designed around NAND flash characteristics: sequential writes for performance, multi-head logging to avoid GC pressure, and a node address table (NAT) that eliminates LFS's wandering-tree update problem. Now the default filesystem for Android devices.

File SystemsFlashNANDLog-StructuredAndroid
PaperFall 2025

RacerX: Effective, Static Detection of Race Conditions and Deadlocks

Dawson Engler, Ken Ashcraft · 2003

RacerX uses flow-sensitive interprocedural static analysis to infer locking disciplines and flag violations as potential race conditions or deadlocks. It found hundreds of bugs in Linux, FreeBSD, and commercial OS kernels, including 12 serious previously-unknown races, demonstrating that static analysis can surface concurrency bugs at scale without running the code.

Race DetectionStatic AnalysisConcurrencyBug Finding
PaperFall 2025

Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux

Hubertus Franke, Rusty Russell, Matthew Kirkwood · 2002

Introduces futexes (fast userspace mutexes), the synchronization primitive underlying pthreads on Linux today. In the uncontended case, locking and unlocking are pure userspace atomic operations with no kernel involvement. Only when a thread must actually wait does it make a syscall, minimizing kernel overhead for the common case.

SynchronizationLockingLinuxUser-Levelpthreads
PaperFall 2025

CONVEROS: Practical Model Checking for Verifying Rust OS Kernel Concurrency

Ruize Tang et al. · 2025

Applies model checking to verify concurrency correctness in the Asterinas Rust OS kernel using PlusCal specifications. CONVEROS uncovered 20 bugs across 12 critical concurrency modules — including deadlocks and atomicity violations — with a specification-to-code ratio of 0.3–2.3, demonstrating that model checking is practical for production-scale Rust kernels.

Model CheckingRustOS VerificationConcurrencySafety
PaperFall 2025

BTRFS: The Linux B-Tree Filesystem

Ohad Rodeh, Josef Bacik, Chris Mason · 2013

Describes BTRFS's copy-on-write B-tree structure that supports snapshots, checksums, transparent compression, and built-in RAID — all in a single filesystem. COW guarantees that an in-progress write never overwrites live data, enabling crash-consistent snapshots at near-zero cost and self-healing through per-block checksums.

File SystemsB-TreeCopy-on-WriteSnapshotsLinux
PaperFall 2025

WiscKey: Separating Keys from Values in SSD-Conscious Storage

Lanyue Lu, Thanumalayan Sankaranarayana Pillai, Andrea C. Arpaci-Dusseau, Remzi H. Arpaci-Dusseau · 2016

WiscKey redesigns LSM-tree key-value stores for SSDs by keeping only keys in the tree and storing values in a separate append-only log. This eliminates value write amplification during compaction while exploiting SSD's cheap random reads. Achieves up to 8× faster sequential loads and 3.6× faster random lookups than LevelDB.

Key-Value StoreSSDLSM TreeWrite Amplification
PaperFall 2025

Adaptive Huge-Page Subrelease for Non-moving Memory Allocators in Warehouse-Scale Computers

Martin Maas, Chris Kennelly, Khanh Nguyen, Darryl Gove, Kathryn S. McKinley, Paul Turner · 2021

Addresses the tension between keeping memory as huge pages (for TLB performance) and releasing memory back to the OS (for efficiency at warehouse scale). Introduces adaptive subrelease — breaking up huge pages only when demand warrants — that maintains 98% huge-page coverage vs. 87% without it, while still returning memory promptly. Deployed in Google's TCMalloc.

Memory ManagementHuge PagesAllocatorWarehouse-ScaleTCMalloc
PaperFall 2025

SCONE: Secure Linux Containers with Intel SGX

Sergei Arnautov, Bohdan Trach, Franz Gregor, Thomas Knauth, André Martin, Christian Priebe, Joshua Lind, Divya Muthukumaran, Dan O'Keeffe, Mark L. Stillwell, David Goltzsche, Dave Eyers, Rüdiger Kapitza, Peter Pietzuch, Christof Fetzer · 2016

SCONE runs Linux containers inside Intel SGX enclaves, protecting application memory and secrets from a compromised host OS or hypervisor. To avoid expensive enclave transitions on every syscall, it uses shielded execution with asynchronous system call forwarding and transparent I/O encryption, achieving 0.6×–1.2× native throughput.

SGXContainersSecurityConfidential ComputingTrusted Execution
PaperFall 2025

Erebor: A Drop-In Sandbox Solution for Private Data Processing in Untrusted Confidential Virtual Machines

Xiao Zhang et al. · 2025

Erebor provides intra-kernel privilege isolation inside confidential VMs, preventing an untrusted guest OS kernel from accessing sensitive application data. The sandbox is drop-in compatible with existing cloud deployments and imposes only 4.5%–13.2% performance overhead, extending confidential computing guarantees to the guest OS threat model.

Confidential ComputingSandboxCVMSecurityIsolation
PaperFall 2025

Towards a Machine Learning-Assisted Kernel with LAKE

Henrique Fingler, Isha Tarte, Hungchen Yu, Ariel Szekeres, Sanketh Vedula, Avishay Traeger, Ronen Kat, Emmett Witchel · 2023

LAKE enables ML inference inside the OS kernel, allowing subsystems like I/O scheduling and memory management to make data-driven decisions. It introduces a kernel-space ML runtime with support for hardware accelerators and achieves 95% inference speedup for I/O latency prediction while avoiding the cost of user-kernel context switches for inference.

Machine LearningKernelSystems MLI/OScheduling
PaperFall 2025

Kleio: A Hybrid Memory Page Scheduler with Machine Intelligence

Georgios Doudali, Sergey Blagodurov, Abhinav Vishnu, Dimitrios Nikolopoulos, Christos Antonopoulos · 2019

Kleio manages page placement in tiered memory systems (DRAM + NVM or HBM + DDR) by combining history-based heuristics with a recurrent neural network for access-pattern prediction. It reduces the performance gap with an oracle page scheduler by 80%, deploying the RNN selectively to amortize inference cost.

Machine LearningMemory TieringPage SchedulingNVMHBM