TL;DR: In this paper, a multi-tasking computer operating system allocates a respective virtual address space to each task, and a portion of virtual address spaces is reserved as a shared address space (SAS) region, the SAS region occupying the same range of virtual addresses in the virtual space of each task.
Abstract: A multi-tasking computer operating system allocates a respective virtual address space to each task. A portion of virtual address space is reserved as a shared address space (SAS) region, the SAS region occupying the same range of virtual addresses in the virtual address space of each task. Certain classes of data intended for sharing among multiple tasks are assigned unique and persistent addresses in the range of the shared address space region. Preferably, certain facilities are added to a conventional base operating system to support the SAS region and associated function. These include a join facility for initiating a task to the SAS region, an attach facility for attaching blocks of memory within the SAS region, and a paging facility for retrieving a page within the SAS region from storage. In this manner, it is possible for a multi-tasking multiple virtual address space computer system to assume the advantages of a single level store computer system when performing certain tasks.
TL;DR: The preferred embodiment as discussed by the authors provides a shared persistent virtual storage system and method for creating and managing a large logical virtual address space, called a shared address space (SAS), on existing systems.
Abstract: The preferred embodiment present invention provides a shared persistent virtual storage system and method for creating and managing a large logical virtual address space, called a shared address space (SAS), on existing systems. The shared persistent virtual storage system provides an interface layer between client processes using the SAS addresses and the underlying system. By providing the ability to use a large shared address space, the preferred embodiment allows the creation and sharing of persistent objects using single level store semantics. The preferred embodiment does this by mapping the shared address space to backing store as needed, and by implicitly moving portions of data, called pages, between backing storage and main memory as needed by client process. The preferred embodiment then provides a mechanism for translating shared address space addresses into a native address of the data in the page cache and providing that address to the application. Thus, the preferred embodiment provides the ability to store data using proven single level storage techniques in commodity systems that use smaller native addressing. This data can then be easily shared between client processes using the shared address space addresses.
TL;DR: In this article, address translation on a process-by-process basis is proposed to reduce the security concerns associated with system-wide address translation, e.g., attempting to access a virtual address for memory that has not been allocated for the associated process.
Abstract: An apparatus, program product, and method perform address translation on a process-local, rather than system-wide, basis in a single-level store virtual memory management system using a plurality of process-local address translation data structures that are individually associated with particular software processes executing on a computer. By performing address translation on a process-by-process basis, many of the security concerns associated with system-wide address translation, e.g., attempting to access a virtual address for memory that has not been allocated for the associated process, are significantly reduced from the standpoint of accessing an address translation data structure, since it can be presumed that all of the information in a process-local address translation data structure was previously authorized for the process when added to the data structure. Relatively simpler and faster security checks can then be performed in association with accessing a process-local address translation data structure to minimize the processing delays associated with such accesses. In addition, with such a configuration, any additional security issues can be handled in additional fault handling processing that is executed less frequently than accesses to address translation data structures, such that such additional security processing has a reduced impact on system performance.
TL;DR: In this paper, the authors describe the integration of transactions into a computer architecture with a persistent uniform virtual memory based on pages and combined with arbitrary long segments, and propose to implement transaction management at the architectural level.
Abstract: This work describes the integration of transactions into a computer architecture with a persistent uniform virtual memory based on pages and combined with arbitrary long segments. The ultimate goal is to offer implicit synchronisation of parallel processes and recovery from a wide range of possible errors to a large number of different applications, including the operating system, without sacrificing the efficiency or the degree of parallelism. For this reason it is proposed to implement transaction management at the architectural level.
TL;DR: Twizzler as discussed by the authors removes the kernel from the I/O path, provides programs with memory-style access to persistent data using small (64-bit), object-relative cross-object pointers, and enables simple and efficient long-term sharing of data both between applications and between runs of an application.
Abstract: Byte-addressable, non-volatile memory (NVM) presents an opportunity to rethink the entire system stack. We present Twizzler, an operating system redesign for this near-future. Twizzler removes the kernel from the I/O path, provides programs with memory-style access to persistent data using small (64 bit), object-relative cross-object pointers, and enables simple and efficient long-term sharing of data both between applications and between runs of an application. Twizzler provides a clean-slate programming model for persistent data, realizing the vision of Unix in a world of persistent RAM. We show that Twizzler is simpler, more extensible, and more secure than existing I/O models and implementations by building software for Twizzler and evaluating it on NVM DIMMs. Most persistent pointer operations in Twizzler impose less than 0.5 ns added latency. Twizzler operations are up to faster than Unix, and SQLite queries are up to faster than on PMDK. YCSB workloads ran 1.1– faster on Twizzler than on native and NVM-optimized SQLite backends.