• Keine Ergebnisse gefunden

5.1 Speicherverwaltungsverfahren 5Z ENTRALSPEICHERVERWALTUNG

N/A
N/A
Protected

Academic year: 2021

Aktie "5.1 Speicherverwaltungsverfahren 5Z ENTRALSPEICHERVERWALTUNG"

Copied!
25
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

5 Z

ENTRALSPEICHERVERWALTUNG

5.1 Speicherverwaltungsverfahren

5.1.1 Anwendung der Verfahren 1) Betriebssysteme

- Zentralspeicher

* Codebereich für Programme

* Datenbereich für Prozesse

* Bereiche für BS-interne Verwaltung - Peripherspeicher

* Verwaltung des physikalischen Speichers

2) Laufzeitsysteme höherer Programmiersprachen - Laufzeitkeller

* Prozedurschachteln

* Variable - Halde

z. B. Pascal: new, dispose 3) Anwendungsprogramme

- Darstellung programminterner dynamischer Daten

z. B. new, dispose in Programmiersprache nicht verfügbar

=> Effizienzsteigerung

- Verwaltung von Speicherbereichen innerhalb von Dateien

5.1.2 Operationen Gegeben:

Speicher array [ lo...up ] of word;

Zusammenhängender Speicher; linear adressierbar Ziel:

Aufteilung in Stücke (Speicherbereiche) entsprechend "Belegen"- und "Freigeben"- Operation

BELEGEN: Länge -> Adresse, Anzeige FREIGEBEN: Adresse -> Anzeige

Speicher 0 1 2 3

up-1 up

Belege (3) => 0, ok

Belege (1000) => 3, ok

Belege (5) => x, false 5.1.3 Parameter

(2)

5.1.3.1 Reihenfolge der Operationen 1) Freigeben am Ende

Beispiel:

BELEGEN(10) => S1

BELEGEN(100) => S2 Anforderungsphase (keine Freigabe) BELEGEN(20) => S3

BELEGEN(15) => S4

FREIGEBEN ( {S1, S2, S3, S4} ) Freigabephase (keine Belegung)

2) Belegen / Freigeben kellerartig Beispiel:

BELEGEN(10) => S1 BELEGEN(100) => S2 FREIGEBEN(S2)

BELEGEN(20) => S2 BELEGEN(15) => S3 FREIGEBEN(S3)

FREIGEBEN (S2) FREIGEBEN (S1)

3) Beliebige Reihenfolge Beispiel:

BELEGEN(10) => S1 BELEGEN(100) => S2 FREIGEBEN (S1)

BELEGEN(20) => S3 BELEGEN(15) => S4 FREIGEBEN(S2)

FREIGEBEN(S4) FREIGEBEN(S3)

5.1.3.1 Größe der Anforderungen 1) Stücke konstanter Länge

S1 S2 S3 BELEG(C) => S1

BELEG(C) => S2 BELEG(C) => S3

2) Vielfache einer konstanten Einheit BELEG(1*C) => S1 BELEG(2*C) => S2

S1 S2

3) Zweierpotenzen einer konstanten Einheit

(3)

S1 S2 BELEG(C * 2 ) => S1

BELEG(C * 2 ) => S2 0 1

4) Variabel lange Stücke BELEG(1) => S1 BELEG(5) => S2 BELEG(2) => S3

S1 S2

S3

5.1.3.3 Belegungsdarstellung 1) Art

- Vektor - Tabelle 2) Ort

- separater Speicherbereich (reservierter Teil für Verwaltungsdaten) - in verwalteten Speicherbereichen

5.1.3.4 Belegungsstrategie 1) First Fit

Der erste zusammenhängende Speicherbereich, der die Belegungsanforderung erfüllen kann wird verwendet.

2) Best Fit

Der Speicherbereich, der durch die Belegung am wenigsten Speicher verschwendet wird verwendet.

3) Random Fit

Ein passender Speicherbereich wird zufällig ausgewählt.

4) Next Fit

Wie First Fit, jedoch mit zyklischem Suchvorgang, d. h. jeder Suchvorgang beginnt, wo der Vorgänger endete. Next Fit soll ungleichmäßige Stückelung zu Beginn des Speichers vermeiden.

5.1.3.5 Speicherverschnitt 1) interner Verschnitt

= nicht benutzter, aber als belegt gekennzeichneter Speicher.

2) externer Verschnitt

= als frei markierter Speicher, der aber (wegen Zerstückelung) für Anforderungen nicht genutzt werden kann.

5.1.3.6 Wiedereingliederung

im allgemeinen 3 Typen von Speicherbereichen:

(4)

- belegte Bereiche - freigegebene Bereiche

- noch nicht vergebener, unzerstückelter Speichervorrat Problem: Zerstückelung durch freigegebene Bereiche

