1 SOCS Hoofdstuk 4 Besturingssystemen. 2 Inhoud Inleiding Programmatoestandswoord...
-
Upload
anna-michiels -
Category
Documents
-
view
215 -
download
2
Transcript of 1 SOCS Hoofdstuk 4 Besturingssystemen. 2 Inhoud Inleiding Programmatoestandswoord...
1
SOCS
Hoofdstuk 4
Besturingssystemen
2
Inhoud
Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer Processortoestanden Multiprogrammatie Soorten Besturingssystemen Taken van een besturingssysteem Kosten en Baten
3
Inhoud
Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer
Randapparaten In- en uitvoer-organisatievormen Randapparaat-besturingsroutines (stuurprogramma’s)
Processortoestanden Multiprogrammatie Soorten Besturingssystemen Taken van een besturingssysteem Kosten en Baten
4
Invoer en uitvoer
Besturingssysteem Besturen van Randapparaten
Opdrachten geven, PO opvangen, fouten … Gebruikersprogramma
Hoog-niveau opdrachten LEZ (= complexe operatie)
Toetsaanslagen code Blanko’s, return-toets, ‘–’, Backspace Omzetten naar decimaal getal
(ev. 10-complement) Tonen op scherm (‘echo’)
5
Randapparaten
(Mechanisch gedeelte) Elektronisch gedeelte
= Bestuurder (Controller, Adapter) Insteekkaart Vaak meerdere apparaten besturen
6
Randapparaten
CVOSchijf
bestuurder
Bestuurder
van drukker
GeheugenGeheugen
Geheugen-
bestuurder
BufferBuffer
Speciale RegistersSpeciale Registers
Popdracht/geg.Ptoestand
Bus
Poorten
7
Randapparaten
Toestandspoort (Pt) Toestand v. (bestuurder) randapparaat
(LEZEN) Opdracht en gegevenspoort (Pog)
Opdracht aan bestuurder geven (SCHRIJVEN)
Gegevens van (bestuurder) apparaat ophalen (LEZEN)
8
Randapparaten
Lezen/schrijven uit/in “poorten”Twee methodes: Speciale instructies
Twee verschillende adresruimtes:• Geheugenregisters• Poorten van randapparaten
Inpassing in het geheugen Slechts 1 adresruimte
9
Randapparaten
Speciale instructies INV Ri,Pxxxx (INVoer)
Ri Pxxxx UTV Rj,Pyyyy (UiTVoer)
Pyyyy Rj Pxxxx P0, P1, …, P9998, P9999
8199i9xxxx
8299j9yyyy
Afspraak: Pt : t = even, Pog = Pt+1
10
Randapparaten
Inpassing in het geheugen Poorten hebben een geheugenadres
(vb. 9900..9909) Voordeel: geen speciale instructies nodig
HIA Ri,xxxx BIG Rj,yyyy
Nadeel: minder geheugen beschikbaar
11
Randapparaten
Lezen/Schrijven speciale registers (poorten) Inpassing in het centrale geheugen
00000000
……
98999899
99009900
99019901
……
99099909
99109910
……
99999999
P0P0
P1P1
P9P9
Geheugenregisters
Geheugenregisters
Poorten
12
Randapparaat
Toestandspoort (Pt) Toestand van het randapparaat Alleen uitlezen
Waarde Naam Verklaring
0000000000 Klaar Bestuurder klaar voor nieuwe opdracht
0000000001 Bezig Toestel is bezig met uitvoering van een opdracht
0000000002 Gegevens Er zijn gegevens beschikbaar in de gegevenspoort
9999999999 Fout Er heeft zich een fout voorgedaan
13
Randapparaat
Klaar
Gegevens
BezigFout
Fout
Fout
Fout
Opdracht
Opdracht klaar
(niet-invoer)
Gegevens beschikbaar
(zonder opdracht)
Laatste gegevens
gelezen
Initialiseer
Initialiseer
Geg
evens
besch
ikbaar
Geg
evens
uitg
elezen
PO-aanvraag
14
Randapparaat
Fout: Onbestaande/foutieve opdracht Opdracht gegeven terwijl apparaat nog bezig is Apparaat heeft nieuwe gegevens terwijl
vorige nog niet uitgelezen zijn Fout in het apparaat:
Vb. papierlade leeg, inktpatroon leeg, …
15
Randapparaat
Sommige overgangen: PO-aanvraag Interventie van het CVO gewenst
CVO moet gegevens inlezen(beschikbaar zonder opdracht)
GegevensKlaar
CVO moet gegevens inlezen
(beschikbaar na opdracht)
GegevensBezig
CVO mag nieuwe opdracht geven
KlaarBezig
CVO moet fout herstellen(herinitialisatie)
Fout???
VerklaringEind-toestand
Begin-toestand
16
Randapparaat
INV R0,P2
UTV R1,P3
INV R2,P1
UTV R3,P0
0000000002P0
0000000088P1
0000001000
0000000050
1000000020
…
R0R0
R1
RR22
9999999999 RR33
0000000000P2
0000000000P3
INV R0,P2Pt
Pog
17
Randapparaat
INV R0,P2
UTV R1,P3
INV R2,P1
UTV R3,P0
0000000002P0
0000000088P1
0000001000
0000000050
1000000020
…
R0R0
R1
RR22
9999999999 RR33
0000000000P2
0000000000P3
UTV R1,P3
0000000000
18
Randapparaat
INV R0,P2
UTV R1,P3
INV R2,P1
UTV R3,P0
0000000002P0
0000000088P1
0000000000
0000000050
1000000020
…
R0R0
R1
RR22
9999999999 RR33
0000000000P2
1000000020P3INV R2,P1
0000000001
19
Randapparaat
INV R0,P2
UTV R1,P3
INV R2,P1
UTV R3,P0
0000000002P0
0000000088P1
0000000000
0000000050
1000000020
…
R0R0
R1
RR22
9999999999 RR33
0000000001P2
1000000020P3
UTV R3,P0
0000000000
0000000000
Niet toegelaten!(P0 = toestandspoort)
0000000088
20
Lezen/Schrijven poorten
Twee C-functies: int getPort(int poortnr)
void putPort (int poortnr, int waarde) Voorbeeld:
a = getPort(0); // lees poort P0 in
putPort (1, b); // kopieer b in poort P1 Constanten:
#define KLAAR 0
#define BEZIG 1
#define GEG 2
#define FOUT -1
CC
21
PO-routine
PO-routine voorstellen als ( C): interrupt po_routine() {
…
}
CC
Bewaar accumulatoren
Herstel accumulatoren
KTO
Niet te Niet te schrijven schrijven in Cin C
i.p.v. KTGi.p.v. KTG
22
In- en uitvoer organisatievormen
Geprogrammeerd(met actief wachten)
M.b.v. programma-onderbrekingen D.m.v. directe geheugentoegang M.b.v. speciale invoer/uitvoer-processoren M.b.v. satelliet-computers
23
Geprogrammeerde in/uitvoer
Alle gegevenstransport via de processor Processor synchroniseert met randapparaat
Nieuwe opdracht mag slechts gegeven als toestand = KLAAR
Gegevens kunnen slechts uitgelezen worden als toestand = GEGEVENS
Wachten tot juiste toestand Actief wachten = continu testen
24
Geprogrammeerde in/uitvoer
int Pt, Pog, opdracht, geg;
Pt = 6; Pog = 7;
opdracht = …;
/* geven van opdracht */
while (getPort(Pt) != KLAAR);
putPort(Pog, opdracht);
/* lezen van gegevens */
while (getPort(Pt) != GEG);
geg = getPort(Pog);
25
Geprogrammeerde in/uitvoer
int Pt, Pog, opdracht, geg;
Pt = 6; Pog = 7;
opdracht = …;
/* geven van opdracht */
while (getPort(Pt) != KLAAR);
putPort(Pog, opdracht);
/* lezen van gegevens */
while (getPort(Pt) != GEG);
geg = getPort(Pog);
Actief wachten
Actief wachten
26
Geprogrammeerde in/uitvoer
CVO
Randapparaat klaar bezig gegevens
Actief Actief WachtenWachten
Opdracht gevenOpdracht geven
Gegevens inlezenGegevens inlezen
Act
ief
Act
ief
Wach
teW
ach
tenn
Toestand uitlezen
27
Geprogrammeerde in/uitvoer
int Pt, Pog, opdracht, geg;
Pt = 6; Pog = 7;
opdracht = …;
/* geven van opdracht */
while (getPort(Pt) != KLAAR);
putPort(Pog, opdracht);
/* lezen van gegevens */
while (getPort(Pt) != GEG);
geg = getPort(Pog);
MEVA Pt,6MEVA Pog,7MEVA KLAAR,0MEVA GEG,2
LUS1: INV R0,P<Pt>VGL.w R0,<KLAAR>VSP NGEL,LUS1HIA R0,opdUTV R0,P<Pog>
LUS2: INV R0,P<Pt>VGL.w R0,<GEG>VSP NGEL,LUS2INV R0,P<Pog>…
opd: …
28
Geprogrammeerde in/uitvoer
MEVA Pt,6MEVA Pog,7MEVA KLAAR,0MEVA GEG,2
LUS1: INV R0,P<Pt>VGL.w R0,<KLAAR>VSP NGEL,LUS1HIA R0,opdUTV R0,P<Pog>
LUS2: INV R0,P<Pt>VGL.w R0,<GEG>VSP NGEL,LUS2INV R0,P<Pog>…
opd: …
Actief wachten
Actief wachten
29
Geprogrammeerde in/uitvoer
Voorbeeld: Scherm
Toestandspoort = P2; Opdrachtpoort = P3
Opdracht Betekenis
…
1000000ccc Druk een letter af op het schermccc: ASCII voorstelling van de letter
…
30
Geprogrammeerde in/uitvoer
char zone[100] = { ‘v’, … };
int n = 100;
int idx = 0;
int cmd;
do {
while (getPort(2) != KLAAR);
cmd = 1000000000 + zone[idx++];
putPort (3, cmd);
} while (idx < n);
HIA.w R2,0LUS: INV R0,P2
VGL.w R0,<KLAAR>VSP NGEL,LUSHIA R1,OPDROPT R1,ZONE(R2+)UTV R1,P3VGL R2,NVSP KL,LUS…
OPDR: 1000000000N: 100ZONE: 0000000086
0000000111…
31
Geprogrammeerde in/uitvoer
HIA.w R2,0LUS: INV R0,P2
VGL.w R0,<KLAAR>VSP NGEL,LUSHIA R1,OPDROPT R1,ZONE(R2+)UTV R1,P3VGL R2,NVSP KL,LUS…
OPDR: 1000000000N: 100ZONE: 0000000086
0000000111…
Actief wachten
Nuttige bevelen
32
Geprogrammeerde in/uitvoer
Performantie
Actief wachtenActief wachten
Eerste letterEerste letter
Tweede letterTweede letter
Actief wachtenActief wachten Actief wachtenActief wachten
Derde letterDerde letter
Scherm: 1000 tekens/sScherm: 1000 tekens/sDrama: 1 MIPSDrama: 1 MIPS
1 ms1 ms5 5 ss
Nuttig:Nuttig: 5/1000 = 0,5 %5/1000 = 0,5 %
33
Geprogrammeerde in/uitvoer
100 letters 100 ms 1 MIPS computer: 0,5 % nuttig gebruik CVO 10 MIPS computer: 0,05 % nuttig gebruik 100 MIPS computer: 0,005% nuttig gebruik …
34
Geprogrammeerde in/uitvoer
Voorbeeld 2: inlezen van toetsaanslagen Geen opdracht nodig Toetsaanslag:
Pt == GEGEVENS
Aanduiding toets in Pog
Performantie? Gebruiker: 5 letters/s 1 letter / 200 ms 1 MIPS machine Inlezen van toetsaanslag + lus < 10 bevelen Rendement < 0,005 %
35
Programma-onderbrekingen
CVO test niet voortdurend de toestandspoort Bestuurder van randapparaat:
Meldt aan CVO wanneer klaar met opdracht, gegevens beschikbaar, fout, …
Geen actief wachten meer! Toepassing: gegevensdebiet eerder laag Zelfde voorbeeld:
Scherm 100 letters afbeelden 1ste letter via vorige methode
36
Programma-onderbrekingen
char zone[100] = { ‘v’, … };int n = 100;int idx = 0;main (){
/* eerste letter */int cmd;while (getPort(2) != KLAAR);cmd = 1000000000 +
zone[idx++];putPort(3, cmd);/* doe iets anders */…
}
/* volgende letters */interrupt po_rout4 (){
int cmd;/* bewaar accumulatoren */if (getPort(2) == KLAAR) {
if (idx < n) {cmd = 1000000000 +
zone[idx++];putPort (3, cmd);
}} else { /* fout */ }/* herstel accumulatoren */
}
37
Programma-onderbrekingen
interrupt po_rout4 (){
int cmd;/* bewaar accumulatoren */if (getPort(2) == KLAAR) {
if (idx < n) {cmd = 1000000000 +
zone[idx++];putPort (3, cmd);
}} else { /* fout */ }/* herstel accumulatoren */
}
PO_R4: BIG R0,BEWAARBIG R5,BEWAAR+1BIG R6,BEWAAR+2INV R0,P<Pt>VGL.w R0,<KLAAR>VSP NGEL,FOUTHIA R6,INDEXVGL R5,AANTALVSP GEL,EINDEHIA R5,OPDROPT R5,ZONE(R6+)UTV R5,P<Pog>BIG R6,INDEX
EINDE: HIA R0,BEWAAR…KTO
38
Programma-onderbrekingen
PO_R4: BIG R0,BEWAARBIG R5,BEWAAR+1BIG R6,BEWAAR+2INV R0,P<Pt>VGL.w R0,<KLAAR>VSP NGEL,FOUTHIA R6,INDEXVGL R5,AANTALVSP GEL,EINDEHIA R5,OPDROPT R5,ZONE(R6+)UTV R5,P<Pog>BIG R6,INDEX
EINDE: HIA R0,BEWAAR…KTO
17 bevelen / letter
39
Programma-onderbrekingen
CVO gebruikersprogr. PO
Schermbestuurder klaar bezig
Opdracht geven
Nuttig werkNuttig werkToestand uitlezen
Letter afbeelden
CVO en Bestuurderbeide bezig
40
Programma-onderbrekingen
Performantie Extra overhead door PO
Bewaar R0, R5, R6 … Herstel R0, R5, R6 Index in geheugen bewaren …
17 instructies / letter 17 s Scherm: 1 ms / letter Overige tijd: 983 s besteden aan de uitvoering
van een ander programma = ± 983 instructies!
41
Geprogrammeerde in/uitvoer
Performantie
Iets andersIets anders
Eerste letterEerste letter
Tweede letterTweede letter
Derde letterDerde letter
Scherm: 1000 tekens/sScherm: 1000 tekens/sDrama: 1 MIPSDrama: 1 MIPS
1 ms1 ms17 17 ss
Iets andersIets anders Iets andersIets anders
Nuttig werk!!!Nuttig werk!!!
42
Programma-onderbrekingen
Niet voor apparaten met hoog debiet Na KTO, onmiddellijk een nieuwe PO Geen tijd om iets anders te doen Risico dat PO-routine te lang duurt en
gegevens verloren gaan
43
Transport via CVO
CVOSchijf
bestuurder
Toestenbord-
bestuurder
GeheugenGeheugen
Geheugen-
bestuurder
44
Transport via CVO
CVOSchijf
bestuurder
Scherm-bestuurde
r
GeheugenGeheugen
Geheugen-
bestuurder
45
Directe geheugentoegang
DGT Engels: DMA (Direct Memory Access) Optimisatie van vorige schema
CVO geeft opdracht aan bestuurder Bestuurder zorgt zelf voor het transport van/naar
het geheugen Na transport: Bestuurder PO-aanvraag
46
Directe geheugentoegang
CVOSchijf
bestuurder
Bestuurder
van drukker
GeheugenGeheugen
Geheugen-
bestuurder
Lezen …
Opdracht
Transport
47
Directe geheugentoegang
CVOSchijf
bestuurder
Bestuurder
van drukker
GeheugenGeheugen
Geheugen-
bestuurder
Schrijven …
Opdracht
Transport
48
Directe geheugentoegang
KamSpoor
SectorCilinder(= alle sporen voor bep. positie kam)
Lezen/Schrijven: 2 stappena) Positioneer kam (+ selecteer kop)b) Lees/Schrijf # opeenvolgende sectoren
Schijf:
49
Directe geheugentoegang
Voorbeeld: DRAMA-Schijf
Toestandspoort = P6; Opdrachtpoort = P7 300 cilinders elke cilinder: 40 sporen (40 koppen) elk spoor: 50 sectoren elke sector: 100 getallen van 10 cijfers
Alfanumerische informatie (3 cijfers/letter) Per sector 100 getallen 3 letters/getal
300 letters 1000 letters inlezen 4 opeenvolgende sectoren
50
Directe geheugentoegang
Opdrachten voor de schijfbestuurder:
Opdracht Betekenis
…
100ttt0ccc Positioneer kam op cilinder ccc enactiveer lees/schrijfkop ttt
200lll0sss Lees lll opeenvolgende sectoren vanafsector sss
500000gggg gggg is het adres van de DGT-geheugenzone
…
51
Directe geheugentoegang
int inlezen;main(){
/* positioneer kam */int cmd = 1000000000 +
kop * 10000 + cil;
while (getPort(6) != KLAAR);putPort (7, cmd);inlezen = 1;/* doe iets anders */…
}
MAIN: HIA R5,KOPVER R5,TDZDOPT R5,CILOPT R5,P_OPD
LUS: INV R0,P6VGL.w R0,<KLAAR>VSP NGEL,LUSUTV R5,P7| iets anders ……
TDZD: 10000KOP: 13CIL: 37P_OPD: 1000000000
52
Directe geheugentoegang
interrupt po_rout6() {/* bewaar accumulatoren */if (getPort(6) == KLAAR) {
if (--inlezen == 0) lees( );else /* anders */ …
} else { /* fout */ … }/* herstel accumulatoren */
}void lees ( ){
/* geef &dgt_zone door */…/* geef lees opdracht */…
}
PO_R6: … | bewaar RiINV R0,P6VGL.w R0,<KLAAR>VSP NGEL,FOUTHIA R0,INLEZENAFT.w R0,1BIG R0,INLEZENVSP NNUL,ANDERSSBR LEESSPR EINDE
ANDERS: …EINDE: … | herstel Ri
KTOFOUT: …
53
Directe geheugentoegang
void lees ( ) {/* geef & dgt_zone door */int cmd = 5000000000 +
(int) &zone;putPort(7,cmd);/* geef lees-opdracht */if (getPort(6) == KLAAR) {
cmd = 2000000000 +aantal * 10000 +sector;
putPort (7,cmd);} else { /* fout */ … }
}
LEES: HIA R5,D_OPDOPT.a R5,DGT_ZONEUTV R5,P7INV R0,P6VGL.w R0,<KLAAR>VSP NGEL,FOUTHIA R5,AANTALVER R5,TDZDOPT R5,SECTOROPT R5,L_OPDUTV R5,P7KTG
D_OPD: 5000000000L_OPD: 2000000000TDZD: 10000DGT_ZONE: RESGR 400…
54
Directe geheugentoegang
CVO progr. PO
Schijfbest. klaar bezig
Lees-opdracht
Nuttig werkNuttig werk
Sectoren inlezen enin geheugen plaatsen
Positioneer
DGT-adresopdracht
Nuttig werkNuttig werk
CVO en Bestuurderbeide bezig
CVO en Bestuurderbeide bezig
55
Directe geheugentoegang
CVOSchijf
bestuurder
Bestuurder
van drukker
GeheugenGeheugen
Geheugen-
bestuurder
Bus kan nietgelijktijdig gebruiktworden!
CVO of Bestuurder zalCVO of Bestuurder zalmoeten wachten tot anderemoeten wachten tot andereklaar is met geheugentoegang.klaar is met geheugentoegang.
56
Directe geheugentoegang
Schijf: Geheugencyclus-diefstal
CVOCVO
GeheugenGeheugen
SchijfbestuurderSchijfbestuurder
L1 L2
L1 L2
S1
S1
S3
S3
S2
S2
L4
L4
CyclusdiefstalCyclusdiefstal
57
Directe geheugentoegang
Grote computerinstallaties: Aparte gegevenspaden + gespreid geheugen
CPU
Schijfbestuurde
r
Geheugen Geheugen (module 1)(module 1)
Geheugen-
bestuurder
GeheugenGeheugen(module 2)(module 2)
58
Directe geheugentoegang
Bestuurder heeft geen GEGEVENS-toestand
Klaar
BezigFout
FoutFout
Opdracht
InitialiseerOpdracht klaar
59
Kanaalbestuurder!
Speciale in/uitvoer processoren
Lees …Schrijf ……
CVO
Kanaalbestuurder(Speciale I/U Processor)
Teveel tijd met
I/O bezig!
Lees …Schrijf ……
60
Speciale in/uitvoer processoren
CVO
Klaar!Echte Rekenwerk
…
61
Speciale in/uitvoer processoren
CVO
Kanaalbestuurde
r
Schijfbestuurde
r
Schijfbestuurde
r
Drukkerbestuurde
r
Drukkerbestuurde
r
Geheugen-
bestuurder
GeheugenGeheugen
MainframesMainframes
Specialein/uitvoerprocessor
62
Speciale in/uitvoer processoren
CVO Lijst met uit te voeren opdrachten opstellen
= speciaal kanaalprogramma opstellen Doorspelen aan kanaalbestuurder
Kanaalbestuurder Voert het kanaalprogramma uit
Opdrachten geven aan bestuurders PO’s van bestuurders afhandelen (fouten, klaar, …) DGT verzorgen
Als volledige kanaalprogramma afgewerkt: PO aanvragen Voordeel:
CVO minder PO’s afhandelen CVO meer tijd voor ander werk
63
Speciale in/uitvoer processoren
Opdrachten voor de kanaalbestuurder: Toestandpoort = P8, Opdracht/Geg.Poort = P9
Opdracht Betekenis
…
200000gggg Begin uitvoering van het kanaal- programma dat op adres gggg begint.
…
64
Speciale in/uitvoer processoren
Kanaalprogramma: Eigen machinetaal Vaak lange bevelen (veel argumenten) Voorbeeld:
KAM BESTUURDER=7,SCHIJF=0,CIL=13,SPOOR=37
KAM BESTUURDER=8,SCHIJF=1,CIL=200,SPOOR=18
LEES BESTUURDER=7,SCHIJF=0,DGT_ADRES=6000,\ LENGTE=4,SECTOR=7
SCHRIJF BESTUURDER=8,SCHIJF=1,DGT_ADRES=7000,\
LENGTE=2,SECTOR=24
STOP
6677000370370013001366881101801802000200
33770000000060006000
90900004000400070007
44881100000080008000
90900002000200240024
99999999999999999999
65
Speciale in/uitvoer processoren
int kanaalprogr[100];
main()
{
/* stel kanaalprogramma op */
…
int cmd = 2000000000 +
(int) &kanaalprogr;
while (getPort(8) != KLAAR);
putPort (9, cmd);
/* doe iets anders */
…
}
MAIN: … | kanaalprog.
…
HIA R5,K_OPD
OPT.a R5,KPROG
LUS: INV R0,P8
VGL.w R0,<KLAAR>
VSP NGEL,LUS
UTV R5,P9
| Doe iets anders
…
KPROG: RESGR 100
K_OPD: 2000000000
66
Satellietcomputers
Front-end Computer verbonden met in/uitvoer apparaten
Back-end Computer verbonden met hulpgeheugens
Back-endBack-end Front-endFront-endHoofd-Hoofd-computercomputer
67
Satellietcomputers
Front-end: Verbonden met 100-den terminals Invoer van toetsenborden:
Inlezen toetsaanslagen Lokaal editeren (backspace, …) Op scherm tonen wat ingetypt is Als lijn volledig doorsturen naar hoofdcomputer
Uitvoer naar schermen …
68
Satellietcomputers
Voordelen: Minder PO-en
Hoofdcomputer meer tijd voor berekeningen Satellietcomputer hoeft niet snel te zijn
Voordelen t.o.v. kanaalbestuurder: Satellietcomputers grotere varieteit
randapparatuur Satellietcomputer ook gewone berekeningen Programmatuur eenvoudiger te vervangen Onafhankelijk van een fabrikant
69
Satellietcomputers
Nadelen satellietcomputers Minder betrouwbaar Kans(defect) = Kans(Hoofdcomputer=defect)
+ Kans(Satellietcomputer=defect) Oplossing:
Reserve (backup) computers Onderhoudscontract
Idem voor kanaalbestuurders
70
Stuurprogramma
Invoer/uitvoer = Complex Op hoogte van HOE besturen
Welke bevelen, bevelenopmaak, volgorde, … Weinig systematiek Soms standardisatie maar veel standaarden!
Indien met programma-onderbrekingen: Buffering + boekhouding
Tijdsafhankelijke problemen Verloren gaan van gegevens, …
71
Stuurprogramma
Voor elk soort randapparaat: Stuurprogramma
(Engels: device driver) PO-routine
Device driver uitgevoerd als: Gebruikersprogramma invoer/uitvoer apparaat PO vanwege het randapparaat PO-routine nog werk? device driver
Onderdeel v/hBesturingsprogramma(Operating System)
72
Geheugen
Besturings-Besturings-programmaprogramma
Stuurprogramma’s
Gebruikers-programma
PO-routine(schijf)
stuurprogramma(schijf)
PO-routine(scherm)
stuurprogramma(scherm)
PO-routine(klavier)
stuurprogramma(klavier)
PO-vectorenPO-vectoren
Niet rechtstreeks
73
Cursustekst
Hoofdstuk 4: pag. 124 pag. 146