Betriebssysteme Flashcards

1
Q

In welchen Zuständen kann sich ein Prozess befinden?

A

Bereit:
Aktiv:
Blockiert:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Welche Probleme kann es geben, wenn ein Betriebssystem nur Prozesse aber keine Threads hat

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was ist ein Prozess?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was ist ein Threads?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was is nicht-prämpatives Scheduling?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wie funktioniert shortest job first? (Scheduling)

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist Präemptives scheduling?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Präemptives Scheduling:
Was ist Round Robin?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Unterschied klassische vs. Echtzeitsysteme

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

3 Anforderungen an ein echtzeitsystem:

A
  1. Rechtzeitigkeit
  2. Gleichzeitigkeit
  3. Verfügbarkeit
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Zweiprozessorsystem? (Multiprozessorsysteme)

A

Es gibt zwei gleich lange beste Pfade.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

List Scheduling? (Multiprozessorsysteme)

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Lastverteilung: Sequenzieller vs. parallelisierbarer Code

A

parallelisierbar = besser, da schneller

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was sind Raceconditions?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Speicherorganisation: Welche Belegungsstrategien gibt es?(3)

A

FirstFit
- Nimm das erste, ausreichend große Stück.
- Aber: Reststücke

NextFit
- Wie FirstFit, aber führe Speicherindex mit (bei nächster Anforderung da weitermachen, wo beim letzten Mal aufgehört wurde)

BestFit
- Nimm das kleinste freie Stück, das passt
- Aber: winzige, unbrauchbare Reststücke

WorstFit
- Größtes freies Stück, um große Reststücke zu erhalten

QuickFit
- Eine Liste pro Anforderungsgröße (also pro Datentyp)

Buddy-System
- Listen von Speicherstücken der Größe 2^n: 256 Byte, 512 , 1024
- Bei Anforderung von 𝑥 Byte: Suche in Liste der kleinstmöglichen passenden Zweierpotenz
- Wenn kein passendes Stück vorhanden ist: Zerteilen eines Stücks der nächstgrößeren Zweierpotenz
- Bei Rückgabe: Schnelles Verschmelzen mit dem Partnerstück

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Speicherorganisation: Was ist interner Verschnitt?(3)

A

=> Speicher, der innerhalb einer Speicherzelle freibleibt
- Interne Zersplitterung (innerhalb des Adressraums eines Prozesses) durch Heap-Belegung
- Abhilfe: garbage collector des Programmiersystems

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Speicherorganisation: Was ist externer Verschnitt?(3)

A

=> Freier Platz zwischen den Programmen im Hauptspeicher
Abhilfen:
● Zuerst Einlagern großer Prozesse, dann Auffüllen mit kleinen
Swapping kleiner Programme (widerspricht der Shortest-Job-First-Strategie?)
● Speicheraufteilung in verschieden große Bereiche, jeder mit eigener Warteschlange (IBM OS/MFT): ineffizient!
● Zusammenschieben des Speichers: Zeitaufwändig!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Was ist virtueller Speicher?(3)

A

Virtueller Speicher ist ein Speichermanagementsystem, das es einem Computer ermöglicht, mehr Speicher zu nutzen, als physisch vorhanden ist, indem es Daten zwischen dem RAM und einem Festplattenspeicher (Paging-Datei) hin- und herbewegt. Dies ermöglicht es Programmen, größer zu sein als der verfügbare physische Arbeitsspeicher, indem sie Speicheradressen auf logische Weise verwalten.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Virtueller Speicher: Welche Probleme und Lösungen gibt es?(3)

A

Speicherzusatzbelegung von Programmen
=>Unix: Prozess auslagern, neuen Speicher reservieren, neu einlagern
=> Externen Verschnitt zum Prozess dazuschlagen (Stack & Heap)

Relozierung von Programmcode
=> Relative Adressen bei Sprungbefehlen nutzen?
=> Bei Einlagerung oder zur Laufzeit absolute Adresse errechnen?

Speicherschutz von Programmen
=> Betriebssystemkern darf nicht korrumpiert werden (fences, limits), spezielle Hardwareeinheit überwacht die Einhaltung
=> Ebenso: Prozesse dürfen sich nicht gegenseitig den Speicher überschreiben

Programmiermodell soll klar, einfach und uniform sein (Fehlervermeidung)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Virtueller Speicher: Was ist Paging?(3)