Lösung: Freispeichersammlung

- in Zeiten geringen Arbeitsanfalls

- nebenläufig durch eigenständigen Prozeß - bei Erschöpfung des Vorrats

5.2 Adressierungsmechanismen

- direkt - streuend

- relativ - virtuell

Adreßraum Speicherraum (HP)

000 000

FFF FFF

000 000

xxx xxx

???

5.2.1 Direkte Adressierung

logische Adresse (Programmadresse) = physikalische Adresse (Speicheradresse)

0 1 2

3 JUMP 6 3

4 44

5 5

6 B: MOVE 6

7 (11) -> R 7

8 8

9 9

10 10

11 A: DC 5 11

12 12 13

Probleme :

- in Speicher geladenes Programm kann nicht verschoben werden => Zerstückelung des Speichers - logischer Adreßraum muß zusammen- hängend im Speicher dargestellt sein -> ungenutzte Stücke

Lösung :

Lagenunabhängige Adressierung - relativ

- streuend

Festlegung der Programmadressen a) durch Compiler/Assembler-Programm

Nachteil : Speicherbereiche für Code und Daten liegen mit Übersetzung fest

(5)

=> keine Freiheit beim Laden, physikalischen Speicher auszuwählen => Gefahr von Konflikten

wird i.a. nur noch bei dedizierten Systemen (e.g. µRechner in Nähmaschinen) angewendet.

b) zum Zeitpunkt des Ladens

- Compiler/Assembler erzeugen verschiedenen Code : - Markierung von Codeverweisen, Datenverweisen

- Adreßfestlegung bezüglich logischem Adressraum (0 .. m) - Lader legt physikalische Bereiche fest

z.B.: p .. q für Code u .. v für Daten - Lader modifiziert Code beim Laden

z.B.: a + p für Codeverweise (Sprungziele) a + u für Datenverweise

Hiermit besteht Lageunabhängigkeit bis zum Zeitpunkt des Ladens; danach i. a.

keine Verschieblichkeit mehr, da die Markierungen von Code- und Datenverweisen im gespeicherten Code nicht mehr vorhanden sind.

5.2.2 Relative Adressierung

physikalische Adresse = Basisadresse + log. Adresse

Adreßraum +

Verschieberegister zum Ausführungszeitpunkt

Speicherraum

(Programm muß komplett und zusammenhängend im Hauptspeicher stehen.)

- Code bleibt auch nach dem Laden noch verschiebbar, da Adreßmodifikation zur Laufzeit durchge-

führt wird.

- Nach Verschieben müssen lediglich die Basisadressen berichtigt werden Speicher

4

1) Lader lädt Programm, das log. Adressen enthält

2) Lader belegt Basisadreßregister

3) Prozessor addiert vor Speicherzugriff Basis- adresse zu logischer Adresse

0 1 2

3 JUMP 3 0

4 1

5 2

6 MOVE (8) -> DO 3

7 4

8 5

9 6

10 DC 20 7 11

12

- Wenn getrennte logische Adreßräume für Code und Daten vorgesehen sind, werden mehrere Basisregister benötigt (z.B. Basisregister-Code, Basisregister-Daten)

- Vorteil: Code verschiebbar

(6)

Nachteil: Schieben aufwendig, Stückelung aber nicht möglich - Variante zu separatem Basisregister :

Befehlszähler relativ,

Befehlzähler wird als Basisadreßregister verwendet Beispiel:

BS A: 10 KB B: 10 KB C: 10 KB

frei 25 KB

D: 30 KB -> kann nicht geladen werden, da zu wenig frei

wenn B fertig, kann D immer noch nicht geladen werden, da keine zusammenhängende 30 KB frei sind;

erst wenn auch C fertig ist kann D geladen werden.

5.2.3 Streuende Adressierung

=> Stückelung logischer Adreßräume im physikalischen Speicher

=> streuender Transformationsmechanismus

Vorteil : Speicherausnutzung auch ohne schieben von Stücken gewährleistet.

Arten der Transformation:

- gleichlange Teile aus eindimensionalem Adreßraum werden abgebildet - variabel lange Teile aus eindimensionalem Adreßraum werden abgebildet - variabel lange Teile aus mehrdimensionalem Adreßraum werden abgebildet Einstufige Umsetzung => Zuordnungstabellen für streuende Transformation 5.3.2.1 Stückelung in gleichlange Teile bei eindimensionalem Adreßraum Adreßzuordnung über Seitentabelle:

Programm 1

Programm 2 Seite

(Page)

Hauptspeicher

P1 P1 P1 P1 P2P2 P2 P1 P1 P2

Kachel (Frame)

Typische Seitengrößen : 512 B, 1 KB, 2 KB, 4 KB

