1 SOCS Hoofdstuk 4 Besturingssystemen. 2 Inhoud Inleiding Programmatoestandswoord...

Post on 08-Jun-2015

215 views 2 download

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