A

Paging ist eine Speicherverwaltungsstrategie, bei der der virtuelle Speicher in gleich große Blöcke, sogenannte Seiten, und der physische Speicher in gleich große Blöcke, sogenannte Seitenrahmen, unterteilt wird. Bei Bedarf werden diese Seiten zwischen dem physischen Speicher und einem sekundären Speicher (z.B. Festplatte) verschoben, um sicherzustellen, dass Programme mehr Speicher nutzen können, als physisch vorhanden ist.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Paging(3): Was sind …
Seiten / pages?
Seitenrahmen / frames?
Seitentabelle / page table?

A
  • Seiten / pages: Gleich große Blöcke des virtuellen Speichers.
  • Seitenrahmen / frames: Gleich große Blöcke des physischen Speichers.
  • Seitentabelle / page table: Datenstruktur, die die Zuordnung von virtuellen Seiten zu physischen Seitenrahmen verwaltet.

! Jede virtuelle Adresse muss in physikalische Adresse umgesetzt werden!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Was ist virtuelle Adresskonversion?(3)

A

Virtuelle Adresskonversion ist der Prozess, bei dem eine virtuelle Speicheradresse mithilfe einer Seitentabelle in eine physische Speicheradresse übersetzt wird. Dabei wird der Seitenindex verwendet, um den entsprechenden Seitenrahmen zu finden, und der Offset (Der Offset ist der Teil einer Speicheradresse, der die genaue Position innerhalb einer Seite angibt.), um die genaue physische Adresse zu bestimmen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Adresskonversion:
Was ist das Problem und wie ist die Lösung dazu? (3)

A

Problem: virtueller Adressraum ≫ physikalischer Adressraum: Riesige Seitentabellen!

Lösung: Adressbegrenzung
● Vorteil: kleinere Tabellen
● Z.B. 30 Bit (1 GiB) à 18 Bit 2= 262.144 Tabelleneinträge
● Nachteil: Vergeudung von Platz, da meist nicht benötigt!
● Warum so viele Tabelleneinträge auch für z.B. 40-KiB-Prozess, der insgesamt nur 10 Seiten benötigt?!
● Nachteil: Kleinerer Adressraum

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Adresskonversion:
Was sind Multi-Level-Tabellen?(3)

A

Multi-Level-Tabellen sind eine Hierarchie von Seitentabellen, die verwendet werden, um den Speicherplatz effizienter zu verwalten und die Adresskonversion in großen virtuellen Adressräumen zu erleichtern.

26
Q

Adresskonversion:
Was sind 2-Level-Tabellen?(3)

A

Siehe Seite 29

27
Q

Adresskonversion:
Was sind 3-Level-Tabellen?(3)

A

Siehe Seite 30

28
Q

Können beim Paging interner und/oder externer Verschnitt auftreten? (3)

A

Siehe Seite 31

29
Q

Adresskonversion:
Was sind 4-Level-Tabellen?(3)

A

Siehe Seite 34

30
Q

Adresskonversion:
Was sind 5-Level-Tabellen?(3)

A

Siehe Seite 35

31
Q

Adresskonversion:
Was ist der Translation Lookaside Buffer (TLB)?(3)

A

Der TLB verbessert die Effizienz und Geschwindigkeit der Adressübersetzung in einem System mit virtuellem Speicher, indem er häufig verwendete Adresszuordnungen zwischenspeichert. (Wird durch Hardware UND druch Software verwaltet)

32
Q

Adresskonversion:
Klassischer vs. Assoziativspeicher? (3)

A

„Klassischer“ Speicher wird durch Adresse adressiert

Assoziativspeicher wird durch tag adressiert

33
Q

Virtueller Speicher: Linux (3)

A

Linux auf x86 (32 Bit):
● 0–3 GiB im user mode
● Stack wächst nach unten, Heap nach oben (=> malloc)
● Kernel nur im kernel mode zugreifbar,
abgebildet auf niedrige physikalische Adressen
● Memory-mapped devices(I/O-Map im kernel mode)

Linux auf x86-64 (64 Bit):
● Untere Hälfte des Adressraums für Prozess,
Obere Hälfte für Kernel
● Bei 48 Bit Adressen: je 128 TiB
● Bei 57-Bit-Adressen: je 64 PiB

34
Q

Virtueller Speicher: Windows NT (3)