Prinzip :

(7)

K Seite Distanz

Prg.-Adresse

Transf. Tabelle Seiten-Nr.

<--->

Kachel-Nr.

HS-Adresse

0 k-1

k | k

11

z.B.: Anzahl der Bits k = 11 => Seitengröße 2K (2 ) 12

k = 12 => Seitengröße 4K (2 )

Seitentabelle

Bsp.: Seitengröße 4K Seitentabelle

4 4 4 4 0 1 2 5 0 0 3 A 0 4 3 8 0 0 0 5 0 0 0 7 0 2 8 0 0

1 2 3 4 5

Programmadresse 2 3 3 3 5 6 8 0 1 2 4 0 0 9 2 0

4 KB = 12 Bit Distanz Seite

Speicheradresse 438 333 280 680 03A 240 125 920

Aufteilung des Speichers in mehrere logische Adreßräume - bei Seitentabellenumsetzung

a) Je logischen Adreßraum eigene Seitentabelle

b) Nur eine Seitentabelle, aber je Adreßraum zusätzlich eigenes Basisregister - bei Kacheltabellenumsetzung (nicht Prüfungsrelevant)

Nur eine Kacheltabelle, Basisadreßregister je log. Adreßraum

Speichereffizienz-Betrachtung

große Seiten hoher interner Verschnitt

kleine Seiten hoher Tabellenaufwand

L = Länge Seitentabelleneintrag (im Skript = 1) sl = Seiten / Kachel-Länge

(8)

iV = interner Verschnitt im Mittel iV = s / 2 p = Speicherlänge (-> Programmlänge)

tl = Länge der Kacheltabelle bzw. Seitentabelle tl = p / sl v = mittlerer Gesamtverlust

v = 1/p * (L* p/sl + sl / 2) 2*L

p

2*p*L v =

s = opt

Minimum bei l Beispiel:

p = 5000 sl = 100 v = 0,02 = 2%

2) Stückelung in variabel lange Teile bei eindimensionalem Adreßraum

Speicher

log. Adreßraum 0

40 55 BP = BP = BP =

0 1

2

log. Adresse z.B. 70

suchen des passenden Eintrags

+ 70 80 Stücktabelle

0 40 55

20 - 0 90 - 40

135 - 55

150 20

90

135

Suche durch Vergleich :

bi <= log.Adr. < bi+1

BP : Basisadresse des Programmstücks i

BS : Basisadresse des zugeordneten Speicherteils i Ap : Programmadresse

As : Speicheradresse Es gilt :

AS = BSi + (AP - BPi) z.B. Ap = 60

=> As = 135 + (60 - 55) = 140

realisierte Variante : Teilseiten (CDC 3300)

(9)

Neben der normalen Seiteneinteilung wird zusätzlich eine kleinere Einheit verwendet (Teilseite T).

T entsteht durch fortgesetztes halbieren der Seitengröße S.

Die Stückelung eines Programms geschieht in Seiten und einer letzten Restseite R mit R <

S und

R = K * T, K in |N. Seiten und Teilseiten können bei ganzzahligen Vielfachen von T beginnen (Teilseitengrenzen).

Programm Speicher

1 Seite 1 Seite 1 Seite 3/4 S.

A B C R

3,6 Seiten T = 1/4 Seite

B

C

R

A Kachel i

Kachel i+1 Kachel i+2

Übung : Entwickeln Sie ein konkretes Umsetzungsverfahren für S = 4K und T = 256B a) Struktur der Seitentabelle

b) Umsetzungsverfahren 4K = 212 256 = 28

K+ = Konkatinieren und addieren des überlappenden Bytes Ap = Programmadresse

As = Speicheradresse

Ap :

Teilseite Distanz

Seite Distanz

11 7 0

Ap : Seite Distanz K+

Teilkachelnummer As

(10)

Seitentabelle 0 1 0 0 1 1 2 0 0 4 2 0 0 3 6 3 0 2 5 2

Ap 000 2 00 000 7 00 001 A 00 002 F 35 003 E 20

As 100300 100800 200E00 004535 026020

200 4 A 00 200 E 00

Seite

Gewinn : Verringerung des Speicherverlustes

v = 1/p * (p/sl + T/2) T anstatt S, da T kleiner als S => besser T = S/K

2 v = p*K

opt S = 2*p*K

opt

z.B. p = 5000; K = 4 => Sopt = 200 vopt = 1%

K = Teilungsfaktor

Zweistufige Adreßumsetzung

Vorteil eindimensionaler logischer Adreßräume :

Verfahren mit guter Speicherausnutzung anwendbar

Vorteil zweidimensionaler logischer Adreßräume : (nicht Prüfungsrelevant) Erweiterte Funktionalität für Nutzung

