SpaceJMP: Programming with Multiple Virtual Address Spaces

Authors

Izzat El Hajj, Alexander Merritt, Gerd Zellweger, Dejan Milojicic, Reto Achermann, Paolo Faraboschi, Wen-mei Hwu, Timothy Roscoe and Karsten Schwan

Venue

Proceedings of the 21st International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS'16)

Links

[ .doi ] [ .pdf ] [ .bib ]

Abstract

Memory-centric computing demands careful organization of the virtual address space, but traditional methods for doing so are inflexible and inefficient. If an application wishes to address larger physical memory than virtual address bits allow, if it wishes to maintain pointer-based data structures beyond process lifetimes, or if it wishes to share large amounts of memory across simultaneously executing processes, legacy interfaces for managing the address space are cumbersome and often incur excessive overheads. We propose a new operating system design that promotes virtual address spaces to first-class citizens, enabling process threads to attach to, detach from, and switch between multiple virtual address spaces. Our work enables data-centric applications to utilize vast physical memory beyond the virtual range, represent persistent pointer-rich data structures without special pointer representations, and share large amounts of memory between processes efficiently.

We describe our prototype implementations in the DragonFly BSD and Barrelfish operating systems. We also present programming semantics and a compiler transformation to detect unsafe pointer usage. We demonstrate the benefits of our work on data-intensive applications such as the GUPS benchmark, the SAMTools genomics workflow, and the Redis key-value store.

Bibtex

@inproceedings{ElHajj:2016:SPM,
 author = {El Hajj, Izzat and Merritt, Alexander and Zellweger, Gerd and Milojicic, Dejan and Achermann, Reto and Faraboschi, Paolo and Hwu, Wen-mei and Roscoe, Timothy and Schwan, Karsten},
 booktitle = {Proceedings of the 21st International Conference on Architectural Support for Programming Languages and Operating Systems},
 doi = {10.1145/2872362.2872366},
 id = {ElHajj:2016:SPM},
 isbn = {978-1-4503-4091-5},
 location = {Atlanta, Georgia, USA},
 pages = {353--368},
 publisher = {Association for Computing Machinery},
 series = {ASPLOS'16},
 title = {SpaceJMP: Programming with Multiple Virtual Address Spaces},
 url = {https://doi.org/10.1145/2872362.2872366},
 year = {2016}
}

Contact

The University of British Columbia
Department of Computer Science
2366 Main Mall
ICICS Building, Office 341
Vancouver, BC V6T 1Z4
Canada

achreto [at] cs.ubc.ca
+1 604 827 2446