SpaceJMP: Programming with Multiple Virtual Address Spaces

SpaceJMP: Programming with Multiple Virtual Address Spaces
复制标题

SpaceJMP:使用多个虚拟地址空间进行编程

DOI:
10.1145/2872362.2872366
复制
发表时间:
2016
期刊:
Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems
影响因子:
--
通讯作者:
K. Schwan
K. Schwan
中科院分区:
--
文献类型:
--
作者:
Izzat El Hajj;A. Merritt;Gerd Zellweger;D. Milojicic;Reto Achermann;P. Faraboschi;Wen;Timothy Roscoe;K. Schwan

文献摘要

被引文献

相似文献

以内存为中心的计算需要仔细组织虚拟地址空间,但这样做的传统方法是不灵活和低效的。如果应用程序希望寻址比虚拟地址位所允许的更大的物理存储器,如果它希望在进程生命周期之外维护基于指针的数据结构,或者如果它希望在同时执行的进程之间共享大量存储器,则用于管理地址空间的传统接口是麻烦的,并且经常招致过多的开销。我们提出了一个新的操作系统设计,促进虚拟地址空间的一等公民,使进程线程附加到,分离,并在多个虚拟地址空间之间切换。我们的工作使以数据为中心的应用程序能够利用虚拟范围之外的大量物理内存,表示持久的指针丰富的数据结构,而无需特殊的指针表示,并有效地共享大量的内存之间的进程。我们描述了我们在DragonFly BSD和Barrelfish操作系统中的原型实现。我们还提出了编程语义和编译器转换来检测不安全的指针使用。我们展示了我们在数据密集型应用程序(如GUPS基准测试,SAMTools基因组学工作流程和Redis键值存储)上的工作的好处。
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.