Nachteil : ungestückelte Speicherung der Segmente => schlechte Speicherausnutzung

Vorteile beider Verfahren bei zweistufiger Umsetzung :

- Segmenteinteilung wird von Seiteneinteilung überlagert oder - Seiteneinteilung wird von Segmenteinteilung überlagert Speicher

Segment- Tabelle

Seitentabelle

Seg.-Nr. SeitenNr Distanz

+

+

(11)

Beispiel:

Seitengröße 2K, Segmentgröße 64K, 24 Bit-Adressen

0 0 0 0´ 0 0 1 1´ 0 0 1 0´ 0 1 1 1´ 0 0 0 0´ 0 1 1 1 Ap :

Segment Seite Distanz

Segmenttabelle

Seitentabelle 03

Speicheradresse Seitentabelle 03

0000 0000 0001 0001

0000 0000 1000 1111 0000 0111 0

1 2

0 1 2 3 4

pro Prozeß: 1 Segment + max. 256 Seitentabellen Vorteile :

- flexible Stückelung, Platz für nicht genutzte Seitentabellen kann eingesetzt werden - gemeinsame Speicherbereiche können effektiver realisiert werden

Shared Memory

Verschiedene Segmenttabellen zeigen auf dieselbe Seitentabelle Segtab P1

shared Seitentabelle

Segtab P2

(12)

5.3 Speicherschutz

- Speichertrennregister - Speichergrenzregister - Speicherschutzschlüssel - Speicherschutzmasken

- Schutz bei verschiedenen logischen Adreßräumen Problem :

Zur Laufzeit soll sichergestellt sein, daß ein Prozeß nur auf ihm zugeordnete Speicherbereiche

zugreift.

Schutz gegen

- Zerstörung / Störung des Betriebssystems - Zerstörung / Störung anderer Prozesse

- unberechtigte Lesezugriffe (Datenschutz) auf Daten anderer Prozesse oder des Betriebssystems

Test zur Laufzeit erfordert Hardware-Unterstützung

- Integration der Schutzmechanismen in Befehlsbearbeitung-Adresszugriffs- Mechanismus des Prozessors

- Bei Adreßumsetzungsmechanismen Kopplung mit Schutzmechanismus sinnvoll

5.3.1 Speichertrennregister

- Gliederung des Speichers in 2 Teile : geschützter Bereich und

ungeschützter Bereich

- Anwendung im allgemeinen um das Betriebssystem gegen Nutzerprogramme zu schützen

0 1 :

n Trennregister

geschützter Bereich

ungeschützter Bereich

- Überwachung durch Vergleich vor Zugriff

Adresse Trennregister

> = ? ja

nein

Zugriff

Interrupt

(13)

5.3.2 Speichergrenzregister

- in Kombination mit Adreßumsetzung per Basisregister

Basisregister gibt untere Grenze des ungeschützten Bereichs an

- zusätzlich: Grenzregister enthält obere Adresse des ungeschützten Bereichs

geschützt

geschützt ungeschützt

Basisregister

Grenzregister

- Umsetzung garantiert: Adresse >= Basisadresse

- nachgeschalteter Vergleich prüft ob Adresse <= Grenzadresse

log. Adresse

Basisregister

Grenzregister +

<= ? nein

Interrupt

Speicher- zugriff

ja

5.3.3 Speicherschutzschlüssel

- Einteilung des Speichers in Kacheln, jeder Kachel i ist ein Kennzeichen Ki zugeordnet - Jedem Prozeß p ist ein Schlüssel Sp zugeordnet

- bei Zugriff: Test ob Ki Zugang mit Schlüssel Sp erlaubt

Kacheln K1

K0

K2 K3

Speicher

(14)

5.3.4 Speicherschutzmaske

- Jedem Prozeß ist eine Maske als Bitmap für die Kacheln zugeordnet, e.g.

M[ i ] = false : Zugriff auf Kachel i verboten true : Zugriff auf Kachel i erlaubt

Speicher Maske für

Prozeß p 0 1 2 3 4 5

0 0

0

0 1 2 3 4 5

- auch mehrere Masken je Prozeß möglich : - Leseerlaubnis

- Schreiberlaubnis

5.3.5 Schutz bei verschiedenen logischen Adreßräumen - Adreßumsetzung durch Segment / Seitentabellen

- zu den bei Adreßumsetzung besprochenen Mechanismen kommt lediglich eine Tabellenlängen-

überwachung hinzu

Beispiel : Stückelung in gleichlange Teile bei eindimensionalem Adreßraum

Seitentabelle

Länge der Tabelle Seiten-Nr. Distanz

Ap:

nein Interrupt ja

Einstich

Speicheradresse +

< ?

- weitere Möglichkeiten

genauere Aufschlüsselung der Zugriffsrechte - Schreibrecht

