DEEL V: INVOER/UITVOER EN BESTAND Hoofdstuk 11: I/O beheer en schijfscheduling Hoofdstuk 12:...
-
Upload
ivo-jonker -
Category
Documents
-
view
214 -
download
0
Transcript of DEEL V: INVOER/UITVOER EN BESTAND Hoofdstuk 11: I/O beheer en schijfscheduling Hoofdstuk 12:...
DEEL V:INVOER/UITVOER EN BESTAND
Hoofdstuk 11: I/O beheer en schijfscheduling
Hoofdstuk 12: Bestandsbeheer
Hoofdstuk 11:I/O beheer en schijfscheduling
11.1. I/O apparaten opdeling van apparaten
verschilpunten data transfer rates (ethernet vs keyboard) application (virtual memory vs persistent data storage) complexity (printer vs disk) unit of data transfer (character vs blocks) coding of data fault conditions
human-readable mouse, printers, screens, keyboard, …
machine-readable HD, RAM, sensors, controllers, …
communication modems, digital data lines, …
11.2. Organisatie van I/O functiegeprogrammeerde I/O interruptgestuurde I/Ogeef leesopdracht
aan I/O module
lees statusvan I/O module
lees woorduit I/O module
schrijf woordnaar geheugen
checkstatus
ready?
next instructionyes
no
ready
!ready
foutcn
d.
geef leesopdrachtaan I/O module
lees statusvan I/O module
lees woorduit I/O module
schrijf woordnaar geheugen
checkstatus
ready?
next instructionyes
no
ready
foutcn
d.
CPU I/O
I/O CPU
I/O CPU
CPU RAM
CPU I/O
I/O CPU
I/O CPU
CPU RAM
do something else
interrupt
11.2. Organisatie van I/O functie
Direct Memory Access (DMA)
geef leesopdrachtaan I/O module
lees statusvan I/O module
CPU DMA
DMA CPU
interrupt
next instruction
do something else
11.2. Organisatie van I/O functie
evolutie van I/O functie
1. processor directe controle over device2. toevoegen van I/O module (voorzien van interfaces)
1. geprogrammeerde I/O2. interruptgestuurde I/O3. directe geheugentoegang
3. toevoegen van processor aan I/O module (met I/O specifieke instructieset)4. toevoegen van geheugen aan I/O module
gevolg:loskoppeling van I/O functies betere prestaties van CPU
I/O
11.2. Organisatie van I/O functie
Direct memory access (DMA)
programcounter
dataregister
addressregister
controllogic
Concurrentie tussen DMA-blok en CPU om bus (cycle stealing)
configuraties:
proc. DMA I/O I/O mem.…
proc. DMA mem.DMA
I/OI/O
proc. DMA mem.
I/OI/OI/O
system bus
I/O bus
onefficient
uniformeinterface
11.3. Aandachtspunten voor ontwerp van besturingssysteem
ontwerpdoelstellingen
efficientie: I/O apparaten traag in vergelijking met RAM en processor
generaliteit: verbergen van bijzonderheden I/O apparaten in low level routines(hierarchische structuur van OS)
11.3. Aandachtspunten voor ontwerp van besturingssysteem
logische structuur van I/O functiegebruikersprocessen
logischeI/O
apparaatI/O
scheduling& besturing
hardware
gebruikersprocessen
ComputerArchitectuur
apparaatI/O
scheduling& besturing
hardware
gebruikersprocessen
bestands-systeem
apparaatI/O
scheduling& besturing
hardware
fysiekeindeling
directorybeheer
bestandensysteemcommunicatiepoortlokaal randapparaat
vb.TCP/IP
vb. delete, move, copy, …
vb. open, close,read, write, …
vb. memorymappings, …
11.4. I/O buffering
stel: Read_block[1000, tape] en wachten tot gegevens beschikbaar zijn
nadelen:1. onefficient: programma onderbroken2. mogelijke swapping problemen:
(a) ingelezen data moeten in RAM blijven tot na gegevensoverdracht(b) deadlock mogelijk :
stel volgende volgorde:1. leesopdracht gegeven proces wacht op voltooiing I/O2. swap proces onmiddellijk uit geheugen I/O bewerking geblokkeerd
oplossing: bufferen van gegevens
blokgerichte apparaten (vb. schijfgeh & tapes)
stroomgerichte apparaten (vb. terminals, printers, …)
11.4. I/O bufferingIN
IN
IN
IN…
enkelvoudige buffer (~volgende te verwachten blok op voorhand ingelezen)
geen buffer
T = tijd voor invoeren blokM = tijd voor verplaatsen blokC = tijd consumptie van een blok
uitvoeringstijd per blok = T + C
uitvoeringstijd per blok = max[C,T] + M
dubbele buffer (~invoeren + verplaatsen gelijktijdig)
uitvoeringstijd per blok = max[C,T]
cirkelvormige buffer (~opvangen van I/O bursts)
11.5. Schijfscheduling
vaststelling:RAM en processor snelheden veel groter dan snelheden I/O apparaten
parameters voor schijfprestaties
wachten op apparaat
wachten op kanaal
seek(~juiste spoor)
rotation delay(~juiste sector)
datatransfer
apparaat bezet
access time
seek time = opstarttijd + reistijd + bevestigingstijd = +- 5 a 10 msec
rotatietijdstel: 15.000 omwentelingen per minuut dan: rotatievertraging gemiddeld 2 msec
11.5. Schijfscheduling
parameters voor schijfprestaties
wachten op apparaat
wachten op kanaal
seek(~juiste spoor)
rotation delay(~juiste sector)
datatransfer
data transfer time= opstarttijd + reistijd + bevestigingstijd = +- 5 a 10 msec
Stel:T = data transfer timeb = aantal over te dragen bytesN = aantal bytes per spoorr = rotatiesnelheid (omwent. per seconde)
T = b / rN
11.5. Schijfscheduling
parameters voor schijfprestaties
wachten op apparaat
wachten op kanaal
seek(~juiste spoor)
rotation delay(~juiste sector)
datatransfer
totale gemiddelde toegangstijd:
Ta = Ts + 1/(2*R) + b/(r*N)
11.5. Schijfscheduling
stel:gemiddelde seek time = 4 msomwentelingssnelheid = 7500 rpm512 bytes per sector500 sectoren per spoor
Vraag: hoelang duurt inlezen van 2500 sectoren?
stel: opeenvolgende sectoren uit 5 opeenvolgende sporen
stel: random sectoren uit random sectoren
500 sectoren voor eerste spoor:4 + 4 + 8 = 16 msecvoor volgende sporen:0 + 4 + 8 = 12 msectotaal:16 + 4*12 = 0,064 sec
lezen van 1 sector:4 + 4 + 0,016 = 8,016 msec
totaal:2500*8,016=20,04 sec
11.5. Schijfschedulingstrategieën voor scheduling van schijf
5558391890
160150
38184
spoor aanvragen:
gemiddelde seek lengte = 55.3
First-In-First-Out
pos:- eerlijk- goed gedrag bij beperkt aantal processen en geclusterde aanvragenneg:- slecht gedrag bij groot aantal processen met ongeclusterede aanvragen
11.5. Schijfschedulingstrategieën voor scheduling van schijf
5558391890
160150
38184
spoor aanvragen:
Prioriteit gebaseerd
Last-In-First-Out
pos:snelle antwoordtijden bekomen voor interactieve jobsneg:omzeilen door langere processen op te delen in kleinere jobs
pos:snelle verplaatsingen van sequentiële bestandenneg:starvation mogelijk
11.5. Schijfschedulingstrategieën voor scheduling van schijf
5558391890
160150
38184
spoor aanvragen:
Shortest Service Time First
strategie: kies spoor met kleinste verplaatsingpos:- zeer efficientneg:- deadlock mogelijk
gemiddelde seek lengte = 27.5
11.5. Schijfschedulingstrategieën voor scheduling van schijf
5558391890
160150
38184
track requests:
gemiddelde seek lengte = 27.8
strategie: doorloop requests in één richting (L R L R)
pos:- redelijk efficientneg:- geeft voordeel aan recent doorkruist gebied
SCAN (=liftalgoritme)
11.5. Schijfschedulingstrategieën voor scheduling van schijf
5558391890
160150
38184
track requests:
gemiddelde seek lengte = 35.8
strategie: doorloop requests in één richting (L R ; R L; R L; R L)
pos:- eerlijkerneg:- minder efficient
C-SCAN
11.5. Schijfschedulingstrategieën voor scheduling van schijf
5558391890
160150
38184
track requests:
N-step-SCAN
FSCAN
problemen bij vorige algoritmes: arm kan blijven plakken bij gebieden
oplossing:- creeren van meerdere wachtrijen- in elke wachtrij slechts N elementen- verwerk elke deelrij met SCAN algoritme
oplossing:- creeren van 2 wachtrijen- bij begin van elke scan is één wachtrij leeg- vanaf dan binnenkomende requests in nieuwe wachtrij
11.5. Schijfschedulingstrategieën voor scheduling van schijf
spoor aanvragen:
5558391890
160150
38184
11.6. RAID
RAID = Redundant Array of Independent Disks
doelstellingen:- verschillende I/O aanvragen parallelliseren- mogelijke fouten verminderen (~reliability)
Eigenschappen:• set van fysieke schijfstations die door OS w behandeld als 1 logisch station• gegevens verdeeld over fysieke schijven van array• redundante capaciteit gebruikt voor opslaan pariteitsgegevens
11.6. RAID
RAID 0: niet redundant
strip 12
strip 8
strip 4
strip 0
strip 13
strip 9
strip 5
strip 1
strip 14
strip 10
strip 6
strip 2
strip 15
strip 11
strip 7
strip 4
voordelen:- gelijktijdig afhandelen van I/O requests indien op verschillende schijven- waarschijnlijkheid dat opeenvolgende strips worden geladen groot ( horizontaal)
vereisten:1) grote overdrachtscapaciteit (door o.a. controller bussen, I/O bussen, adaptors, …)2) aanvragen typisch groter dan lengte van 1 strip
11.6. RAID
RAID 1: gespiegeld
strip 12
strip 8
strip 4
strip 0
strip 13
strip 9
strip 5
strip 1
strip 14
strip 10
strip 6
strip 2
strip 15
strip 11
strip 7
strip 4
strip 12
strip 8
strip 4
strip 0
strip 13
strip 9
strip 5
strip 1
strip 14
strip 10
strip 6
strip 2
strip 15
strip 11
strip 7
strip 4
voordelen:1) read-request kan afgehandeld worden door 2 schijven2) gegevens kunnen parallel bijgewerkt worden bij write-request3) recovery gemakkelijk door duplicatie
nadelen:1) kosten dubbele schijfruimte enkel essentiële bestanden dupliceren2) slechtere performantie indien meer schrijfbewerkingen
11.6. RAID
RAID 2: redundantie met hamming code
b0 b1 b2 b3 f0(b) f1(b) f2(b)
aanpak:- zeer kleine strips (~1 byte / 1woord)- hamming code: correctie 1 bit fouten; detectie 2 bit fouten
nadelen:- nog steeds veel redundantie (nl. log(#schijven))
wanneer? bij schijven met grote kans op fouten
11.6. RAID
RAID 3: pariteit via verweven bits
b0 b1 b2 b3 P(b)
X4(i) = X3(i) xor X2(i) xor X1(i) xor X0(i)
voordelen:- herstel na crash van 1 schijf mogelijk- zeer kleine strips parallelle overdracht van gegevens
11.6. RAID
RAID 4: pariteit op blokniveau
block 12
block 8
block 4
block 0
P(12-15)
P(8-11)
P(4-7)
P(0-3)
block 13
block 9
block 5
block 1
block 14
block 10
block 6
block 2
block 15
block 11
block 7
block 3
voordelen: relatief grote blokken parallelle afhandeling I/O requests
nadelen: pariteitsschijf betrokken bij elke schrijfopdracht
X4(i) = X3(i) xor X2(i) xor X1(i) xor X0(i)
X4‘(i) = X4(i) xor X1(i) xor X1‘(i)
Schrijfstraf (ook bij vorige techniek)
block 13
11.6. RAID
RAID 5: gedistribueerde pariteit op blokniveau
block 12
block 8
block 4
block 0
P(12-15)
P(8-11)block 9
block 5
block 1
block 14
block 10
block 6
block 2
block 15
block 11
block 7P(4-7)
block 3 P(0-3)
voordelen:- geen bottleneck door pariteitsschijf (zie RAID 4)
block 13block 12 P(12-15) block 14 block 15Q(12-15)
Q(8-11)
P(4-7)
11.6. RAID
RAID 6: tweevoudige redundantie
block 8
block 4
block 0
P(8-11)block 9
block 5
block 1
block 10
block 6
block 2
Q(4-7)
block 3 P(0-3)
block 11
block 7
Q(0-3)
voordelen:- hoge reliability (2 schijven mogen tegelijk kapot gaan)
nadelen:- lagere performantie bij schrijfopdrachten