BESTURINGS SYSTEMEN Vincent Naessens. Besturingssystemen OPERATING SYSTEMS Theorie, ontwerp en...
-
Upload
melissa-peters -
Category
Documents
-
view
225 -
download
4
Transcript of BESTURINGS SYSTEMEN Vincent Naessens. Besturingssystemen OPERATING SYSTEMS Theorie, ontwerp en...
Besturingssystemen
OPERATING SYSTEMS Theorie, ontwerp en praktijk
VIJFDE EDITIE
William Stallings, PhD.
Overzicht van het boek
deel 1: achtergrond
deel 2: processen
deel 3: geheugen
deel 4: scheduling
deel 5: invoer/uitvoer en bestand
deel 6: gedistribueerde systemen
computersystemen
besturingssystemen I
besturingssystemen II
Overzicht van de cursus
deel 1: achtergrond
deel 2: processen
deel 3: geheugen
Hoofdstuk 1: Overzicht van computersystemen (L. De Strycker)Hoofdstuk 2: Overzicht van besturingssystemen
Hoofdstuk 3: Beschrijving en besturing van processenHoofdstuk 4: Threads, SMP en microkernelsHoofdstuk 5: Gelijktijdigheid: wederzijdse uitsluiting en synchronisatieHoofdstuk 6: Gelijktijdigheid: deadlock en starvation
Hoofdstuk 7: GeheugenbeheerHoofdstuk 8: Virtueel geheugen (besturingssystemen I)
Overzicht van de cursus
deel 4: scheduling
deel 5: Invoer/Uitvoer en bestand
deel 6: Gedistribueerde systemen
Hoofdstuk 9: Scheduling bij een processorHoofdstuk 10: Scheduling bij multiprocessing en realtime
Hoofdstuk 11: I/O beheer en schijfschedulingHoofdstuk 12: Bestandsbeheer
Hoofdstuk 13: NetwerkenHoofdstuk 14: Gedistribueerde verwerking, client/server architectuur en clustersHoofdstuk 15: Gedistribueerd procesbeheerHoofdstuk 16: Beveiliging
Geheugenbeheer
uniprogrammering multiprogrammering
residente monitoren kernel
gebruikersdeel
residente monitoren kernel
proces_1
proces_2
proces_3
geheugenbeheer(~dynamisch)
7.1. Vereisten voor geheugenbeheer
1. Relocatie (~programma kunnen verplaatsen naar ander deel van geh.)
vaststellingen:a) processen kunnen reeds in hoofdgeheugen aanwezig zijn
indien een ander proces geladen wordtb) bij swap_out komt geheugen vrijc) bij swap_in kan geheugen bezet zijn
problemen:a) sprong opdrachten: JMP 1057b) verwijzing naar gegevens: GET R1,2743
oplossing:
adressering in programmacode
fysiekeadressering
OS
7.1. Vereisten voor geheugenbeheer
2. Bescherming t.o.v. andere processen
vaststellingen:a) onmogelijk om fysieke adressen te controleren tijdens compile time (~relocatie)b) 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 processenWanneer?a) processen die zelfde programmacode uitvoerenb) processen die gemeenschappelijke gegevensstructuur delen
7.1. Vereisten voor geheugenbeheer
4. Logische indeling kunnen mappen op fysische indeling
vaststellingen:
0
n-2n-1
…
fysisch geheugenfysisch geheugen
eendimensioneel
opbouw programma’sopbouw programma’s
modulair
OS en HW moeten kunnen omgaan met modulariteit van programma’s techniek = segmentatie
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 verantwoordelijkheidoverlays: programmeur kent verschillende modules in prog. aan zelfde geh. gebied toeprobleem_1: verspilling van tijd van programmeurprobleem_2: niet voldoende voor multiprogrammering
oplossing_2: verantwoordelijkheid bij OS
7.2. Partitioneren van geheugen
virtueel geheugen = systeem om programma binnen te halen in hoofdgeheugen
technieken
segmenteren pagineren
partitioneren: gebruikt geen virtueel geheugen
7.2. Partitioneren van geheugen
statische partitionering (~vaste indeling in partities)
8MB (OS)
8MB
8MB
8MB
8MB
8MB
8MB
partities vangelijke grootte
nadelen van partities met gelijke grootte:1) overlays gebruiken indien programma te groot2) interne fragmentatie indien programma te klein
algoritme:1. kies willekeurige onbezette partitie2. indien geen partitie vrij: ev. swapping (sched. dec.)
7.2. Partitioneren van geheugen
statische partitionering (~vaste indeling in partities)
8MB (OS)
8MB
8MB
2MB
12MB
4MB6MB
2MB2MB
partities vanongelijke grootte algoritme 1: 1 wachtrij voor alle processen
1. kies kleinste vrije partitie waar proces in kan2. indien geen partitie vrij: ev. swapping (~sched. dec.)
algoritme 2: 1 wachtrij per type partitie1. kies vrije partitie van bep. type waar proces in kan2. indien geen partitie vrij: ev. swapping (~sched. dec.)
nadelen:1) beperkt aantal actieve processen in systeem2) interne fragmentatie bij zeer kleine processen
7.2. Partitioneren van geheugen
dynamische partitionering (~variabel aantal partities van variabele grootte)
OS
p_1
p_4
p_3
OS
p_1
p_3
OS
p_1
p_2
p_3
OS
p_1
p_2
OS
p_1
OS OS
p_3
OS
p_3
p_2
p_4 p_4
nadelen:externe fragmentatie
oplossing:compation op geregelde tijdstippen BUT time-consuming
7.2. Partitioneren van geheugen
dynamische partitionering (~variabel aantal partities van variabele grootte)
plaatsingsalgoritmes:
a) 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
7.2. Partitioneren van geheugen
buddysysteem (combinatie statisch en dynamisch)
plaatsingsalgoritme bij blok van grootte 2i-1<k≤2i:
2L : kleinste blok dat wordt toegewezen2U : grootste blok dat wordt toegewezen (meestal: grootte van geh.)
elk toegewezen blok: 2K met L≤K≤U
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>}
1MB
req(100)
req(240)
req(64)
req(256)
rel(240)
req(75)
rel(100)
rel(64)
rel(128)
rel(256)
7.2. Partitioneren van geheugen
buddysysteem (combinatie statisch en dynamisch)
plaatsingsalgoritme bij blok van grootte 2i-1<k≤2i:
req(100)
req(240)
req(64)
req(256)
rel(240)
req(75)
rel(100)
rel(64)
rel(128)
1MB
rel(256)
1MB
512KB
256KB
128KB
64KB
7.2. Partitioneren van geheugen
relocatierelocating loader: mogelijk indien proces altijd op zelfde plaats komt na swappen
dynamic runtime loading: indien proces op verschillende plaatsen kan terechtkomen (HW support nodig!)
base registerPCB
code
data
stack
opteller
comparator
absoluut adres
interrupt nr OS
relatief adres
bounds register
7.3. Paginerenpagineren: waarom?
partities met vaste grootte interne fragmentatiepartities met variabele grootte externe fragmentatie
pagineren: strategie?
opdelen van proces in pagesEN
opdelen van geheugen in (page) frames (~relatief kleine partities)
groote van 1 page = grootte van 1 (page) frame
7.3. Pagineren0123456789
1011121314
A.0A.1A.2A.3
0123456789
1011121314
A.0A.1A.2A.3B.0B.1B.2
0123456789
1011121314
0123456789
1011121314
0123456789
1011121314
0123456789
1011121314
A.0A.1A.2A.3B.0B.1B.2
A.0A.1A.2A.3
C.0C.1C.2C.3
C.0C.1C.2C.3
D.0D.1D.2
D.3D.4
A.0A.1A.2A.3
C.0C.1C.2C.3
- 4 processen: A, B, C, D- voorstelling van process pages in page frames
7.3. Pagineren0123456789
1011121314
D.0D.1D.2
D.3D.4
A.0A.1A.2A.3
C.0C.1C.2C.3
OS houdt paginatietabel bij per proces
proces A proces B proces C proces D0123
012
01234
0123
0123
---
789
10
456
1112
lijst van vrije frames
1314
voordelen:a) geen externe fragmentatieb) beperkte interne fragmentatie
7.3. Pagineren
pagineren: voorbeeldstel: 16 bit adressen
page length = 1kB = 1024 bytes
dan: maximale programmalengte = 64 pages
stel: relatief adres: 1502 = (000001)(0111011110)
dan: page number : 1 = 000001offset (relatieve positie) : 478 =
0111011110ADRESVERTALING
1. haal 6 linker bits uit logisch adres
2. zoek frame number k dmv page number in page table
3. fysiek adres = k x 1024 + offset
7.4. Segmenterensegmenteren: wat?- programma opdelen in segementen- segmenten hoeven niet allemaal zelfde grootte te hebben
segmenteren: voordelena) geen interne fragmentatieb) beperktere externe fragmentatie
stel: 16 bit adressen4 bit segment voor gegeven adres
dan:
0001001011110000
001011101110011110011110
00000100000000000010000000100000
length base+
01
0010001100010000