- Leserecht

durch zusätzliche Einträge in die Tabelle

(15)

5.4 Virtuelle Speicher

- Problematik beschränkten Speichers und Lösungskonzepte - Overlay

- Swapping - Paging

- Virtueller Speicher : Prinzip - Kachel- und Seitentabellen - Operationen

- Ausführung der Operationen - Auswahl auszulagernder Seiten

- Problematik - Strategien

- Leistungsbetrachtungen - Seitentauschgrad - Trashing

- Modelle

5.4.1 Problematik beschränkten Speichers und Lösungskonzepte a) Problematik

- physikalischer Speicher ist in Kapazität durch Speicherausbau beschränkt (Adreßraum i. a. 0 .. pmax )

- logische Adreßräume sind durch max. Adressierkapazität beschränkt log. Adreßraum < 0 .. lmax

mit lmax = 2n - 1

und n = Anzahl Bits einer Adresse Problem 1 :

Für Code- und/oder Datenbereich eines Prozesses wird logischer Adreßraum benötigt, der

physikalischen Speicher übersteigt.

Problem 2 :

Während des Betriebs übersteigt die Summe der von allen Prozessen angeforderten Speicher-

bereiche die Kapazität des physikalischen Speichers.

Problem 3 :

Für Code- und/oder Datenbereich eines Prozesses wird logischer Adreßraum benötigt, der die

max. Adressierungskapazität übersteigt.

b) Lösungskonzepte generell

- Verwendung von Sekundärspeicher (e. g. Platte) zur Ablage logischer Adreßräume um Engpaß

des physikalischen Speichers zu umgehen.

- Von einem Prozeß momentan benötigte Teilstücke von Code- und Datenbereichen werden vor

Zugriff in einen Zentralspeicher geladen (eingelagert).

- Fehlt im Zentralspeicher der Platz zur Einlagerung eines Teilstücks, wird ein momentan nicht

(16)

benötigtes Teilstück vom Zentralspeicher in den Sekundärspeicher zurücktransferiert (ausgelagert).

- Vorteile

* Kosten/Bit für Sekundärspeicher gering

* gewisse Unabhängigkeit der Nutzerprogramme von Speicherausbau - Nachteile

* Aufwand zur Verwaltung der Teilstücke und des Sekundärspeichers * Aufwand zur Ein- und Auslagerung von Teilstücken

Overlay-Konzept

(programmierte Überlagerung von Teilstücken im Speicher)

* löst Problem 1 und 3, kann zur Lösung von Problem 2 nur mittelbar beitragen.

* erfordert spezielle Programmstruktur, d.h. die Überlagerung und Segmentstruktur muß bei

Programmentwurf vorgesehen werden

A B

C C

B D E

A

H F

G

A B

C D E F G H I

J K J L

I K I L

J für Code reservierter Zentralspeicher

für Daten reservierter Zentralspeicher

Code

Daten

Zugriff:

lagert I ein ggf. L vorher aus

Sprung Lagere C ein

Überlagerungsstruktur

Sprung

Seg- mente

auf Datei

Zugriff

* weder Hardware- noch Betriebssystemunterstützung notwendig

(17)

Swapping - Konzept

(Ein-/Auslagerung ganzer Code- und Datenbereiche)

* löst nur Problem 2

* nur vertretbar bei zeitunkritischen Prozessen

* Ein-/Auslagerung automatisch (BS-Unterstützung)

* oft auch in Kombination mit virtuellem Speicher (z.B. VAX / VMS)

* keine Hardwareunterstützung notwendig Zentral-

speicher

Codebereich Prozeß P1

Datenbereich Prozeß P1

P1 aus- gelagert

P1 einge- lagert

Datei: Swap File

auslagern

auslagern

einlagern

einlagern

(18)

Paging - Konzept (Virtueller Speicher)

* löst Problem 1 und 2

* Zeitaufwand paßt sich der Auslastungssituation an

* keine speziellen Maßnahmen im Programm nötig

* max. Adressierkapazität kann für logische Adreßräume bei Verfügbarkeit von entsprechenden

Sekundärspeicher erschlossen werden

Teil- stücke Kacheln

Ein / Aus- lagerung automatisch

Teilstücke : Seiten (Pages)

1 : 1 Abbildung

0

k logischer Adreßraum Datei :

PageFile Speicher

* Hardware und Betriebssystemunterstützung

c) Virtueller Speicher

1) Verwaltung des Zentralspeichers

Der Zentralspeicher ist eingeteilt in Kacheln gleicher Länge lk, i. a. lk = 2i Zur Verwaltung dient die Kacheltabelle, die i. a. ebenfalls im Zentralspeicher (in reservierten

Kacheln) untergebracht ist.

Speicher

