Randapparaat

advertisement
SOCS
Hoofdstuk 4
Besturingssystemen
1
Inhoud









Inleiding
Programmatoestandswoord
Programma-onderbrekingen
Invoer en uitvoer
Processortoestanden
Multiprogrammatie
Soorten Besturingssystemen
Taken van een besturingssysteem
Kosten en Baten
2
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
3
Invoer en uitvoer

Besturingssysteem

Besturen van Randapparaten


Gebruikersprogramma


Opdrachten geven, PO opvangen, fouten …
Hoog-niveau opdrachten
LEZ (= complexe operatie)




Toetsaanslagen  code
Blanko’s, return-toets, ‘–’, Backspace
Omzetten naar decimaal getal
(ev. 10-complement)
Tonen op scherm (‘echo’)
4
Randapparaten


(Mechanisch gedeelte)
Elektronisch gedeelte



= Bestuurder (Controller, Adapter)
Insteekkaart
Vaak meerdere apparaten besturen
5
Randapparaten
Buffer
Speciale Registers
Ptoestand
Popdracht/geg.
CVO
Schijf
bestuurder
Bestuurder
van drukker
Poorten
Bus
Geheugenbestuurder
Geheugen
6
Randapparaten

Toestandspoort (Pt)


Toestand v. (bestuurder) randapparaat
(LEZEN)
Opdracht en gegevenspoort (Pog)


Opdracht aan bestuurder geven
(SCHRIJVEN)
Gegevens van (bestuurder) apparaat ophalen
(LEZEN)
7
Randapparaten

Lezen/schrijven uit/in “poorten”
Twee methodes:

Speciale instructies

Twee verschillende adresruimtes:
• Geheugenregisters
• Poorten van randapparaten

Inpassing in het geheugen

Slechts 1 adresruimte
8
Randapparaten

Speciale instructies



INV Ri,Pxxxx
Ri  Pxxxx
UTV Rj,Pyyyy
Pyyyy  Rj
(INVoer)
(UiTVoer)
Pxxxx  P0, P1, …, P9998, P9999
8199i9xxxx
8299j9yyyy
 Afspraak:
Pt : t = even, Pog = Pt+1
9
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
10
Randapparaten

Lezen/Schrijven speciale registers (poorten)
 Inpassing
in het centrale geheugen
0000
…
Geheugenregisters
9899
9900
P0
9901
P1
…
9909
Poorten
P9
9910
…
9999
Geheugenregisters
11
Randapparaat

Toestandspoort (Pt)


Toestand van het randapparaat
Alleen uitlezen
Waarde
Naam
0000000000
Klaar
Bestuurder klaar voor nieuwe
opdracht
0000000001
Bezig
Toestel is bezig met uitvoering
van een opdracht
0000000002
9999999999
Verklaring
Gegevens Er zijn gegevens beschikbaar in
de gegevenspoort
Fout
Er heeft zich een fout
voorgedaan
12
PO-aanvraag
Randapparaat
Fout
Bezig
Klaar
Gegevens
13
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, …
14
Randapparaat

Sommige overgangen: PO-aanvraag

Interventie van het CVO gewenst
Begintoestand
Eindtoestand
Verklaring
???
Fout
CVO moet fout herstellen
(herinitialisatie)
Bezig
Klaar
CVO mag nieuwe opdracht
geven
Bezig
Gegevens CVO moet gegevens inlezen
(beschikbaar na opdracht)
Klaar
Gegevens CVO moet gegevens inlezen
(beschikbaar zonder opdracht)
15
Randapparaat
P0
0000000002
P1
0000000088
P2
P3
0000000000
0000000000
0000001000 R0
INV R0,P2
Pt
Pog
UTV R1,P3
INV R2,P1
UTV R3,P0
1000000020 R1
0000000050 R2
9999999999 R3
…
16
Randapparaat
P0
0000000002
P1
0000000088
P2
0000000000
P3
0000000000
0000000000
0000001000 R0
INV R0,P2
UTV R1,P3
INV R2,P1
UTV R3,P0
1000000020 R1
0000000050 R2
9999999999 R3
…
17
Randapparaat
P0
0000000002
P1
0000000088
P2
0000000000
0000000001
P3
1000000020
0000000000 R0
INV R0,P2
UTV R1,P3
INV R2,P1
UTV R3,P0
1000000020 R1
0000000050 R2
9999999999 R3
…
18
Randapparaat
P0
0000000002
0000000000
P1
0000000088
P2
0000000001
0000000000
P3
1000000020
0000000000 R0
1000000020 R1
INV R0,P2
UTV R1,P3
INV R2,P1
UTV R3,P0
Niet toegelaten!
(P0 = toestandspoort)
0000000088
0000000050 R2
9999999999 R3
…
19
C
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
20
C
PO-routine

