BESTURINGS SYSTEMEN Vincent Naessens. Besturingssystemen OPERATING SYSTEMS Theorie, ontwerp en...

26
BESTURINGS SYSTEMEN Vincent Naessens

Transcript of BESTURINGS SYSTEMEN Vincent Naessens. Besturingssystemen OPERATING SYSTEMS Theorie, ontwerp en...

BESTURINGSSYSTEMEN

Vincent Naessens

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

DEEL III: GEHEUGEN

Hoofdstuk 7: Geheugenbeheer

Hoofdstuk 8:Virtueel geheugen

Hoofdstuk 7: Geheugenbeheer

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

7.5. Samenvatting

gebru

ikers

pro

ces

0000010111011110 (000001)(0111011110) (0001)(001011110000)

relatief adres = 1502logisch adres = pagNr=1;pos=478

logisch adres = segNr=1;pos=752

pag_0

pag_1

pag_2

seg_0

seg_1

partitionering paginering segmentering