Kacheltabelle Kachel 0

Kachel 1 Kachel 2 ...

(19)

Je Kachel ein Eintrag in Kacheltabelle :

- Kachelzustand : frei, belegt (leerend, füllend) - Besitzer : Verweis auf Prozeß, falls belegt - Seitennr.: Nummer der belegenden Seite - Wartende : Liste wartender Prozesse 2) Verwaltung des Seitenspeichers (PageFile) z.B.: mittels Vektorverfahren

PageFile ist eingeteilt in Blöcke gleicher Länge lB = lk 3) Verwaltung des logischen Adreßraums

Je Adreßraum eine Seitentabelle. Die Lage der aktuellen Tabelle(n) ist dem Prozessor bekannt

(Tabelle(n) gehören zum Prozeßkontext).

Seite 0 Seite 1 Seite 2 Seite 3 ...

Speicherbereich, logischer Adreßraum eingeteilt in Seiten

gleicher Länge l = l = l S B K

Je Seite ein Eintrag in Seitentabelle :

Ein / Auslagerungszustand : eingelagert, ausgelagert Strategieunterstützung,

z.B. Referenzindikator : Zugriff, kein Zugriff Modifikationsindikator : verändert, unverändert Kachelnummer: Kachelnummer falls eingelagert PageFile-Adresse : Adresse der Seite in PageFile

0 X X X Block 1000 1 0 0 100 Block 1004 1 1 0 102 Block 2000 1 1 1 108 Block 2001 0 X X X Block 900 Seite 0

Seite 1 Seite 2 Seite 3 Seite 4 :::

anwesend referenziert

modifiziert Kachelnr.

PF-Adresse

(20)

4) Adreßzugriff log. Adresse

Seitennr. Distanz Seitentabelle

nicht anwesend ! Interrupt : Seitenfehler

anw Kachel

1 0

100 100

PF-Ort +

PF-Ort phys.

Adresse

5) Seitenfehler - Aktion

Fordere leere Kachel an --> K ; Transferiere Seite von PF-Ort nach K ; Aktualisiere Verwaltungsdaten :

Seitentabelle, Kacheltabelle.

Setze mit Seitenfehler unterbrochenen Prozeß fort.

6) Kachelanforderung

Suche leere Kachel --> K, wenn keine freie Kachel verfügbar : - wähle Kachel K mit Seite S zum Räumen

- falls S modifiziert : Transfer nach PageFile 7) Realisierung der Seitenfehler-Reaktion

A] als hochpriore Interrupt-Routine - verursachender Prozeß wird blockiert

- Transfer wird per Interrupt-Routine angestoßen

- während Transfer kann ein anderer Prozeß weiterarbeiten - Transfer-Ende führt zur Fortsetzung des blockierten Prozesses

Problem : - ein anderer Prozeß kann ebenfalls einen Seitenfehler erzeugen

- Peripherspeicher-Transfers werden oft zu Optimierungszwecken in der Reihenfolge

vertauscht.

--> Kachelzwischenzustand ´leerend´

B] mit selbständigen Prozessen - Prozeß : Seitentauscher

erhält von Seitenfehler-Interrupt-Routine Aufträge zum Seitentausch wickelt Aufträge parallel zu übriger Prozeßbearbeitung ab

--> ´kurze´ Interrupt-Routine, entkoppelte Systemstruktur - Prozeß : Kachelräumer

räumt unabhängig von Seitenfehlern ´überfällige´ Kacheln --> Vorrat an freien Kacheln

d) Auswahl auszulagernder Kacheln

- Ziel : durch geeignete Auswahlstrategie wird die Anzahl der Transfers minimal gehalten

(21)

- optimale Strategie :

Es wird immer die Seite zur Auslagerung gewählt, die in Zukunft am längsten nicht mehr benötigt

wird.

- i. a. nicht realisierbar, da Programmablauf nicht vorhersehbar.

Beispiel : Ein Prozeß P mit log. Adreßraum Seite 0..4 stünden die Kacheln 0..2 zur Verfügung. Die Referenzfolge sei im vorraus bekannnt.

Referenzfolge 0 1 4 3 2 3 0 1 0 3 0 2 Seite in Kachel

0 0 0 0 0 0 0 0 0 0 0 0 2 Seite in Kachel

1 - 1 1 1 2 2 2 1 1 1 1 1 Seite in Kachel

2 - - 4 3 3 3 3 3 3 3 3 3 Überlagert wird die Seite, die am weitesten entfernt ist.

Die Referenzfolge {r1, r2, .... , rn} ist eine Folge von Seitennummern, die bei der Ausführung eines

Prozesses entsteht. Umfaßt ein Prozeß n Seiten, dann gilt ri  (0,1,2, ... , n-1).