PO-routine voorstellen als ( C):
interrupt po_routine()
{
Bewaar accumulatoren
…
Herstel accumulatoren
}
Niet te
schrijven
in C
KTO
i.p.v. KTG
21
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
22
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
23
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);
24
Geprogrammeerde in/uitvoer
int Pt, Pog, opdracht, geg;
Pt = 6; Pog = 7;
opdracht = …;
/* geven van opdracht */
while (getPort(Pt) != KLAAR);
putPort(Pog, opdracht);
Actief wachten
/* lezen van gegevens */
while (getPort(Pt) != GEG);
geg = getPort(Pog);
Actief wachten
25
Geprogrammeerde in/uitvoer
Gegevens inlezen
Opdracht geven
Actief Wachten
CVO
Randapparaat
klaar
bezig
gegevens
Toestand uitlezen
26
Geprogrammeerde in/uitvoer
int Pt, Pog, opdracht, geg;
Pt = 6; Pog = 7;
opdracht = …;
MEVA
MEVA
MEVA
MEVA
/* geven van opdracht */
while (getPort(Pt) != KLAAR);
putPort(Pog, opdracht);
LUS1: INV
VGL.w
VSP
HIA
UTV
R0,P<Pt>
R0,<KLAAR>
NGEL,LUS1
R0,opd
R0,P<Pog>
LUS2: INV
VGL.w
VSP
INV
…
opd: …
R0,P<Pt>
R0,<GEG>
NGEL,LUS2
R0,P<Pog>
/* lezen van gegevens */
while (getPort(Pt) != GEG);
geg = getPort(Pog);
Pt,6
Pog,7
KLAAR,0
GEG,2
27
Geprogrammeerde in/uitvoer
MEVA
MEVA
MEVA
MEVA
Actief wachten
Actief wachten
Pt,6
Pog,7
KLAAR,0
GEG,2
LUS1: INV
VGL.w
VSP
HIA
UTV
R0,P<Pt>
R0,<KLAAR>
NGEL,LUS1
R0,opd
R0,P<Pog>
LUS2: INV
VGL.w
VSP
INV
…
opd: …
R0,P<Pt>
R0,<GEG>
NGEL,LUS2
R0,P<Pog>
28
Geprogrammeerde in/uitvoer

Voorbeeld:

Scherm

Toestandspoort = P2; Opdrachtpoort = P3
Opdracht
Betekenis
…
1000000ccc Druk een letter af op het scherm
ccc: ASCII voorstelling van de letter
…
29
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,0
LUS: INV
R0,P2
VGL.w R0,<KLAAR>
VSP
NGEL,LUS
HIA
R1,OPDR
OPT
R1,ZONE(R2+)
UTV
R1,P3
VGL
R2,N
VSP
KL,LUS
…
OPDR: 1000000000
N:
100
ZONE: 0000000086
0000000111
…
30
Geprogrammeerde in/uitvoer
Actief wachten
Nuttige bevelen
HIA.w R2,0
LUS: INV
R0,P2
VGL.w R0,<KLAAR>
VSP
NGEL,LUS
HIA
R1,OPDR
OPT
R1,ZONE(R2+)
UTV
R1,P3
VGL
R2,N
VSP
KL,LUS
…
OPDR: 1000000000
N:
100
ZONE: 0000000086
0000000111
…
31
Geprogrammeerde in/uitvoer

