Podcast
Questions and Answers
Der virtuelle Adressraum ist in 32-Bit Systemen auf 4GB begrenzt.
Der virtuelle Adressraum ist in 32-Bit Systemen auf 4GB begrenzt.
False (B)
Das Mapping von virtuellen zu physikalischen Seiten erfolgt durch einen Prozess namens Paging.
Das Mapping von virtuellen zu physikalischen Seiten erfolgt durch einen Prozess namens Paging.
True (A)
Die 'main()' Funktion wird auf der physikalischen Seite page3 abgebildet.
Die 'main()' Funktion wird auf der physikalischen Seite page3 abgebildet.
False (B)
Der Compiler generiert eine ausführbare Datei im physikalischen Speicher.
Der Compiler generiert eine ausführbare Datei im physikalischen Speicher.
Der Speicher von 'myfunc()' befindet sich im Segment des physikalischen Speicherbereichs page4.
Der Speicher von 'myfunc()' befindet sich im Segment des physikalischen Speicherbereichs page4.
Eine 32-Bit Adresse enthält einen 12-Bit Offset im virtuellen Speicherraum.
Eine 32-Bit Adresse enthält einen 12-Bit Offset im virtuellen Speicherraum.
Der virtuelle Speicherraum nutzt eine 4KB Seiten-Größe im Beispiel.
Der virtuelle Speicherraum nutzt eine 4KB Seiten-Größe im Beispiel.
Bei einer 10-Bit Offset kann die maximale Anzahl von Seiten 1024 erreichen.
Bei einer 10-Bit Offset kann die maximale Anzahl von Seiten 1024 erreichen.
Die Seiten-Tabelle verwaltet ausschließlich 4-Bit Adressen.
Die Seiten-Tabelle verwaltet ausschließlich 4-Bit Adressen.
Der PGD hat 16 Einträge, die als pgd_t 0 bis pgd_t 15 bezeichnet werden.
Der PGD hat 16 Einträge, die als pgd_t 0 bis pgd_t 15 bezeichnet werden.
Der Wert von myvar ist gleich 42.
Der Wert von myvar ist gleich 42.
Die Fragmentierung im physikalischen Speicher entsteht durch das Verschieben von Pages.
Die Fragmentierung im physikalischen Speicher entsteht durch das Verschieben von Pages.
Allozi-Speicher bezieht sich auf den Heap.
Allozi-Speicher bezieht sich auf den Heap.
Das Stack-Segment besitzt eine Größe, die mit 'int i;' deklariert wird.
Das Stack-Segment besitzt eine Größe, die mit 'int i;' deklariert wird.
Der physikalische Speicher kann komplett unabhängig vom Betriebssystem verwaltet werden.
Der physikalische Speicher kann komplett unabhängig vom Betriebssystem verwaltet werden.
Die Anwendung kann ohne Einschränkungen transparente Pages vom OS verschieben.
Die Anwendung kann ohne Einschränkungen transparente Pages vom OS verschieben.
Die Variable myval ist eine Ganzzahl ('int').
Die Variable myval ist eine Ganzzahl ('int').
Die datenorientierte Struktur wird als Segment bezeichnet.
Die datenorientierte Struktur wird als Segment bezeichnet.
Für die Bildung einer Huge Page werden die letzten 10 Bit Offset mit hinzugenommen.
Für die Bildung einer Huge Page werden die letzten 10 Bit Offset mit hinzugenommen.
Mit einem 22-Bit Offset lassen sich 4.194.304 Bytes ansprechen.
Mit einem 22-Bit Offset lassen sich 4.194.304 Bytes ansprechen.
Die PMD-Einträge in einem 32-Bit Adressraum sind jeweils 8 kB groß.
Die PMD-Einträge in einem 32-Bit Adressraum sind jeweils 8 kB groß.
Ein 22-Bit Offset ermöglicht die Adressierung von 2^22 Bytes im virtuellen Speicherraum.
Ein 22-Bit Offset ermöglicht die Adressierung von 2^22 Bytes im virtuellen Speicherraum.
Der Index in der PGD ist vollständig unabhängig von den PMD- und PTE-Einträgen.
Der Index in der PGD ist vollständig unabhängig von den PMD- und PTE-Einträgen.
Die Offset-Größe im virtuellen Speicherraum beträgt 12 Bit.
Die Offset-Größe im virtuellen Speicherraum beträgt 12 Bit.
Die Adresse in einem 32-Bit System wird durch einen 10-Bit und einen 22-Bit Offset dargestellt.
Die Adresse in einem 32-Bit System wird durch einen 10-Bit und einen 22-Bit Offset dargestellt.
In einem 32-Bit Adressraum gibt es maximal 4096 PMD-Einträge.
In einem 32-Bit Adressraum gibt es maximal 4096 PMD-Einträge.
Der virtuelle Speicherraum bei 64-Bit Systemen kann durch 4kB Seiten abgebildet werden.
Der virtuelle Speicherraum bei 64-Bit Systemen kann durch 4kB Seiten abgebildet werden.
Die Struktur 'mm_struct' repräsentiert den aktuellen physikalischen Speicher des Prozesses.
Die Struktur 'mm_struct' repräsentiert den aktuellen physikalischen Speicher des Prozesses.
Das 4-stufige Mapping für virtuelle Adressen umfasst die Einträge PGD, PUD, PMD und PTE.
Das 4-stufige Mapping für virtuelle Adressen umfasst die Einträge PGD, PUD, PMD und PTE.
Ein PGD (Page Global Directory) Eintrag kann mehr als 512 PTE (Page Table Entries) enthalten.
Ein PGD (Page Global Directory) Eintrag kann mehr als 512 PTE (Page Table Entries) enthalten.
Der Offset in einer 64-Bit Adresse ist auf 10 Bit beschränkt.
Der Offset in einer 64-Bit Adresse ist auf 10 Bit beschränkt.
Die Struktur 'pte_t' enthält Informationen über eine physikalische Seite.
Die Struktur 'pte_t' enthält Informationen über eine physikalische Seite.
Das Paging erfolgt in 2MB großen Blöcken, die als Huge Pages bezeichnet werden.
Das Paging erfolgt in 2MB großen Blöcken, die als Huge Pages bezeichnet werden.
Die Funktion 'pte_offset_map' gibt einen Zeiger auf die physikalische Seite zurück.
Die Funktion 'pte_offset_map' gibt einen Zeiger auf die physikalische Seite zurück.
Der Speicherverbrauch eines Prozesses kann mit dem Tool pmap überprüft werden.
Der Speicherverbrauch eines Prozesses kann mit dem Tool pmap überprüft werden.
Die Ausgabe von 'cat /proc/meminfo' liefert Informationen über den Netzwerkauslastung.
Die Ausgabe von 'cat /proc/meminfo' liefert Informationen über den Netzwerkauslastung.
Huge Pages sind spezielle Seitenformate, die in der Speicherverwaltung verwendet werden.
Huge Pages sind spezielle Seitenformate, die in der Speicherverwaltung verwendet werden.
Mit dem Befehl 'vmstat' kann man nur die CPU-Auslastung eines Prozesses überwachen.
Mit dem Befehl 'vmstat' kann man nur die CPU-Auslastung eines Prozesses überwachen.
Die Shell-Befehle ulimit -a und cat /proc/$$/limits liefern Informationen über die User-Limits.
Die Shell-Befehle ulimit -a und cat /proc/$$/limits liefern Informationen über die User-Limits.
Das Programm memory_allocation.c ist dafür verantwortlich, den Speicherverbrauch eines Browser zu überwachen.
Das Programm memory_allocation.c ist dafür verantwortlich, den Speicherverbrauch eines Browser zu überwachen.
Der Befehl 'htop' ist eine erweiterte Version von top, die eine grafische Benutzeroberfläche bietet.
Der Befehl 'htop' ist eine erweiterte Version von top, die eine grafische Benutzeroberfläche bietet.
Der Befehl 'cat /proc/$$/smaps' zeigt nur die Speicherkarten eines bestimmten Prozesses an.
Der Befehl 'cat /proc/$$/smaps' zeigt nur die Speicherkarten eines bestimmten Prozesses an.
Flashcards
Virtuelle Adresse
Virtuelle Adresse
Die Adresse, die von der CPU verwendet wird, um auf Daten im Speicher zuzugreifen.
Physikalische Adresse
Physikalische Adresse
Die tatsächliche physische Adresse im Hauptspeicher, an der die Daten abgelegt sind.
Seite (Page)
Seite (Page)
Ein Bereich im virtuellen Adressraum, der einer festen Größe im physischen Speicher entspricht.
Mapping
Mapping
Signup and view all the flashcards
Adressübersetzung
Adressübersetzung
Signup and view all the flashcards
Daten-Segment
Daten-Segment
Signup and view all the flashcards
Code-Segment
Code-Segment
Signup and view all the flashcards
Stack-Segment
Stack-Segment
Signup and view all the flashcards
Heap-Segment
Heap-Segment
Signup and view all the flashcards
Speicherallokation
Speicherallokation
Signup and view all the flashcards
Pages
Pages
Signup and view all the flashcards
Speicherfragmentierung
Speicherfragmentierung
Signup and view all the flashcards
Page Directory (PGD)
Page Directory (PGD)
Signup and view all the flashcards
Page Table
Page Table
Signup and view all the flashcards
32-Bit-Adresse für 4KB-Seiten
32-Bit-Adresse für 4KB-Seiten
Signup and view all the flashcards
Page Table Walk
Page Table Walk
Signup and view all the flashcards
Page-Größe
Page-Größe
Signup and view all the flashcards
Kernel-Adressraum
Kernel-Adressraum
Signup and view all the flashcards
Benutzer-Adressraum
Benutzer-Adressraum
Signup and view all the flashcards
Huge Page
Huge Page
Signup and view all the flashcards
Page Table (Seitentafel)
Page Table (Seitentafel)
Signup and view all the flashcards
Page Table Entry (PTE)
Page Table Entry (PTE)
Signup and view all the flashcards
Kernbereich (Kernel space)
Kernbereich (Kernel space)
Signup and view all the flashcards
Benutzerbereich (User space)
Benutzerbereich (User space)
Signup and view all the flashcards
top
top
Signup and view all the flashcards
htop
htop
Signup and view all the flashcards
pmap
pmap
Signup and view all the flashcards
vmstat
vmstat
Signup and view all the flashcards
/proc
/proc
Signup and view all the flashcards
cat /proc/$$/status
cat /proc/$$/status
Signup and view all the flashcards
cat /proc/$$/smaps
cat /proc/$$/smaps
Signup and view all the flashcards
Seitentabellen (Page Tables)
Seitentabellen (Page Tables)
Signup and view all the flashcards
Adressübersetzung (Address Translation)
Adressübersetzung (Address Translation)
Signup and view all the flashcards
Page Global Directory (PGD)
Page Global Directory (PGD)
Signup and view all the flashcards
Page Upper Directory (PUD)
Page Upper Directory (PUD)
Signup and view all the flashcards
Page Middle Directory (PMD)
Page Middle Directory (PMD)
Signup and view all the flashcards
Study Notes
Betriebssysteme (BS)
- Das Thema ist Betriebssysteme (BS)
- Es geht um die virtuelle Speicherverwaltung (VIII. Virtuelle Speicherverwaltung)
- Die Dozenten sind Prof. Dr.-Ing. Rainer Keller und Prof. Dr. Dennis Grewe.
- Der Veranstaltungsort ist Hochschule Esslingen.
Lehrveranstaltung Wintersemester 2024/2025
- Die Folien betreffen die Lehrveranstaltung Betriebssysteme im Wintersemester 2024/2025.
- Es gibt eine Möglichkeit, Fragen zu stellen und seine Meinung zu äußern.
- Es besteht die Möglichkeit, an einem Quiz zur Wiederholung teilzunehmen (Scheduler)
- Die Vorlesung wird von Profs. Grewe & Keller gehalten
Agenda
- Die Agenda listet die Themen auf, die in der Vorlesung besprochen werden werden.
- Die Themen betreffen virtuellen Speicher, dessen Verwaltung, die Abbildung auf physikalische Adressen und das Konzept des Paging.
Ziele
- Die Ziele der Vorlesung beinhalten das Verständnis der Linux-Speicherverwaltung und die Definitionen wichtiger Begriffe wie virtueller Speicher, Paging, etc..
- Die Umsetzung von virtuellen auf physikalische Adressen soll verstanden werden.
- Es wird empfohlen, sich in den Grafiken Notizen zu machen.
Definition: THREAD
- Ein Thread ist eine kleine Ausführungseinheit, die vom Linux-Kernel geplant wird.
- Threads innerhalb eines Prozesses teilen globale Variablen und offene Dateideskriptoren (FDs).
- Threads teilen den gleichen Adressraum, Heap und dynamischen Speicher.
- Jeder Thread verfügt über einen eigenen Registersatz, Stack und Thread-lokale Variablen (z. B. errno).
Linux Prozesskontext: Threads & Tasks
- Es gibt drei Implementierungsmethoden für Threads im Prozesskontext. (1:n, 1:1, m:n)
- Frühere Java-VM's, Linux, Solaris <9, Windows
Frage zu Prozesse & Threads
- Die Folie enthält Fragen zu den Ressourcen, die Threads und Prozesse in einem Linux-Prozess teilen, sowie die Ressourcen, die jeder Thread für sich hat.
- Es wird gefragt, in welcher Datenstruktur diese Informationen in Linux gespeichert werden.
Aufbau eines Unix Prozesses
- Der Betriebs-systemkontext des Prozesses umfasst Ressourcen wie offene Dateien, TCP-Sockets und Unix-Locks.
- Der Hardware- Kontext des Prozesses umfasst den verfügbaren Speicher, den Stack und das Adressraum, den Segmentzuweisungen (Daten, Text / Code)
Wiederholung Linux
- Linus Torvalds hat 1991 einen PC mit Intel i386 Prozessor gekauft.
- Intel 80386 ist ein neuartiger 32-Bit Prozessor, abwärtskompatibel zu 80296 (16bit) und 8086/8088.
- Die Architektur des Prozessors ist "kränklich"; wenige Register, feste Zuordnungen von Instruktionen zu bestimmten Registern, eingeschränkte Floating-Point Unit.
Speicherzugriffe: Beobachtung zu Caches
- Jeder Speicherzugriff muss schnell sein
- Caches arbeiten optimal, wenn der Zugriff auf Daten räumliche und zeitliche Lokalität aufweist.
Speicherschutzkonzept
- Speicherschutz ist ein Mechanismus, der den Zugriff auf den Arbeitsspeicher kontrolliert.
- Ziel ist die Integrität und Stabilität des Systems zu gewährleisten, indem verhindert wird, dass Prozesse unberechtigt auf den Speicher anderer Prozesse oder das Betriebssystem zugreifen.
- Prozesse müssen voneinander isoliert sein.
- Prozesse sollen nur auf Speicherbereiche zugreifen dürfen, die ihnen explizit zugewiesen wurden.
Speicherschutzkonzept: Intel i386 Prozessor
- Der Intel i386 war in der Entwicklung moderner und sicherer Systeme federführend, auch bei Speicherschutzkonzepten.
- Einführung des 32-Bit Betriebs - Unterstützung für virtuellen Speicher und Paging.
- Erweiterung der Segmentierung mit Schutzmechanismen - Ring-Schutzmodell (Privilegienstufen von Ring 0 bis Ring 3).
Historie Virtuelle Speicherverwaltung
- Die Geschichte der virtuellen Speicherverwaltung bei Intel 80386 bis heute wird behandelt.
Pages: Speicherscheiben aus Sicht des i386
- Der physikalische Speicher wird in 4KB große Pages unterteilt.
- Jede Page hat einen Diskriptor, den der Prozessor für den Zugriffskontrolle verwendet.
- Data-Segment-Diskriptor des i386 (32-Bit Prozessor): Aufbau (Base, Limit, DPL, Type, P)
Pages: Speicherscheiben aus Sicht des x86-64
- Seit dem AMD64 Prozessor (x86-64) gilt die Adresslänge als 64 Bit.
- Von den 64 Bit werden 48 Bit für die Adressleitungen verwendet.
- Der Seiten-Deskriptor wird nicht aufgebläht, sondern nur die notwendigen Bits verwendet.
Speicherschutz: Abbildung virtuell -> physikalische Adresse
- Die Umwandlung von 64-Bit virtuellen Adressen in 64-Bit physikalische Adressen erfolgt durch den Translation Lookaside Buffer (TLB) der Memory Management Unit (MMU).
- TLB agiert als Cache für die CPU für Übersetzungen.
- Seitentabellen (Page Tables), die vom Betriebssystem verwaltet werden, spielen eine Rolle bei der Umsetzung.
Virtueller Speicher: Adressumwandlung
- Umwandlung der 64-Bit virtuellen Adressen in 64-Bit physikalische Adressen durch den Translation Lookaside Buffer (TLB).
- TLB als Hardware-Cache in der CPU für effiziente Übersetzungen.
- Seitentabellen (Page Tables) vom Betriebssystem verwaltet.
Virtualisierung in Linux: Speicherverwaltung
- Linux muss viele Pages verwalten.
- Das Betriebssystem verwaltet den RAM effizient unter Beachtung von Speicher, Zeit und Anforderungen von Anwendungen.
Virtuelle Speicherverwaltung: Page Global Directory
- Auf einem 32-Bit x86-System enthält das Page Global Directory (PGD) vier Einträge, die jeweils 1GB virtuellem Adressraum entsprechen.
- Das PGD wird anhand der obersten beiden Bits der virtuellen Adresse indiziert.
- Jeder PDG-Eintrag verweist auf ein Page Middle Directory (PMD).
Virtuelle Speicherverwaltung: Page Middle Directory
- Das Page Middle Directory (PMD) enthält 1024 Einträge, die durch die oberen 10 Bit einer virtuellen Adresse indiziert werden.
- PMD-Einträge verweisen auf die Page Table Entries (PTE).
Virtuelle Speicherverwaltung: Page Table Entry
- Ein Eintrag in der Page Table Entry (PTE) Tabelle enthält die physische Adresse der 4KB Page, sofern diese im RAM vorhanden ist.
- Die letzten 12 Bits der virtuellen Adresse zeigen auf die physische Adresse der Page.
Page Table Walk (32-Bit bei 4KB Page-Größe)
- Die 32-Bit Adresse im virtuellem Speicherraum wird in verschiedene Teile zerlegt (4Bit, 10Bit, 12Bit Offset).
- Durch Suchen in PGD, PMD und PTE findet man die physische Adresse.
Page Table Walk (64-Bit bei 4KB Page Größe)
- Die 64-Bit Adresse im virtuellen Speicherraum wird in verschiedene Teile zerlegt und in der Tabelle gesucht.
Page Table Walk (64-Bit bei 2MB/1GB Huge Pages)
- Die 64-Bit Adresse wird zerlegt und mit den neuen Offsets in den Tabellen gesucht.
Speicherseiten: Pages im Linux-Kernel
- Zur Verwaltung jeder Seite benötigt der Linux-Kernel eine Datenstruktur.
- Prozesse verhalten Listen mit ihren zugeordneten Seiten.
Virtualisierung in Linux: Physikalische Speicherverwaltung -> Buddy Algorithmus
- Der Buddy-Algorithmus ist ein Algorithmus zur Speicherverwaltung, der in vielen Betriebssystemen, auch in Linux, verwendet wird.
- Er reduziert Speicherfragmentierung und bietet effiziente Speicherzuteilung.
Buddy-Speicherverwaltung
- Die Buddy-Speicherverwaltung ist ein Algorithmus zur effizienten Verwaltung von Speicherblöcken.
- Blöcke werden in größeren Blöcken organisiert und bei Bedarf in kleinere Unterteile geteilt.
- Freigegebene Blöcke werden mit ihren Buddy-Blöcken zusammengeführt.
Auslagerung von Pages
- Das Auslagern von Pages auf die Festplatte (Paging/Swapping) ist für die effiziente Nutzung des begrenzten RAM-Speichers wichtig.
- Das Ziel ist es, wenig genutzte Daten temporär auf die Festplatte zu verschieben, um mehr RAM für aktive Prozesse freizugeben.
- Der Nachteil ist die langsamere Zugriffszeit auf die ausgelagerten Daten
Flags für Pages: Copy-on-Write (COW)
- Bei der CoW-Technik wird eine Seite erst dann in den physikalischen Speicher kopiert, wenn sie geschrieben wird.
- Dadurch wird Speicherverbrauch reduziert, da nicht benötigte Pages nicht kopiert werden müssen.
BS Aufgaben: Übungen
- Es werden Aufgaben und Übungen zu Themen wie Prozessor-Hardware, Speicherverbrauch, etc. gestellt.
Tools zum Überwachen: Top/Htop, Vmsstat, Pmap
- Tools (z.B. top, htop, vmstat, pmap) zur Überwachung des Systemsperverbrauchs während dem Ausführen von Programmen.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Dieses Quiz behandelt die Konzepte des virtuellen Adressraums und des Paging in 32-Bit Systemen. Fragen werden sich auf die Funktionsweise von Seiten, den Speicheraufbau sowie die Zuordnung von virtuellen zu physikalischen Adressen konzentrieren. Teste dein Wissen über Aspekte wie Fragmentierung und Segmente im physikalischen Speicher.