Beispiel (Prüfung !)

n = 5 Seitengröße = 4K

In dem Zeitintervall [ti+1 , ti] werden folgende Adressen angesprochen : 2220, 2450, 4680, 0020, 3720, 1280, 4AB0

Gesucht : Referenzreihenfolge : 2 , 2 , 4 , 0 , 3 , 1 , 4 bei Seitengröße = 2K : 4 , 4 , 8 , 0 , 6 , 2 , 9

0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 2

4

- realisierbare Strategie

Entscheidungsgrundlage : bisher aufgetretene Referenzfolge Fenster der letzten n Referenzen

- Häufigkeit (LFU) - Zeitpunkt (LRU) - Existenz (RNU) - Zufall (FIFO)

LFU - Strategie (Last Frequently Used)

(22)

Seitentabelle Seite 0

Seite 1 Seite 2 ...

Zähler

- bei Zugriff auf eine Seite

zähler[seitennr] := zähler[seitennr + 1]

falls alle zähler > 0 : alle um ´1´ erniedrigen - Wahl einer zu räumenden Kachel :

anwesende Seite mit zähler = 0 - Vereinfachung :

* zähler zu Kachel zuordnen

* bei Seitentausch alle Zähler rücksetzen - wegen hohem Aufwand selten realisiert

0 1 4 3 2 3 0 1 0 3 0 2 Seite in Kachel

0 0 0 0 0 0 0 0 1 1 1 1 2 Seite in Kachel

1 - 1 1 1 2 2 2 2 0 0 0 0 Seite in Kachel

2 - - 4 3 3 3 3 3 3 3 3 3

LRU - Strategie (Last Recently Used)

Keller der Länge k(+1) mit Referenzen; k = Anzahl der Seiten pro Task, die im HP sind.

2 3 4 1 0

3

X (wird aus Keller gelöscht)

- bei Zugriff auf eine Seite s

* falls s im Keller vorhanden, dann s aus Keller löschen

* s oben in Keller eingeben - Wahl einer zu räumenden Kachel :

unterstes Kellerelement

- wegen hohem Aufwand selten realisiert

0 1 4 3 2 3 0 1 0 3 0 2 Seite in Kachel 0 0 0 3 3 3 3 3 3 3 3 3

(23)

0

Seite in Kachel

1 - 1 1 1 2 2 2 1 1 1 1 2 Seite in Kachel

2 - - 4 4 4 4 0 0 0 0 0 0 Keller 4 3 2 3 0 1 0 3 0 2 1 1 4 3 2 3 0 1 0 3 0 0 0 0 1 4 4 2 3 3 1 1 3

|

0 -> wird überlagert

angenäherte LRU - Strategie

(Second Chance Algorithmus FINKFO First In Not Used First Out) einfache und effiziente Realisierung

Suchzeiger sz

Referenz- indikator S 0

S 1 :::

0 1 1 0

- bei Zugriff auf eine Seite s : Referenzindikator [ s ] := true - bei Suche einer zu räumenden Seite :

label1:

falls ( Referenzindikator [sz] = false ) and (Seiteanwesend [sz] --> gefunden) sonst Referenzindikator [sz] := false

sz := sz (+) 1 (+) = modulo Tablänge goto label1

0 1 4 3 2 3 0 1 0 3 0 2 Seite in Kachel

0 0

´ 0

´ - 0

´ 3

´ 3

´ 3

´ - 3

´ 1

´ 1

´ 1

´ 1

´ - 1 Seite in Kachel

1 - 1

´ 1

´ - 1 2

´ 2

´ 2

´ - 2 - 2 3

´ 3

´ 3 Seite in Kachel

2 - 4

´ 4 - 4 - 4 0

´ 0 0

´ - 0

´ - 0

´ 2

´ - = Seitenzeiger

´ = Referenzbit gesetzt

Bei größerer Anzahl von Kacheln => bessere Ergebnisse !

(24)

RNU - Strategie

Seitentabelle S 0

S 1 :::

0 1 1 0

0 999

10 :::

Zähler

Referenzindikator

reine Strategie

- Jeder Seite wird ein Zähler der Kapazität k zugeordnet

- Alle Zähler werden bei Zugriff auf eine beliebige Seite um 1 erhöht (falls R-Bit = 1; in Praxis wegen zu hohem Aufwand nicht real) - Der Zähler der referenzierten Seite wird auf 0 gesetzt - Das Referenzbit der referenzierten Seite wird auf 1 gesetzt - Bei Zählerüberlauf werden Zähler und Referenzbit auf 0 gesetzt - Zur Überlagerung wird eine Seite mit Referenzbit 0 ausgewählt

0 1 4 3 2 3 0 1 0 3 0 2 Seite in Kachel

