Lightweight Preemptible Functions
We introduce novel programming abstractions for isolation of both time and memory. They operate at finer granularity than traditional primitives, supporting preemption at sub-millisecond timescales and tasks defined at the level of a function call. This resolution enables new functionality for application programmers, including users of unmanaged systems programming languages, all without requiring changes to the existing systems stack. Despite being concurrency abstractions, they employ synchronous invocation to allow application programmers to make their own scheduling decisions. However, we found that they compose naturally with existing concurrency abstractions centered around asynchronous background work, such as threads and futures. We demonstrated how such composition can enable asynchronous cancellation of threads and the implementation of preemptive thread libraries in userland, both regarded for decades as challenging problems.
History
Date
2022-05-14Degree Type
- Dissertation
Department
- Computer Science
Degree Name
- Doctor of Philosophy (PhD)