Dissertation/Thesis Abstract

A Functional Approach to Memory-Safe Operating Systems
by Leslie, Rebekah, Ph.D., Portland State University, 2011, 342; 3481882
Abstract (Summary)

Purely functional languages—with static type systems and dynamic memory management using garbage collection—are a known tool for helping programmers to reduce the number of memory errors in programs. By using such languages, we can establish correctness properties relating to memory-safety through our choice of implementation language alone. Unfortunately, the language characteristics that make purely functional languages safe also make them more difficult to apply in a low-level domain like operating systems construction. The low-level features that support the kinds of hardware manipulations required by operating systems are not typically available in memory-safe languages with garbage collection. Those that are provided may have the ability to violate memory- and type-safety, destroying the guarantees that motivate using such languages in the first place.

This work demonstrates that it is possible to bridge the gap between the requirements of operating system implementations and the features of purely functional languages without sacrificing type- and memory-safety. In particular, we show that this can be achieved by isolating the potentially unsafe memory operations required by operating systems in an abstraction layer that is well integrated with a purely functional language. The salient features of this abstraction layer are that the operations it exposes are memory-safe and yet sufficiently expressive to support the implementation of realistic operating systems. The abstraction layer enables systems programmers to perform all of the low-level tasks necessary in an OS implementation, such as manipulating an MMU and executing user-level programs, without compromising the static memory-safety guarantees of programming in a purely functional language. A specific contribution of this work is an analysis of memory-safety for the abstraction layer by formalizing a meaning for memory-safety in the presence of virtual-memory using a novel application of non-interference security policies. In addition, we evaluate the expressiveness of the abstraction layer by implementing the L4 microkernel API, which has a flexible set of virtual memory management operations.

Indexing (document details)
Advisor: Jones, Mark P.
Commitee: Heiser, Gernot, Hook, James, Palmiter, Jeanette R., Tolmach, Andrew, Walpole, Jonathan
School: Portland State University
Department: Computer Science
School Location: United States -- Oregon
Source: DAI-B 73/02, Dissertation Abstracts International
Subjects: Computer science
Keywords: Haskell, Memory, Operating systems, Programming languages, Safety
Publication Number: 3481882
ISBN: 9781267018076
Copyright © 2019 ProQuest LLC. All rights reserved. Terms and Conditions Privacy Policy Cookie Policy