2023-06-252023-06-25https://tore.tuhh.de/handle/11420/16271Prozesse und Adressräume werden traditionell als eng gekoppelte Konzepte verstanden. Ein Prozess hat in der Regel genau einen Adressraum für alle in ihm laufenden Kontrollflüsse (Fäden), die so über den Speicher effizient miteinander interagieren können.Der Adressraum definiert dabei ein (logisches) Speicherlayout sowie eine Abbildungsfunktion von logischen Adressen auf den dahinterliegenden Inhalt (Virtualisierung). Im ATLAS-Projekt erforschen wir neue Betriebssystemabstraktionen, die es ermöglichen, mehrere partiell unterschiedliche Abbildungsfunktionen innerhalb desselben logischen Adressraums (UNIX- Prozesses) parallel zu nutzen und so einzelnen Fäden (vollkommen transparent) eine in Teilen andere Adressraumsicht zuzuweisen.Anders als etwa beim klassischen fork() sind diese Adressraumsichten nach ihrer Erzeugung jedoch nicht entkoppelt, sondern unterscheiden sich nur in ausgewählten, "multivarianten" Bereichen.Die Adressen im logischen Adressraum werden, konzeptionell, als "universale Schnittstelle" zu den über sie referenzierten Funktions- und Datenobjekte aufgefasst, deren Implementierung nun durch Sichten -- atomar und ohne zusätzliche Indirektionen -- partiell überladbar oder in der Sichtbarkeit einschränkbar wird, vergleichbar etwa mit Implementierungsvererbung und Substitution einiger objektorienterter Programmiersprachen.Ermöglicht würde so, beispielsweise, sehr effiziente dynamische Variabilität auf Fadenebene.Ziel des Projektes ist es, die beschriebenen Adressraumsichten als Variabilitätsmechanismus zur kontextspezifischen Spezialisierung in Nutzerprozessen und innerhalb des Betriebssystemkerns zu erforschen.Dabei wollen wir beantworten, ob die vorgeschlagenen Konzepte generalisierbar sind, ob und wie sie mit hinreichend geringen Kosten umgesetzt werden können und ob die Anwendung auch im Betriebssystemkern selber es möglich macht, divergierende Anwendungsanforderungen zielgerichteter zu erfüllen.Die Beantwortung dieser Fragen erfolgt überwiegend mit konstruktiven Methoden durch Erweiterungen im Betriebssystems, Übersetzer, Binder und Lader.In drei größeren Fallstudien aus den Bereichen Instrumentierung, Sicherheit und Echtzeit, demonstrieren wir die breite Anwendbarkeit unseres Ansatzes für unterschiedliche Anwendungsfälle.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.Adaptive fadenspezifische AdressräumeAdaptable Thread-Level Address Spaces