SystemCall

SystemCall

Forschungspodcast über Betriebssysteme
Podcaster
snaums

snaums
Hannover

Episoden

SC(13): Sichten auf Adressräume
24.01.2026
50 Minuten
In dieser dreizehnten Folge vom SystemCall haben wir nach langer Zeit Flo dazu bekommen, seine Dissertation vorzustellen. Zunächst wiederholen wir das Konzept des virtuelles Adressraums bzw. virtuellen Speichers. Dann erzählt Dr. Florian Rommel von der Hauptidee seiner Doktorarbeit: den Adressraumsichten. Dabei wird das Konzept eines virtuelles Adressraums, was eigentlich auf der Abstraktionsstufe "Prozess" arbeitet, erweitert um pro Thread verschiedene Adressräume möglich zu machen. Dadurch können Code- oder Datenseiten nur für bestimmte Threads ein- oder ausgeblendet werden. Darauf aufbauend, beschreibt Flo zwei Anwendungen: Zunächst wird Laufzeit-Patching genauer beschrieben. Ziel ist es, eine Anwendung, die viel internen, non-persistenten Zustand hält, zu patchen ohne die Anwendung neu starten zu müssen und den Zustand zu verlieren. Bspw. bei Memcached kann das Sinn machen, weil das Wiederaufbauen der im Arbeitsspeicher gehaltenen Daten sehr lange dauern kann. Facebook berichtet bspw. von einem Zeitraum von Tagen eines verminderten Services, wenn sie Memcached Instanzen neu starten müssen. Hier wendet Flo die Adressraumsichten an. Bei einem Patch wird eine neue Sicht erstellt. Jetzt kann jeder Thread einzeln in die neue, gepatchte Sicht wechseln, wenn es ihm passt, also an einem wohldefinierten Punkt in seinem Programmcode, aber ohne sich mit den anderen Threads explizit abstimmen zu müssen. Ein weitere Anwendung der Adressraumsichten ist das dynamische Debloating, bei dem Programmcode-Teile für jeden Thread einzeln überschrieben werden, um Angriffsfläche für u.A. ROP (return-oriented-programming) Angriffe zu reduzieren. Normalerweise muss Programmcode für den gesamten Prozess ausgeblendet werden, weil jeder Thread in einem Prozess den gleichen Adressraum sieht. In Flos Ansatz bekommt jeder Thread eine eigene Sicht und blendet sich selbst nur den Code ein, den er braucht. Das wird durch bestimmte Überprüfungen abgesichert, dass auch nur echter Anwendungscode andere Funktionen wieder einfügen darf, nicht etwa ein ROP-Angriff. Links Dissertation: Address-Space Views: A Kernel Concept for Thread-Level Memory Polymorphism Florian Rommel. Address-Space Views: A Kernel Concept for Thread-Level Memory Polymorphism. 2025. DOI: 10.15488/19722 PDF Wait-Free Code Patching of Multi-Threaded Processes Florian Rommel, Christian Dietrich, Birte Friesel, Marcel Köppen, Christoph Borchert, Michael Müller, Olaf Spinczyk, Daniel Lohmann. From Global to Local Quiescence: Wait-Free Code Patching of Multi-Threaded Processes. 2020. In OSDI'20. PDF Video Thread-Level Attack-Surface Reduction Florian Rommel, Christian Dietrich, Andreas Ziegler, Illia Ostapyshyn, Daniel Lohmann. Thread-Level Attack-Surface Reduction. 2023. In Proceedings of the 24th ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, and Tools for Embedded Systems. DOI: 10.1145/3589610.3596281 PDF Video Scaling Memcache at Facebook Rajesh Nishtala, Hans Fugal, Steven Grimm, Marc Kwiatkowski, Herman Lee, Harry C. Li, Ryan McElroy, Mike Paleczny, Daniel Peek, Paul Saab, David Stafford, Tony Tung, Venkateshwaran Venkataramani. Scaling Memcache at Facebook. 2013. In NSDI'13. Usenix Facebook Research Intro-/Outrotheme the_emergent
Mehr
SC(12): Was wir nie über Locking wissen wollten
02.12.2023
1 Stunde 8 Minuten
In der zwölften Folge vom SystemCall haben wir uns einen Gast eingeladen, den Promotionspreisträger der Fachgruppe Betriebssysteme der GI, Alexander Lochmann. Alex erzählt uns von seinem Dissertationsprojekt: dem LockDoc. Mithilfe des LockDocs kann auf Basis des Fehlerinjektionsframeworks FAIL* (Fail-Star) Lockingprobleme in Betriebssystemen feststellen, also Probleme bei denen es zu einer Race Condition kommen kann. Gegenseitiger Ausschluss wird verwendet, wenn es Nebenläufigkeit im System gibt, wodurch zwei Threads gleichzeitig auf die gleiche Datenstruktur zugreifen können und sich so ins Gehege kommen können. Der Lockdoc zeichnet dabei Benchmarkläufe auf. Alle Objektallokationen werden aufgezeichnet, sowie Zugriffe darauf und Locking-Operationen. In einem zweiten Schritt werden daraus Hypothesen aufgestellt, wie bestimmte Member von Objekten vermutlich gesichert sind, also welche Locks gehalten werden sollten um den Zugriff abzusichern. Dazu werden die gezählten Lockingmuster analysiert und eine Hypothese über dem Threshold ausgewählt. Der Lockdoc kann dann dafür benutzt werden, echte Bugs zu finden, Dokumentation zu bestätigen oder zu generieren. Alex berichtet auch über seine Erfahrungen im Austausch mit den Linux-Kernel Entwickler*innen über die gefundenen Probleme und die dort aufgedeckten Ausnahmen, die er lieber keinem*r Studierenden zeigen würde. Der SystemCall ist ein Podcast über Betriebssystemforschung. Links Dissertation: Aufzeichnunsbasierte Analyse von Sperren in Betriebssystemen Alexander Lochmann. Aufzeichnungsbasierte Analyse von Sperren in Betriebssystemen. 2021. DOI: 10.17877/DE290R-22500 PDF Paper Alexander Lochmann, Horst Schirmeier, Hendrik Borghorst, Olaf Spinczyk. LockDoc: Trace-Based Analysis of Locking in the Linux Kernel. In EuroSys'19. ACN, New York, Article 11, 1–15. DOI: 10.1145/3302424.3303948 ACM Vorträge bei der Fachgruppe Alexander Lochmann, Horst Schirmeuer. Beastie In For Checkup: Analyzing FreeBSD with LockDoc. 2021. Tagungsband des Fachgruppe Betriessysteme Herbsttreffens 2021. DOI: 10.18420/fgbs2021h-04 GI Soundeffekte Modem Einwahl Dialing Tone Intro-/Outrotheme the_emergent
Mehr
SC(11): CHERI-Capabilities als Speicherschutz
07.10.2023
50 Minuten
In dieser elften Folge des Systemcalls geht es um das CHERI Capability Model als Speicherschutzmechanismus. Wir diskutieren die Vorteile gegenüber herkömmlichem Speicherschutz und auch einige Randfälle. Zunächst wiederholen wir herkömmliche Speicherschutzverfahren, also das Paging und die Segmentierung. Beim Paging wird der Speicher in gleich große Pages bzw. Frames (im physischen Adressraum) eingeteilt, die aufeinander gemappt werden können. Segmentierung teilt den physischen Speicher hingegen in unterschiedlich große Segmente ein, die nicht an alignten Adressen starten müssen. Beides implementiert sowohl Abstraktion von physischem auf virtuellen Speicher, als auch Speicherschutz, also Isolation der Prozesse untereinander. CHERI implementiert auf Basis einer FPGA-MIPS Implementation ein anderes Modell des Speicherschutzes. Prozesse verwenden immer noch den gewohnten, durch Paging bereitgestellten virtuellen Speicher, aber auch zum Schutz einzelner Objekte so genannte Capabilities. Dazu werden (im Grunde) alle Pointer durch Capabilities ersetzt, die neben der Zieladresse noch die Länge des adressierten Objekts und einige Permissionbits enthalten. Diese Informationen sind untrennbar und unveränderbar aneinander gekoppelt. Der Prozessor selbst stellt das sicher. Die Authoren haben auf dem FPGA ein modifiziertes FreeBSD zum Laufen gebracht, eine Idee für legacy Programme entwickelt und auch Benchmarks und eine Limit-Study durchgeführt gegen andere Speicherschutzansätze. Links Capability Hardware Enhanced RISC Instructions (CHERI) Jonathan Woodruff, Robert N.M. Watson, David Chisnall, Simon W. Moore, Jonathan Anderson, Brooks Davis, Ben Laurie, Peter G. Neumann, Robert Norton, and Michael Roe. The CHERI capability model: revisiting RISC in an age of risk. In Proceeding of ISCA'14. IEEE Press, 457–468. DOI: 10.1145/2678373.2665740 ACM Jeremy Singer. Towards Secure MicroPython on Morello (WIP). In Proceedings of LCTES'2023. ACM, New York, NY, USA, 134–137. (2023) DOI: 10.1145/3589610.3596272 ACM Intro-/Outrotheme the_emergent
Mehr
SC(10): GPGPU Treiber für Intel iGPUs
30.06.2023
52 Minuten
In dieser zehnten Folge vom SystemCall geht es um die Arbeit von Marcel Lütke Dreimann. Er stellt uns in dieser Folge seinen GPGPU-Treiber für die neunte Grafikgeneration der Intel integrierten Grafikchips vor, die in den Prozessen der 6. bis 10. Generation eingebaut sind. Der Treiber wurde für das Forschungsbetriebssystem MxKernel entwickelt. MxKernel ist ein Betriebssystem was speziell für Manycore Systeme und Systeme mit heterogener Hardware entwickelt worden ist, d.h. Systeme mit vielen Prozessorkernen und unterschiedlichen Typen an Prozessoren. Marcel hat dafür einen GPGPU-Treiber entwickelt, der dafür verwendet werden kann vorkompilierte OpenCL Programme auf MxKernel auf der integrierten Intel Grafikkarte zum Laufen zu bringen. Er erklärt uns sein Vorgehen, die Initialisierung, die Besonderheiten und Fallstricke der Treiberentwicklung. PS: Leider ist bei der Aufnahme etwas schief gelaufen, weshalb Marcel etwas übersteuert. Das ist unsere Schuld, aber jetzt nicht mehr lösbar. Das wird im Verlauf der Folge besser. Links Betriebssysteme.org Vortrag Folien Paper MxKernel Jan Mühlig, Michael Müller, Olaf Spinczyk und Jens Teubner. mxkernel: A Novel System Software Stack for Data Processing on Modern Hardware. In Datenbank Spektrum 20, 223–230 (2020). DOI: 10.1007/s13222-020-00357-5 Springer Link Intro-/Outrotheme the_emergent
Mehr
SC(9): Riesenseiten und Page-Fault Latenz
28.01.2023
1 Stunde 13 Minuten
Diese neunte Folge des SystemCalls dreht sich um Huge Paging in Linux und die Betrachtung der Latenz von Page Faults mit aufkommenden niedrig-latenten Hintergrundspeichern. Normalerweise erfolgt(e) Paging auf der x86 Plattform auf der Granularität von 4K Speicherseiten. Jede Seite beginnt dabei von einer auf 4096 Byte ausgerichteten Adresse, d.h. die letzten 12 Bits der ersten Adresse einer jeden Seite sind Null. Dieses Bedingung gilt sowohl im physischen, wie auch im virtuellen Adressraum. Zwischen dem physischen Frame (oder Kachel) und einer virtuellen Page (Seite) kann dann beliebig durch die Memory-Management Unit abgebildet werden, gesteuert durch die Page Table. Im ersten Thema geht es um Ingens, einem Algorithmus um Transparent Huge Pages vergeben zu können. Die Autoren decken einige Probleme der zu der Zeit aktuellen Linux-Implementation auf, bspw. Latenz beim Herausgeben von 2M Seiten und Probleme im Same Page Merging, wobei 2M Seiten wieder nach 4K Seiten aufgespalten werden, falls 4K Seiten identisch sind und geteilt werden können. Ingens sieht dabei Kontiguität als Ressource. Die Verwaltung der Seiten wird außerdem intelligent an die Zugriffsmuster der Anwendungen ausgerichtet. Durch zwei Bitvektoren werden die Zugriffs- und Benutztheitsmuster aufgezeichnet, anhand dessen die Verwaltung der Huge Pages gesteuert wird. Das zweite Thema beschäftigt sich mit der Latenz von Page Faults. Ein Page Fault entsteht, wenn eine zugegriffene virtuelle Seite nicht im Arbeitsspeicher vorhanden ist, bspw. weil sie auf Hintergrundspeicher (SSDs, HDDs) ausgelagert wurde. Bislang sind die Page Faults Algorithmen davon ausgegangen, dass der Hintergrundspeicher bedeutend langsamer ist, als die Kosten für einen Kontextwechsel, also das Schlafenlegen des zugreifenden Threads und das Einwechseln eines anderen, bis die betreffende Seite eingelesen worden ist. Mit dem Aufkommen von Intel Optane Speichern ist die Annahme, so die Autoren, aber nicht länger gültig; die Latenz kommt nun in Bereiche, dass ein aktives Warten darauf, dass einzelne Seiten eingelesen wird, attraktiv wird, weil die Kosten eines Context Switch überwiegen können. Links Coordinated and Efficient Huge Page Management with Ingens Youngjin Kwon, Hangchen Yu, Simon Peter, Christopher J. Rossbach and Emmett Witchel (2016). Coordinated and Efficient Huge Page Management with Ingens. In OSDI (Vol. 16, pp. 705-721). Usenix When Storage Response Time Catches Up With Overall Context Switch Overhead, What Is Next? Chun-Feng Wu, Yuan-Hao Chang, Ming-Chang Yang and Tei-Wei Kuo (2020). When Storage Response Time Catches Up With Overall Context Switch Overhead, What Is Next?. In IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol. 39, no. 11, pp. 4266-4277, Nov. 2020, DOI: 10.1109/TCAD.2020.3012322. IEEE Intro-/Outrotheme the_emergent
Mehr

Über diesen Podcast

Forschungspodcast über Betriebssysteme und Rechnerarchitektur

Kommentare (0)

Lade Inhalte...

Abonnenten

15
15