Performantie
Actief wachten
5 s
Actief wachten
Actief wachten
Derde letter
1 ms
Tweede letter
Eerste letter
Nuttig: 5/1000 = 0,5 %
Scherm: 1000 tekens/s
Drama: 1 MIPS
32
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
…
33
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 %
34
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
35
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 */
}
36
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
BIG
BIG
INV
VGL.w
VSP
HIA
VGL
VSP
HIA
OPT
UTV
BIG
EINDE: HIA
…
KTO
R0,BEWAAR
R5,BEWAAR+1
R6,BEWAAR+2
R0,P<Pt>
R0,<KLAAR>
NGEL,FOUT
R6,INDEX
R5,AANTAL
GEL,EINDE
R5,OPDR
R5,ZONE(R6+)
R5,P<Pog>
R6,INDEX
R0,BEWAAR
37
Programma-onderbrekingen
17 bevelen / letter
PO_R4: BIG
BIG
BIG
INV
VGL.w
VSP
HIA
VGL
VSP
HIA
OPT
UTV
BIG
EINDE: HIA
…
KTO
R0,BEWAAR
R5,BEWAAR+1
R6,BEWAAR+2
R0,P<Pt>
R0,<KLAAR>
NGEL,FOUT
R6,INDEX
R5,AANTAL
GEL,EINDE
R5,OPDR
R5,ZONE(R6+)
R5,P<Pog>
R6,INDEX
R0,BEWAAR
38
Programma-onderbrekingen
CVO en Bestuurder
beide bezig
Toestand uitlezen
Nuttig werk
CVO
gebruikersprogr.
PO
Schermbestuurder
klaar
bezig
Opdracht geven
Letter afbeelden
39
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!
40
Geprogrammeerde in/uitvoer

Performantie
Iets anders
17 s
Nuttig werk!!!
Iets anders
Iets anders
Derde letter
1 ms
Tweede letter
Eerste letter
Scherm: 1000 tekens/s
Drama: 1 MIPS
41
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
42
Transport via CVO
CVO
Schijf
bestuurder
Geheugenbestuurder


Toestenbordbestuurder
Geheugen
43
Transport via CVO
CVO
Schijf
bestuurder
Geheugenbestuurder


Schermbestuurder
Geheugen
44
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
45
Directe geheugentoegang
Lezen …
CVO

Schijf
bestuurder
Bestuurder
van drukker

Geheugen-
Opdracht
bestuurder
Geheugen
Transport
46
Directe geheugentoegang
Schrijven …
CVO
Opdracht

Schijf
bestuurder
Bestuurder
van drukker

Geheugenbestuurder
Transport
Geheugen
47
Directe geheugentoegang
Schijf:
Kam
Spoor
Sector
Cilinder
(= alle sporen voor
bep. positie kam)
Lezen/Schrijven: 2 stappen
a) Positioneer kam (+ selecteer kop)
b) Lees/Schrijf # opeenvolgende sectoren
48
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
49
Directe geheugentoegang

Opdrachten voor de schijfbestuurder:
Opdracht
Betekenis
…
100ttt0ccc Positioneer kam op cilinder ccc en
activeer lees/schrijfkop ttt
200lll0sss Lees lll opeenvolgende sectoren vanaf
sector sss
500000gggg gggg is het adres van de DGTgeheugenzone
…
50
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,KOP
VER
R5,TDZD
OPT
R5,CIL
OPT
R5,P_OPD
LUS:
INV
R0,P6
VGL.w R0,<KLAAR>
VSP
NGEL,LUS
UTV
R5,P7
| iets anders …
…
TDZD: 10000
KOP:
13
CIL:
37
P_OPD: 1000000000
51
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 Ri
INV
R0,P6
VGL.w R0,<KLAAR>
VSP
NGEL,FOUT
HIA
R0,INLEZEN
AFT.w R0,1
BIG
R0,INLEZEN
VSP
NNUL,ANDERS
SBR
LEES
SPR EINDE
ANDERS: …
EINDE: … | herstel Ri
KTO
FOUT:
…
52
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_OPD
OPT.a R5,DGT_ZONE
UTV
R5,P7
INV
R0,P6
VGL.w R0,<KLAAR>
VSP
NGEL,FOUT
HIA
R5,AANTAL
VER
R5,TDZD
OPT
R5,SECTOR
OPT
R5,L_OPD
UTV
R5,P7
KTG
D_OPD:
5000000000
L_OPD:
2000000000
TDZD:
10000
DGT_ZONE: RESGR 400
…
53
Directe geheugentoegang
CVO en Bestuurder
beide bezig
Nuttig werk
CVO
progr.
PO
Schijfbest.
klaar
bezig
Positioneer
CVO en Bestuurder
beide bezig
Nuttig werk
DGT-adres
opdracht
Leesopdracht
Sectoren inlezen en
in geheugen plaatsen
54
Directe geheugentoegang
Bus kan niet
gelijktijdig gebruikt
worden!
CVO
Schijf
bestuurder
Geheugenbestuurder
CVO of Bestuurder zal
moeten wachten tot andere
klaar is met geheugentoegang.
Bestuurder
van drukker
Geheugen
55
Directe geheugentoegang

