Program Synthesis for Systems Developers

dc.contributor.advisorTorlak, Emina
dc.contributor.authorVan Geffen, Jacob Stephen
dc.date.accessioned2023-08-14T17:03:32Z
dc.date.available2023-08-14T17:03:32Z
dc.date.issued2023-08-14
dc.date.submitted2023
dc.descriptionThesis (Ph.D.)--University of Washington, 2023
dc.description.abstractImplementing and verifying the correctness of systems software poses a difficult challenge for developers. Systems software operates across multiple levels of abstraction, requiring developers to reason about the interactions between these abstraction layers. At the same time, ensuring correctness of these systems is now more important than ever. Linux kernel vulnerabilities can allow malicious users to gain root access in critical systems, and incorrectly implemented cloud storage systems can harm data availability for millions of users. This dissertation presents two novel program synthesis tools that automate the implementation and verification of two classes of systems: in-kernel just-in-time (JIT) compilers and crash consistent storage systems. The first of these tools, JitSynth, allows kernel developers to automatically generate correct in-kernel JIT compilers by giving a specification of the source and target language. These JITs translate user-submitted programs to lower-level assembly code for kernel execution. Manually implementing (and proving correctness of) these JITs poses a difficult challenge for developers due to subtle differences in the semantics of the source and target languages. By synthesizing JITs automatically, JitSynth allows developers to avoid kernel-breaking bugs without the massive effort of implementing and verifying a new compiler for each target architecture. The second tool presented, DepSynth, enables storage system developers to automatically add crash consistency mechanisms to their systems. Designing crash consistent systems is difficult for developers because it requires reasoning about complex constraints on the orderings of storage system writes. DepSynth allows developers to reap the data availability and resiliency benefits of crash consistency without the overhead of manually reasoning about these orderings. Together, these tools demonstrate the effectiveness of program synthesis for developing systems software.
dc.embargo.termsOpen Access
dc.format.mimetypeapplication/pdf
dc.identifier.otherVanGeffen_washington_0250E_25833.pdf
dc.identifier.urihttp://hdl.handle.net/1773/50298
dc.language.isoen_US
dc.rightsCC BY-SA
dc.subjectCompilers
dc.subjectProgram Synthesis
dc.subjectStorage Systems
dc.subjectComputer science
dc.subject.otherComputer science and engineering
dc.titleProgram Synthesis for Systems Developers
dc.typeThesis

Files

Original bundle

Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
VanGeffen_washington_0250E_25833.pdf
Size:
971.31 KB
Format:
Adobe Portable Document Format