ATLAS: Adaptable Thread-Level Address Spaces
Processes and address spaces are traditionally understood as closely coupled concepts.A process usually has exactly one address space for all control flows (threads) running in it, which can thereby interact efficiently via shared memory.The address space defines a (logical) memory layout and a mapping function from logical addresses to the underlying memory content (virtualization).In the ATLAS project, we are researching new operating system abstractions that make it possible to use several partially different mapping functions within the same logical address space (UNIX process) in parallel and, thereby, provide individual threads (completely transparent) a partially different view.These address-space views are, in contrast to fork(), not decoupled after their creation. They only differ in explicitly defined, "multivariant" areas, while sharing all the rest.In ATLAS, we conceptually understand addresses in the logical address space as a "universal interface" to the function and data objects they refer to; their implementation can now be overloaded or access-restricted through address-space views, comparable to implementation inheritance and interface substitutability in object-oriented languages. A different view can be applied atomically to any thread and provides this overloading without any addition indirections, which would provide, for instance, very efficient means for dynamic variability at thread level.The project aims to research the described address-space views as a variability mechanism for context-specific specialization in user processes and within the operating-system kernel.We want to answer. whether the proposed concepts can be generalized, if and how they can be implemented with sufficiently low costs, and whether the application in the operating system itself also makes it possible to meet diverging application requirements in a more targeted manner.The research is mainly conducted with constructive methods through extensions in the operating system, translators, binders and loaders.In three larger case studies from the areas of instrumentation, security and real-time, we demonstrate the broad applicability of our approach for different use cases.