0 0 0 0 3 3 3 3 3 3 3 3 3 Seite in Kachel

1 1 1 1 2 2 2 1 1 1 1 2 Seite in Kachel

2 4 4 4 4 0 0 0

´ 0 0 0

Zählergröße k = 2 (0,1,2)

# = Zählerüberlauf (Eintrag wird gelöscht) Probleme bei der technischen Realisierung.

FIFO - Strategie (First In First Out)

Seite 0 ´ 0 ´ 1 ´ 2 # ´ 0 ´ 1 ´

0 ´ 1 ´ 0 ´ 1 Seite 1 ´ 0 ´ 1 ´ 2 # ´ 0 ´

1 ´ 2 #

Seite 2 ´ 0 ´

1 ´ 2 # ´ 0

Seite 3 ´ 0 ´ 1 ´

0 ´ 1 ´ 2 # ´ 0 ´ 1 ´ 2 Seite 4 ´ 0 ´ 1 ´ 2 #

(25)

:::

K 0 K 1

Kacheltabelle

Zeiger - Auswahl :

Seite in Kachel, auf die Zeiger verweist, nach Räumen Zeiger um 1 erhöhen (modulo Länge).

0 1 2 3 4 0 1 5 6 0 1 2 3 5 6 K 0 0 0 0 * 0 4 4 4 * 4 6 6 6 6 6 6 6 K 1 * 1 1 1 * 1 0 0 0 * 0 * 0 * 0 2 2 2 2 K 2 * 2 2 2 * 2 1 1 1 1 1 * 1 3 3 3 K 3 * 3 3 3 * 3 5 5 5 5 5 * 5 * 5 * 5 K 0 0 0 0 0 * 0 * 0 * 0 5 5 5 5 * 5 3 3 3 K 1 * 1 1 1 1 1 1 * 1 6 6 6 6 * 6 5 5 K 2 * 2 2 2 2 2 2 * 2 0 0 0 0 * 0 6 K 3 * 3 3 3 3 3 3 * 3 1 1 1 1 * 1 K 4 * 4 4 4 4 4 4 * 4 2 2 2 2

bei 4 Kacheln : 7 Seitenwechsel bei 5 Kacheln : 8 Seitenwechsel

e) Leistungsbetrachtungen 1) Einfaches Modell für 1 Prozeß

- Programm der Größe s Seiten => Seitennr. 0, ... , s-1 Speicherangebot mit m Seiten m <= s

a) Annahme : gleichmäßiges Referenzverhalten

Wahrscheinlichkeit P (Referenz einer Seite) = 1/ s

P (Austausch) = (s - m) / s = 1 - m / s Bezeichnungen :

relatives Speicherangebot  = m/s Seitentauschrate = f

o

gemessen Näherung

b) Annahme : nicht gleichmäßiges Referenzverhalten (Praxis !)

- Seiten werden nach der (gemessenen) Referenzhäufigkeit umnummeriert

(26)

P

is-1 0

1 - o P

Pn h

S0

Wendepunkt

Zur einfachen analytischen Betrachtung wird die beobachtete Kurve durch eine näherungsweise ersetzt.

Zwei - Gruppen - Verteilung

P( i ) = o / so für 0 <= i <= so

= (1 - o) / (s - so) für so < i <= s

Referenzen

ÄHNLICHE DOKUMENTE

g) Wir steigen am Rathausplatz in die U-Bahn um. Setze diese Sätze in die Zeitformen Futur, Präsens, Präteritum, Perfekt und Plusquamperfekt und schreibe sie in dein Heft.. a)

Finde in jedem Satz das Adjektiv und bilde daraus ein Nomen, indem du eine passende Endung zuordnest. Schreibe die Wörter geordnet nach ihrer Endung in dein Heft... -heit -keit

Schreibe mindestens ein Lösungswort zu jedem Rätsel in dein

– Man erspart sich Kopieraufwand und -kosten und hat immer etwas zur Hand. Auf diese Weise hat die Lehrkraft auch Zeit für die Leistungsschwächeren in der Klasse und alle anderen

Aber toll, wenn du dir die ganzen Regeln merken kannst. Ich habe vorher noch nie etwas von Diktaten gehört. Zum Glück gibt es so etwas bei uns nicht. Wie war denn eigentlich

Am Ende hast Du alle Zahlen von oben in die

Über den TOP 2 der nichtöffentlichen Sitzung vom 22.03.2021, die Ausschreibung für die Fachplanung Heizung-/Sanitär-/Elektro bezüglich der Sanierung des Anwesens Kulmbacher Straße 5

SL05 geht unter derselben Stichwortsu- che sogar so weit, dass CFS oft als Verlegenheitsdiagnose gestellt wird, wenn keine andere Ursache für eine Erschöpfungssymptomatik gefun-