A

Windows NT auf x86 (32 Bit):
● Virtual Memory Manager für Seitenverwaltung,
4 KiB–2048 KiB Seitengröße
● 2 GiB für Benutzerprozess, 2 GiB für Kernel
● Optional: 3 GiB für Benutzerprozess, 1 GiB für Kernel

Windows NT auf 64-Bit-Systemen:
● 4 KiB–2048 KiB Seitengröße
● Je 128 TiB für Prozess und Kernel (zweimal 247 Byte)
● Je nach Windows-Version zusätzlich eingeschränkt
● Unterschiede in Kernel-Speicheraufteilung ggü. 32 Bit

Verwaltung physikalischer Seitenrahmen
● Page Frame Number database (PFN database): Pro physikalischem Seitenrahmen (frame) ein Eintrag
● Zustände:
● Valid normal benutzt
● Free frei
● Zeroed frei und mit Nullen initialisiert
● Standby noch verfügbar
● Modified Standby und beschrieben
● Bad physikalisch fehlerhaft, kann nicht benutzt werden

35
Q

Shared Memory – wozu und wie? (3)

A

● Globale Variablen (Prozesskommunikation)
● Gemeinsamer Puffer (Semaphor-geregelter Zugriff)
● Gemeinsam genutzter Code (Programmbibliothek, …)
Betriebssystem-geregelter Zugriff! (memory mapping)

36
Q

Was ist Seitenersetzung? (3)

A

Wenn eine page fault ausgelöst wird:
1. Auswahl einer alten Seite und Schreiben auf Massenspeicher
2. Lesen der gesuchten Seite vom Massenspeicher
3. Überschreiben (Ersetzen) der alten Seite mit der gesuchten Seite
4. Aktualisierung der Seitentabelle mit der neuen Seitenadresse
5. Program counter des Prozesses auf den Befehl setzen, der die page fault auslöste
6. Übergabe der Kontrolle an den Benutzerprozess
7. Erneutes Abarbeiten der Adressreferenz

37
Q

Wieso gibt es Seitenersetzungsstrategien? (3)

A

Problem:
● Hauptspeicher ist begrenzt.
● Welche alte Seite soll durch eine benötigte Seite ersetzt werden?
● Im Grunde: Scheduling für einen „Seitenaustauschprozessor“
Definition: Die Folge von benötigten Seiten heiße Referenzfolge.
● Beispiel: Ein Prozess greife nacheinander auf die Seiten 1, 2, 3, 1, 4, 1, 3, 2, 3 zu.
Problem:
● Betriebssystem kennt die Zukunft der Referenzfolge nicht.
● Wenn Prozess zufällig immer die soeben ausgelagerte Seite referenziert, leidet die Performanz
● Glücklicherweise sind „normale“ Prozesse gutmütig und das Lokalitätsprinzip greift!

38
Q

Seitenersetzung : Was ist das Lokalitätsprinzip? (3)

A

Das Lokalitätsprinzip in der Informatik besagt, dass Programme dazu neigen, auf Speicheradressen zuzugreifen, die in der Nähe anderer kürzlich verwendeter Adressen liegen.

Dieses Prinzip wird oft bei der Optimierung von Speicherzugriffen verwendet, z.B. in Cache-Speichern und bei der Seitenverwaltung in Betriebssystemen.

39
Q

Seitenersetzungsstrategien: Optimale Strategie (3)

A

Optimale Strategie
● „Ersetze die Seite, die am spätesten wieder benutzt werden wird.“
● Wie der Name sagt: optimale Strategie, besser geht‘s nicht!
● Unmöglich zu implementieren, da die Referenzfolge im Voraus nicht bekannt ist!
● Aber: Messlatte für implementierbare Strategien

Siehe Folie 59

40
Q

Seitenersetzungsstrategien: FIFO (3)

A

First In First Out-Strategie
● „Ersetze die älteste Seite.“

41
Q

Seitenersetzungsstrategien: Second Chance und Clock (3)

A

Problem: Älteste Seiten werden doch recht häufig benutzt (z.B. Programmcode!)

Daher: Pro Seite „Kurzzeitstatistik“ notieren
● R-Bit: referenced
● M-Bit: modified
● Beide durch Timer oder Ereignis zurücksetzen

Second-Chance-Algorithmus:
● Bei R=1 wird Seite übersprungen,
R auf 0 gesetzt und Seite ans Ende der Warteschlange gesetzt

