Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdMelissa Peters Laatst gewijzigd meer dan 10 jaar geleden
1
BESTURINGS SYSTEMEN Vincent Naessens
2
Theorie, ontwerp en praktijk
Besturingssystemen OPERATING SYSTEMS Theorie, ontwerp en praktijk VIJFDE EDITIE William Stallings, PhD.
3
deel 5: invoer/uitvoer en bestand deel 6: gedistribueerde systemen
Overzicht van het boek deel 1: achtergrond computersystemen deel 2: processen deel 3: geheugen deel 4: scheduling besturingssystemen I deel 5: invoer/uitvoer en bestand besturingssystemen II deel 6: gedistribueerde systemen
4
Overzicht van de cursus
deel 1: achtergrond Hoofdstuk 1: Overzicht van computersystemen (L. De Strycker) Hoofdstuk 2: Overzicht van besturingssystemen deel 2: processen Hoofdstuk 3: Beschrijving en besturing van processen Hoofdstuk 4: Threads, SMP en microkernels Hoofdstuk 5: Gelijktijdigheid: wederzijdse uitsluiting en synchronisatie Hoofdstuk 6: Gelijktijdigheid: deadlock en starvation deel 3: geheugen Hoofdstuk 7: Geheugenbeheer Hoofdstuk 8: Virtueel geheugen (besturingssystemen I)
5
Overzicht van de cursus
deel 4: scheduling Hoofdstuk 9: Scheduling bij een processor Hoofdstuk 10: Scheduling bij multiprocessing en realtime deel 5: Invoer/Uitvoer en bestand Hoofdstuk 11: I/O beheer en schijfscheduling Hoofdstuk 12: Bestandsbeheer deel 6: Gedistribueerde systemen Hoofdstuk 13: Netwerken Hoofdstuk 14: Gedistribueerde verwerking, client/server architectuur en clusters Hoofdstuk 15: Gedistribueerd procesbeheer Hoofdstuk 16: Beveiliging
6
DEEL III: GEHEUGEN Hoofdstuk 7: Geheugenbeheer Hoofdstuk 8:
Virtueel geheugen
7
Hoofdstuk 7: Geheugenbeheer
8
Geheugenbeheer uniprogrammering multiprogrammering proces_1
residente monitor en kernel residente monitor en kernel gebruikersdeel proces_1 geheugenbeheer (~dynamisch) proces_2 proces_3
9
7.1. Vereisten voor geheugenbeheer
1. Relocatie (~programma kunnen verplaatsen naar ander deel van geh.) vaststellingen: processen kunnen reeds in hoofdgeheugen aanwezig zijn indien een ander proces geladen wordt b) bij swap_out komt geheugen vrij c) bij swap_in kan geheugen bezet zijn problemen: sprong opdrachten: JMP 1057 verwijzing naar gegevens: GET R1,2743 oplossing: OS adressering in programmacode fysieke adressering
10
7.1. Vereisten voor geheugenbeheer
2. Bescherming t.o.v. andere processen vaststellingen: onmogelijk om fysieke adressen te controleren tijdens compile time (~relocatie) bij vele programmeertalen worden adressen at runtime berekend int x = readInt(); a[x]=15; taak HW: afbreken van instructies die andere processen benaderen 3. Mogelijkheid tot delen van geheugen tussen verschillende processen Wanneer? processen die zelfde programmacode uitvoeren processen die gemeenschappelijke gegevensstructuur delen
11
7.1. Vereisten voor geheugenbeheer
4. Logische indeling kunnen mappen op fysische indeling vaststellingen: fysisch geheugen opbouw programma’s … n-2 n-1 eendimensioneel modulair OS en HW moeten kunnen omgaan met modulariteit van programma’s techniek = segmentatie
12
7.1. Vereisten voor geheugenbeheer
4. Fysieke indeling bestaat uit verschillende niveaus hoofdgeheugen secundair geheugen + snel hoge kost volatile + langzaam - lagere kost non-volatile probleem: informatiestroom organiseren oplossing_1: programmeur heeft verantwoordelijkheid overlays: programmeur kent verschillende modules in prog. aan zelfde geh. gebied toe probleem_1: verspilling van tijd van programmeur probleem_2: niet voldoende voor multiprogrammering oplossing_2: verantwoordelijkheid bij OS
13
7.2. Partitioneren van geheugen
virtueel geheugen = systeem om programma binnen te halen in hoofdgeheugen technieken partitioneren: gebruikt geen virtueel geheugen segmenteren pagineren
14
7.2. Partitioneren van geheugen
statische partitionering (~vaste indeling in partities) partities van gelijke grootte nadelen van partities met gelijke grootte: overlays gebruiken indien programma te groot interne fragmentatie indien programma te klein algoritme: 1. kies willekeurige onbezette partitie 2. indien geen partitie vrij: ev. swapping (sched. dec.) 8MB (OS) 8MB
15
7.2. Partitioneren van geheugen
statische partitionering (~vaste indeling in partities) partities van ongelijke grootte algoritme 1: 1 wachtrij voor alle processen kies kleinste vrije partitie waar proces in kan indien geen partitie vrij: ev. swapping (~sched. dec.) algoritme 2: 1 wachtrij per type partitie kies vrije partitie van bep. type waar proces in kan nadelen: beperkt aantal actieve processen in systeem interne fragmentatie bij zeer kleine processen 8MB (OS) 8MB 2MB 12MB 4MB 6MB
16
7.2. Partitioneren van geheugen
dynamische partitionering (~variabel aantal partities van variabele grootte) OS OS OS OS OS OS OS OS p_1 p_1 p_1 p_1 p_1 p_2 p_2 p_2 p_4 p_4 p_4 p_3 p_3 p_3 p_3 p_3 nadelen: externe fragmentatie oplossing: compation op geregelde tijdstippen BUT time-consuming
17
7.2. Partitioneren van geheugen
dynamische partitionering (~variabel aantal partities van variabele grootte) plaatsingsalgoritmes: algoritme 1: best-fit plaats in kleinste blok waar plaats genoeg is b) algoritme 2: first-fit plaats in eerste blok waar plaats genoeg is c) algoritme 3: next-fit plaats in eerste blok na vorige plaatsing waar plaats genoeg is
18
7.2. Partitioneren van geheugen
buddysysteem (combinatie statisch en dynamisch) elk toegewezen blok: 2K met L≤K≤U 2L : kleinste blok dat wordt toegewezen 2U : grootste blok dat wordt toegewezen (meestal: grootte van geh.) 1MB plaatsingsalgoritme bij blok van grootte 2i-1<k≤2i: req(100) void get_hole(int i){ if(i==(U+1)) <failure> if(<i_list empty>){ get_hole(i+1); <split hole into buddy> <put buddies on i_list> } <take first hole on i_list> req(240) req(64) req(256) rel(240) rel(100) req(75) rel(64) rel(128) rel(256)
19
7.2. Partitioneren van geheugen
buddysysteem (combinatie statisch en dynamisch) plaatsingsalgoritme bij blok van grootte 2i-1<k≤2i: 1MB 1MB req(100) 512KB req(240) req(64) 256KB req(256) 128KB rel(240) rel(100) 64KB req(75) rel(64) rel(128) rel(256)
20
7.2. Partitioneren van geheugen
relocatie relocating loader: mogelijk indien proces altijd op zelfde plaats komt na swappen dynamic runtime loading: indien proces op verschillende plaatsen kan terechtkomen (HW support nodig!) relatief adres PCB base register code opteller absoluut adres comparator data bounds register interrupt nr OS stack
21
7.3. Pagineren groote van 1 page = grootte van 1 (page) frame
pagineren: waarom? partities met vaste grootte interne fragmentatie partities met variabele grootte externe fragmentatie pagineren: strategie? opdelen van proces in pages EN opdelen van geheugen in (page) frames (~relatief kleine partities) groote van 1 page = grootte van 1 (page) frame
22
7.3. Pagineren - 4 processen: A, B, C, D
1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A.0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A.0 A.0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A.0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A.0 A.1 A.1 A.1 A.1 A.1 A.2 A.2 A.2 A.2 A.2 A.3 A.3 A.3 A.3 A.3 B.0 B.0 D.0 B.1 B.1 D.1 B.2 B.2 D.2 C.0 C.0 C.0 C.1 C.1 C.1 C.2 C.2 C.2 C.3 C.3 C.3 D.3 D.4 - 4 processen: A, B, C, D - voorstelling van process pages in page frames
23
7.3. Pagineren OS houdt paginatietabel bij per proces proces A
1 2 3 4 5 6 7 8 9 10 11 12 13 14 A.0 OS houdt paginatietabel bij per proces A.1 A.2 A.3 proces A proces B proces C proces D D.0 D.1 1 2 3 1 2 1 2 3 4 - 1 2 3 7 4 D.2 1 - 8 5 C.0 2 - 9 6 C.1 3 10 11 C.2 12 C.3 D.3 lijst van vrije frames D.4 13 14 voordelen: geen externe fragmentatie beperkte interne fragmentatie
24
7.3. Pagineren pagineren: voorbeeld stel: 16 bit adressen
page length = 1kB = 1024 bytes dan: maximale programmalengte = 64 pages stel: relatief adres: 1502 = (000001)( ) dan: page number : = offset (relatieve positie) : 478 = ADRESVERTALING haal 6 linker bits uit logisch adres zoek frame number k dmv page number in page table fysiek adres = k x offset
25
7.4. Segmenteren segmenteren: wat? - programma opdelen in segementen
- segmenten hoeven niet allemaal zelfde grootte te hebben segmenteren: voordelen geen interne fragmentatie beperktere externe fragmentatie stel: 16 bit adressen 4 bit segment voor gegeven adres dan: 1 + length base
26
7.5. Samenvatting relatief adres = 1502 logisch adres =
pagNr=1;pos=478 logisch adres = segNr=1;pos=752 (000001)( ) (0001)( ) seg_0 pag_0 gebruikersproces pag_1 seg_1 pag_2 partitionering paginering segmentering
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.