Schijf: Geheugencyclus-diefstal
CVO
Geheugen
Schijfbestuurder
L1 L2
L1
S3
L4
L2 S1 S3 S2 L4
S1
S2
Cyclusdiefstal
56
Directe geheugentoegang

Grote computerinstallaties:

Aparte gegevenspaden + gespreid geheugen
Geheugen
(module 1)
CPU
Geheugenbestuurder
Geheugen
(module 2)
Schijf
bestuurder
57
Directe geheugentoegang

Bestuurder heeft geen GEGEVENS-toestand
Fout
Bezig
Klaar
58
Speciale in/uitvoer processoren
Teveel tijd
met
I/O bezig!
Kanaalbestuurder!
Lees …
Schrijf …
…
Lees …
Schrijf …
…
Kanaalbestuurder
(Speciale I/U Processor)
CVO
59
Speciale in/uitvoer processoren
Echte
Rekenwerk
…
CVO
Klaar!
60
Speciale in/uitvoer processoren
Geheugenbestuurder
CVO
Kanaal
bestuurder
Speciale
in/uitvoer
processor
Geheugen
Mainframes
Schijf
bestuurder
Drukker
bestuurder
Schijf
bestuurder
Drukker
bestuurder
61
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
62
Speciale in/uitvoer processoren

Opdrachten voor de kanaalbestuurder:

Toestandpoort = P8, Opdracht/Geg.Poort = P9
Opdracht
Betekenis
…
200000gggg Begin uitvoering van het kanaalprogramma dat op adres gggg begint.
…
63
Speciale in/uitvoer processoren

Kanaalprogramma:



Eigen machinetaal
Vaak lange bevelen (veel argumenten)
Voorbeeld:
KAM
KAM
LEES
BESTUURDER=7,SCHIJF=0,CIL=13,SPOOR=37
BESTUURDER=8,SCHIJF=1,CIL=200,SPOOR=18
6700370013
6810180200
BESTUURDER=7,SCHIJF=0,DGT_ADRES=6000,\
LENGTE=4,SECTOR=7
3700006000
SCHRIJF BESTUURDER=8,SCHIJF=1,DGT_ADRES=7000,\
9000040007
LENGTE=2,SECTOR=24
4810008000
STOP
9000020024
9999999999
64
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
65
Satellietcomputers

Front-end


Computer verbonden met in/uitvoer apparaten
Back-end

Computer verbonden met hulpgeheugens
Back-end
Hoofdcomputer
Front-end
66
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

…
67
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
68
Satellietcomputers

Nadelen satellietcomputers



Minder betrouwbaar
Kans(defect) = Kans(Hoofdcomputer=defect)
+ Kans(Satellietcomputer=defect)
Oplossing:



Reserve (backup) computers
Onderhoudscontract
Idem voor kanaalbestuurders
69
Stuurprogramma

Invoer/uitvoer = Complex

Op hoogte van HOE besturen




Indien met programma-onderbrekingen:


Welke bevelen, bevelenopmaak, volgorde, …
Weinig systematiek
Soms standardisatie maar veel standaarden!
Buffering + boekhouding
Tijdsafhankelijke problemen

Verloren gaan van gegevens, …
70
Stuurprogramma

Voor elk soort randapparaat:



Stuurprogramma
(Engels: device driver)
PO-routine
Onderdeel v/h
Besturingsprogramma
(Operating System)
Device driver uitgevoerd als:
Gebruikersprogramma invoer/uitvoer  apparaat
 PO vanwege het randapparaat  PO-routine 
nog werk?  device driver

71
Stuurprogramma’s
PO-vectoren
Gebruikersprogramma
Niet
rechtstreeks
Geheugen
PO-routine
(schijf)
PO-routine
(scherm)
stuurprogramma
(schijf)
stuurprogramma
(scherm)
Besturingsprogramma
PO-routine
(klavier)
stuurprogramma
(klavier)
72
Cursustekst

Hoofdstuk 4: pag. 124  pag. 146
73
Download