Clock-Algorithmus:
● FIFO-Warteschlange zu Ringpuffer schließen,
● Zeiger kreist darin und zeigt auf älteste Seite
bei R=1 wird R=0 gesetzt und Seite übersprungen
(Effiziente Implementierung von Second Chance!)

42
Q

Seitenersetzungsstrategien: LRU (3)

A

LRU-Strategie (Least Recently Used)
● „Ersetze die Seite, die am längsten nicht benutzt wurde.“

Problem bei Implementierung von LRU:
● Wie mitzählen, wie lange Seite nicht benutzt wurde?

Lösung in Hardware:
● Bei Seitenreferenz aktuellen Zeitstempel in Seitentabelle schreiben

Approximation in Software:
● Schieberegister in Seitentabelle
● Periodisch das R-Bit von links einschieben
● Problem: Schieben ist zwar deutlich schneller als Addition, liefert aber auch fragwürdige Ergebnisse:
● 11110000 darf länger bleiben als 00010000
● 01111111 wird von 10000000 verdrängt!

43
Q

Seitenersetzungsstrategien: NRU (3)

A

NRU-Strategie (Not Recently Used)
● „Ersetze die Seite mit geringster Nutzung in einem gemeinsamen Zeitraum.“
● Zeitraum: z.B. Zeit seit Prozessstart oder letztem periodischen Reset
1. Seiten in vier Klassen einteilen:
i. R = 0, M = 0 nicht genutzte Seite
ii. R = 0, M = 1 beschriebene Seite
iii. R = 1, M = 0 genutzte Seite
iv. R = 1, M = 1 genutzte beschriebene Seite
2. Aus Seiten mit kleinster Klasse (2⋅R+M) eine zufällige Seite ersetzen.

Problem:
● Wenig Differenzierung, da nur 4 Klassen

44
Q

Seitenersetzungsstrategien: NFU bzw. LFU (3)

A

NFU bzw. LFU (Not Frequently Used, Least Frequently Used)
● „Ersetze die Seite mit der geringsten Benutzungsfrequenz.“
● Frequenz entspricht der Benutzungsanzahl pro Zeitspanne (und ist proportional zur Benutzungswahrscheinlichkeit)
● Entspricht NRU mit mehr Klassen: feiner abgestuftes Verhalten!
Problem:
● Früher aktuelle Seiten dominieren zu lange, „träges“ Verhalten!
● Z.B. Initialisierungscode: Zu Beginn sehr oft verwendet, daher hoher Zahlenwert. Wird nur langsam verdrängt!
Lösung:
● Alterungsprozess einführen: Periodisch Zähler dekrementieren

45
Q

[Seitenersetzungsstrategien: Working Set
=> nicht wichtig] (3)

A

nicht wichtig

46
Q

Modellierung und Analyse: Optimale Seitenzahl (3)

A
47
Q

Was is Thrashing? (3)

A

Beobachtung:
● Bei sehr vielen Prozessen läuft plötzlich das Gesamtsystem langsamer, stattdessen starke Plattenaktivität.
Erklärung:
● Wartezeiten kehren sich um: Mehr Zeit für Seitenwechsel als für Prozessbearbeitung!

siehe folie 77

48
Q

Anti-Thrashing-Strategien (3)

A

Speicherangebot muss genügen für die working sets aller Prozesse
● Wenn das nicht gewährleistet werden kann: Anzahl Prozesse verringern!

Hardwaremaßnahmen
● Große Seiten à großes 𝑡$ wegen Lokalitätsprinzip (zusätzlich: seek time der Festplatte fällt dann weniger ins Gewicht!)
● Parallele Festplatten für Auslagerungsspeicher -> kleineres 𝑡%

Softwaremaßnahmen
● Lokaler Code (inline), lokale Adressreferenzen -> kleinere Wahrscheinlichkeit für Seitenwechsel

Betriebssystemmaßnahmen
● Working-Set-Modell:
Wenn working set durch Kurzzeitstatistik bestimmt werden kann: Nur so viele Prozesse zulassen, wie Hauptspeicher für working sets vorhanden!

49
Q

Virtueller Speicher: Windows NT (3)

A

Zustandsübergänge der Seitenrahmen

50
Q

Virtueller Speicher: Windows NT: Randprobleme (3)

A

Probleme, die man bei der Implementierung beachten muss:
● Instruktionen nach page fault neustarten
● Seiteneffekte: „Lese durch Adressregister 𝐴 gegebene Speicherstelle und inkrementiere 𝐴 danach“ è 𝐴 bei page fault bereits inkrementiert?

Seiten, die nicht ausgelagert werden dürfen
● Seiten, die aktuell Quelle oder Ziel von DMA sind
● Gemeinsame Bibliotheken, shared memory

Optimierungen kapseln als page daemon
● Alle Optimierungslogik in einem zentralen Prozess bündeln, der z.B. in Lastpausen läuft
● Bei drohender Speicherknappheit Seiten auslagern gemäß Ersetzungsstrategie
● Vorausschauend Seiten einlagern (prepaging),
● Page out pool verwalten

51
Q

Seitenersetzungsstrategien bei Unix: (Open)Solaris (3)

A

Nutzt demand paging und globale Seitenersetzungsstrategie
● Viele Parameter sind vom Administrator konfigurierbar

Kernel-Threads im Hintergrund:
- page scanner:
● Aktiviert, wenn freier Speicher < lotsfree (Standard: ‘⁄
() des Speichers) fällt
● Markiert auszulagernde Seiten (Clock-Algorithmus mit zwei Zeigern: erster setzt R=0 und M=0, zweiter prüft die Bits und markiert als „auslagern“)
● Aufrufgeschwindigkeit und Umlaufgeschwindigkeit der Zeiger nehmen bei anhaltender Speicherknappheit zu
● Sehr häufig geteilte Seiten (shared libraries!) werden übersprungen (mehr als po_share mal geteilt, initial: 8)

  • page out thread: Schreibt auszulagernde Seiten auf swap device
  • memory scheduler: Lagert ganze Prozesse aus (swapping):
    ● „Soft swapping“:
    Wenn 30-Sekunden-Durchschnitt des freien Speichers < desfree (Standard: lotsfree / 2):
    Prozesse, die schon länger als maxslp (Standard: 20 Sekunden) schlafen, werden ausgelagert
    ● „Hard swapping“:
    Wenn > 2 Prozesse auf CPU warten, 30-Sekunden-Durchschnitt des freien Speichers < desfree und Anzahl der Seitenersetzungen > maxpgio:
    Kernel entlädt Module, trimmt Caches und lagert Prozesse aus, bis desfree erreicht
52
Q

Seitenersetzungsstrategien bei Unix: Linux (3)

A
  • Nur paging, kein swapping (Auslagern ganzer Prozesse)
  • demand paging
  • Physikalischer Speicher (Seitenrahmen) wird mit Buddy-System zugeteilt!

kswapd: Kernel-Thread im Hintergrund für globale Seitenersetzungsstrategie:
● Page frame reclamation algorithm (PFRA): 4 Seitenkategorien
1. Löschbar
2. Synchronisierbar
3. Auslagerbar (swappable)
4. Nicht ersetzbar (Kernel oder locked pages)
● Bei jedem kswapd-Durchlauf werden max. ca. 32 Seiten ersetzt
● Kategorien 1–3 nacheinander mit Clock-ähnlichem Algorithmus durchlaufen, bis genügend Seiten erfolgreich ersetzt sind
(erster Durchlauf: R-Bit rücksetzen, zweiter Durchlauf: R-Bit überprüfen)

● Physikalischer Speicher (Seitenrahmen) wird mit Buddy-System zugeteilt!

53
Q

Seitenersetzungsstrategien: Windows NT (3)

A

Nutzt demand paging mit clustering
● Bei Seitenfehler auch benachbarte Seiten einladen è größere effektive Seitenlänge!
● Zusätzlich: Prefetcher, um bei späteren Anwendungsstarts gleich die benötigten Seiten einzulagern à teilweise auch prepaging

Lokaler Clock-Algorithmus mit Tendenzen hin zu LRU
● Lokales Seitenmanagement pro Prozess subjektiv als gerechter empfunden,
● Auslagerung häufig benutzter Seiten gemildert durch page out pool

Automatic working set trimming bei Speicherknappheit
● Alle Prozesse mit aktueller Seitenzahl („working set“) > Minimum verkleinern
● Anzahl der page faults wird genutzt, um Größe des working set dynamisch zu vergrößeren/verkleinern
● Gewissermaßen eine „globale Erweiterung“ des lokalen Ersetzungsmechanismus!
● Automatic Copy on Write zum Vermeiden unnötiger Kopien
● Win32-Subsystem: statische Daten von DLLs nur beim Schreiben tatsächlich kopieren
● POSIX-Subsystem: fork(): copy on write für Datenseiten verhindert Kopieren von Elternseiten für Kinder

54
Q

Speicherschutz (3)

A

Virtueller Speicher bisher:
● Adressraum des Nachbarn kann nicht adressiert werden
● Ausnahme: shared memory, aber da ist das ja gewollt!

Zusätzlich:
- Zugriffsrechte für Seiten zuordnen und diese in Hardware überwachen!
● Lesen
● Schreiben
● Ausführen (z.B. via NX-Bit auf x86: No eXecute)
● Warum sollten die Daten ausführbar sein, warum der Programmcode geändert werden können?
- Copy-on-Write umsetzen über Zugriffsrechte:
● Seite als nicht schreibbar markieren, bei Schreibversuch also page fault à Seite kopieren, Zugriff wiederholen!
- Guard pages:
● Absichtlich ungültiger Seiteneintrag, um Zugriffe abzufangen

55
Q

Speicherschutz: Windows NT (3)

A

● Zuvor gesehen: Jede Seite wird vor Zuweisung an Prozess mit Nullen überschrieben

● Hardwareunterstützung für NX-Bit wird seit Windows 8 vorausgesetzt

● Virtual Memory Manager unterstützt:
- Execute Only
- No Access
- Bei Zugriffsversuch wird Ausnahme ausgelöst
- Guard Pages:
- Wie No Access, aber nach Zugriff wird Guard-Page-Status automatisch wieder entfernt
- Für einmalige Zugriffsalarme (z.B. zur Warnung, wenn Datenstruktur droht zu groß zu werden)
● Copy on Write
● API, um Zugriffsrechte zu ändern: VirtualProtect()

56
Q

Speicherschutz: Unix (3)

A

NX-Bit wird z.B. unterstützt von
● Linux, macOS, Solaris, OpenBSD, …

OpenBSD geht beispielsweise noch viel weiter:
● W^X (𝑊 ⊕𝑋): Jede Seite ist entweder schreib- oder ausführbar, aber nicht beides!
● Guard pages nach jeder Speicheranforderung ≥ 1 Seite
● Stack canaries nach jedem Frame gegen stack smashing

Linux unterstützt W^X optional via SELinux

57
Q

Speicherverwaltung: Welche Einteilungen gibt es? (3)

A
  • Anwenderprogramme: Interner Speicher: garbage collector
  • Hauptspeicher: Aufteilung auf Prozesse, globaler vs. lokaler Speicher
  • Massenspeicher: Internes Management bei Dateien (Datenbanken)
58
Q

Speicherverwaltung: Welche grundsätzlichen Strategien gibt es? (3)

A

● Früher: Komplette Speicherbelegung (Prozess) auf Massenspeicher auslagern (swapping: langsam)
● Heute: Speicherteile (Prozessteile) auslagern

59
Q

Speicherorganisation: Wie kann man die Zuordnung organisieren? (3)

A
  1. Durch feste Tabellen: Tabelleneinheit (z.B. 1 Bit) gibt Zustand einer Speichereinheit (z.B. 32-Bit-Wort) an
  2. Durch verkettete Listen: WIIE???
60
Q

Wie bewertet man die Belegungsstrategien?

A

Simulationen: FirstFit ist besser als NextFit, WorstFit & BestFit
- Bei Kenntnissen über Speicheranforderungen: QuickFit
- Leistungsfähigkeit des Buddy-Systems:
- Verhältnis aus Mittlerer Anforderung und tatsächlich dafür belegtem Speicher?
- Überschlagsrechnung!

61
Q

Adresskonversion: was für Probleme und Lösungen gibt es?:

A

Problem: Multi-Level-Tabellen sind langsam und benötigen für jeden Prozess extra Tabellenplatz
● 2-stufig: 67 % Overhead, 3-stufig: 75 % Overhead
● 4-stufig: 80 % Overhead, 5-stufig: 83 % Overhead

Lösung: Invertierte Seitentabellen
● Geordnet nach physikalischen Seiten(rahmen)
● Nimm nur die erfolgreichen Zugriffe