SOCS

69
1 SOCS Hoofdstuk 4 Besturingssysteme n

description

SOCS. Hoofdstuk 4 Besturingssystemen. Besturingssystemen. Werking van de computer besturen/regelen In geheugen geladen bij opstarten v/d computer Voordelen: Eenvoudiger om met computer te werken Laag niveau taken, verbergen details, … Computer efficiënt laten werken - PowerPoint PPT Presentation

Transcript of SOCS

Page 1: SOCS

1

SOCS

Hoofdstuk 4

Besturingssystemen

Page 2: SOCS

2

Besturingssystemen

Werking van de computer besturen/regelen In geheugen geladen bij opstarten v/d computer Voordelen:

Eenvoudiger om met computer te werken Laag niveau taken, verbergen details, …

Computer efficiënt laten werken Meerdere programma’s tegelijk, in- en uitvoer, …

Voldoende hardware ondersteuning! Programmaonderbrekingen, processortoestanden,

geprivilegieerde bevelen, beschermingsregisters, wekker, …

Page 3: SOCS

3

Besturingssystemen

HardwarHardwaree

BesturingssysteBesturingssysteemem

ToepassingeToepassingenn

GebruikeGebruikersrs

Page 4: SOCS

4

Inhoud

Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer Processortoestanden Multiprogrammatie Soorten Besturingssystemen Taken van een besturingssysteem Kosten en Baten

Page 5: SOCS

5

Inhoud

Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer Processortoestanden Multiprogrammatie Soorten Besturingssystemen Taken van een besturingssysteem Kosten en Baten

Page 6: SOCS

6

Inleiding

Besturingssysteem (Operating System) Doelstellingen

Gebruiksvriendelijker Efficiënter

Geen sine qua non Zonder BS: niet eenvoudig! Laden van programma, bewaren informatie, …

Eerste computers zeer duur Efficiëntie erg belangrijk

Page 7: SOCS

7

Inleiding

Voor bepaald type hardware DOS, OS/2 Intel PC VMS Dec (VAX) MVS IBM Mainframes

Voor verschillende hardware platformen Unix/Linux

Grote verschillen Verschillende hardware, gebruikers, beheerders

Gemeenschappelijke kenmerken

Page 8: SOCS

8

Inhoud

Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer Processortoestanden Multiprogrammatie Soorten Besturingssystemen Taken van een besturingssysteem Kosten en Baten

Page 9: SOCS

9

Programmatoestandswoord

Register van het CVO(Program Status Word, PSW)

Bevat informatie over: Toestand van het programma in uitvoering Toestand van de machine zelf

Bezig met uitvoering van instructie op adres 0090Conditiecode = 2Oei, Overloop!…

Page 10: SOCS

10

Programmatoestandswoord

20 decimale cijfer Verschillende velden

PTW3 = CC, PTW6..9 = BT, …

H/U S/P CCONV OVI SOI BT

GPF WEK DRKG IN UIT SCH OVL SPL MFT

0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19

Conditie-code

Bevelen-teller

Overloop-indicator

Stapel-overloop-indicator

Page 11: SOCS

11

Programmatoestandswoord

Sommige velden krijgen impliciet hun waarde neveneffect van uitvoering van een bevel

CC (HIA, BIG, OPT, …, VGL, LEZ, DRU) Indien overloop bij +,-,*,/,%, dan OVI 1,

anders OVI 0 Indien stapeloverloop, dan SOI 1,

anders SOI 0 BT wordt tijdens het ophalen van een bevel

opgehoogd of bij een sprong aangepast

Page 12: SOCS

12

Programmatoestandswoord

Waarde van sommige velden indirect testen: VSP-instructie

CC: NUL, NNUL, POS, NPOS, NEG, NNEG OVI: OVL (overloop), GOVL (geen overloop) SOI: SO (stapeloverloop), GSO (geen SO)

Page 13: SOCS

13

Programmatoestandswoord

int a, b, c;

main() {

a = getint();

while (a != 0) {

b = getint();

c = a – b;

if (c < 0) c = – c;

/* ... Zet c op stapel ... */

a = getint();

}

...

}

LEZLUS: VSP NUL,ENDWH

HIA R1,R0LEZAFT R1,R0 VSP NNEG,POSVER.w R1,-1

POS: BST R1 LEZSPR LUS

ENDWH: …

CC?

CC?

a, c R1b R0

Page 14: SOCS

14

Programmatoestandswoord

int a, b, c;

main() {

a = getint();

while (a != 0) {

b = getint();

c = a – b;

if (c < 0) c = – c;

/* ... Zet c op stapel ... */

a = getint();

}

...

}

LEZLUS: VSP NUL,ENDWH

HIA R1,R0LEZAFT R1,R0VSP NNEG,POSVER.w R1,-1

POS: BST R1LEZSPR LUS

ENDWH: …

Overloop?

Geen informatie overaantal of bereik van getallen

Page 15: SOCS

15

Programmatoestandswoord

int a, b, c;

main() {

a = getint();

while (a != 0) {

b = getint();

c = a – b;

if (c < 0) c = – c;

/* ... Zet c op stapel ... */

a = getint();

}

...

}

LEZLUS: VSP NUL,ENDWH

HIA R1,R0LEZAFT R1,R0VSP OVL,OVERLVSP NNEG,POSVER.w R1,-1

POS: BST R1LEZSPR LUS

ENDWH: …OVERL: …

Overloop?

Geen informatie overaantal of bereik van getallen

Page 16: SOCS

16

Programmatoestandswoord

int a, b, c;

main() {

a = getint();

while (a != 0) {

b = getint();

c = a – b;

if (c < 0) c = – c;

/* ... Zet c op stapel ... */

a = getint();

}

...

}

LEZLUS: VSP NUL,ENDWH

HIA R1,R0LEZAFT R1,R0VSP OVL,OVERLVSP NNEG,POSVER.w R1,-1VSP OVL,OVERL

POS: BST R1LEZSPR LUS

ENDWH: …OVERL: …

Stapel-overloop?

Geen informatie overaantal of bereik van getallen

Page 17: SOCS

17

Programmatoestandswoord

int a, b, c;

main() {

a = getint();

while (a != 0) {

b = getint();

c = a – b;

if (c < 0) c = – c;

/* ... Zet c op stapel ... */

a = getint();

}

...

}

LEZLUS: VSP NUL,ENDWH

HIA R1,R0LEZAFT R1,R0VSP OVL,OVERLVSP NNEG,POSVER.w R1,-1VSP OVL,OVERL

POS: BST R1VSP SO,STOVLLEZSPR LUS

ENDWH: …OVERL: …STOVL: …

Overloop?

Overloop?

Stapel-overloop?

Geen informatie overaantal of bereik van getallen

Page 18: SOCS

18

Inhoud

Inleiding Programmatoestandswoord Programma-onderbrekingen

Overloop en Oneindige lussen Bevelencyclus Programma-onderbrekingsmechanisme Soorten onderbrekingen Verbieden van programma-onderbrekingen Programma-onderbrekingsroutines Geprogrammeerde programma-onderbrekingen

Invoer en uitvoer …

Page 19: SOCS

19

Overloop

Overloop= resultaat kan niet meer voorgesteld worden

Voorbeeld:

HIA R1,a

OPT R1,b

VSP OVL,OVLP

OVLP: … 4.000.000.000

+1.000.000.000

=5.000.000.000

= – 5.000.000.000

Onmiddellijk testen na berekening

Zoniet: OVI Nieuwe waarde

Beter: Automatisch onderbreken Minder geheugen Sneller uitvoeren

Elektronica reeds aanwezig!

Page 20: SOCS

20

Overloop

RekenwerkRekenwerk

Oeps! Overloop!!!Stop de

uitvoering!!!

ControleControle

4.000.000.00

+1.000.000.000

= –5.000.000.000

Page 21: SOCS

21

Oneindige Lus

Meerdere programma’s Gebruikersprogramma Besturingssysteem …

Editor

Vertaler

Wisselen tussen programma’s Via SPR-bevel Niet op willekeurig ogenblik!

Programma controle over de processor bevelen van dit programma uitgevoerd worden CVO monopoliseren!!! Vb. Oneindige Lus

Page 22: SOCS

22

Oneindige Lus

int a, b, c;

main() {

a = 0;

b = 17;

while (a < b)

c += 10;

...

}

| a R1

| b R2

HIA.w R1,0

HIA.w R2,17

LUS: VGL R1,R2

VSP GRG,EINDE

OPT.w R3,10

SPR LUS

EINDE: …

Page 23: SOCS

23

Bevelencyclus

Volgorde besturing: Ophalen bevel

BT BT + 1 Instructie analyseren

Functiecode Operand(en) berekenen

Instructie uitvoeren

Doorbreken volgorde: Sprongbevel:

BT nieuwe waarde Programma-onderbreking

Page 24: SOCS

24

Programma-onderbreking

Uitvoering van een programma onderbreken+ uitvoering van ander programma beginnen

Page 25: SOCS

25

Programma-onderbreking

Boek lezen= programma uitvoeren Voor achter

(= sequentieel) Bel gaat

Bladwijzer (= onthouden waar gekomen)

Naar deur, deur openen, interactie bezoeker (= uitvoeren ander programma)

Bezoeker weg … Boek verderlezen

(bladwijzer) = onderbroken

programma hernemen

Page 26: SOCS

26

Programma-onderbrekingBoek lezen Bezoeker ontvangen

Toestand bewaren

Toestand herstellen

Bezoeker weg

Page 27: SOCS

27

Programma-onderbreking

Verschillende oorzaken …

Page 28: SOCS

28

Programma-onderbrekingH/U S/P CCONV OVI SOI BT

GPF WEK DRKG IN UIT SCH OVL SPL MFT0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19000

0

00000

Ond

erbr

ekin

gsvl

agge

n 123456789

CVO (processor)

Onderbreking gevraagd!

1

Page 29: SOCS

29

Programma-onderbreking

Op elk ogenblik aangevraagd(asynchroon)

Eventueel ingaan nauitvoering huidige instructie

Bevelencyclus Ophalen bevel

BT BT + 1 Analyseren bevel

Functiecode Operanden

Uitvoeren bevel Programmaonderbreking

aangevraagd? Toestand bewaren Ander programma

uitvoeren

Page 30: SOCS

30

Programma-onderbreking

Toestand bewaren Toestand = BT, CC, OVI, SOI, … Op vaste plaats Op stapel

Eerste deel van PTW: PTW0..9

Risico! Ander programma uitvoeren

BT Nieuwe waarde Vaste waarde of afhankelijk onderbreking Adres vast bepaald of instelbaar

“Programma-onderbrekingsvectoren” DRAMA: 9990 + k (k = nummer PO)

0000009000

0000009500

0000009584

0000009112

0000009228

0000009012

0000009212

0000009612

000000971299919991

99929992

99939993

99949994

99959995

99969996

99979997

99989998

99999999

PO4

Page 31: SOCS

31

Voorbeeld01000100

01010101

01020102

01030103

89998999

90009000

90509050

99939993

99949994

1221009900

3221900103

0000000000

1111200000

1221300102

0000009212

0000009050

1221009100

0000909090

BIG R3,RESBIG R3,RES

SPR VERDERSPR VERDER

RES:RES: RESGR 1RESGR 1

VERDER:VERDER: HIA.w R2,0HIA.w R2,0

… …

……

PO_ROUT4:PO_ROUT4: BIG BIG R0,BEWAARR0,BEWAAR

……

PO-vectoren

R9R9

Stapel

Page 32: SOCS

32

Voorbeeld

3221900103

0000000000

1111200000

1221009900

122130010201000100

01010101

01020102

01030103

89998999

90009000

90509050

99939993

99949994

0000009212

0000009050

Processor

0000000020R0 R0

1112000000BRBR

0 1 0 0BTBT

0

SOISOI

0

OVIOVI

2

CCCC

110

1111111111R3 R3 1221009100

0000909090

0000009000R9 R9

0

0

0

0

0

0

0

0

0

Ond

erbr

ekin

gsvl

agge

n

1

2

3

4

5

6

7

8

9

Ophalen

Page 33: SOCS

33

Voorbeeld

3221900103

0000000000

1111200000

1221009900

122130010201000100

01010101

01020102

01030103

89998999

90009000

90509050

99939993

99949994

0000009212

0000009050

Processor

0 1 0 1BTBT

0

SOISOI

0000000020R0 R0

1221300102BRBR

0

OVIOVI

2

CCCC

110

1111111111R3 R3 1221009100

0000909090

0000009000R9 R9

0

0

0

0

0

0

0

0

0

Ond

erbr

ekin

gsvl

agge

n

1

2

3

4

5

6

7

8

9

Analyseren, Uitvoeren

Page 34: SOCS

34

Voorbeeld

3221900103

1111111111

1111200000

1221009900

122130010201000100

01010101

01020102

01030103

89998999

90009000

90509050

99939993

99949994

0000009212

0000009050

Processor

0 1 0 1BTBT

0

SOISOI

0000000020R0 R0

1221300102BRBR

0

OVIOVI

1

CCCC

110

1111111111R3 R3 1221009100

0000909090

0000009000R9 R9

0

0

0

0

0

0

0

0

0

Ond

erbr

ekin

gsvl

agge

n

1

2

3

4

5

6

7

8

9

PO aangevraagd?

Page 35: SOCS

35

Voorbeeld

3221900103

1111111111

1111200000

1221009900

122130010201000100

01010101

01020102

01030103

89998999

90009000

90509050

99939993

99949994

0000009212

0000009050

Processor

0 1 0 1BTBT

0

SOISOI

0000000020R0 R0

1221300102BRBR

0

OVIOVI

1

CCCC

110

1111111111R3 R3 1221009100

0000909090

0000009000R9 R9

0

0

0

0

0

0

0

0

0

Ond

erbr

ekin

gsvl

agge

n

1

2

3

4

5

6

7

8

9

Ophalen

Page 36: SOCS

36

Voorbeeld

3221900103

1111111111

1111200000

1221009900

122130010201000100

01010101

01020102

01030103

89998999

90009000

90509050

99939993

99949994

0000009212

0000009050

Processor

0 1 0 2BTBT

0

SOISOI

0000000020R0 R0

3221900103BRBR

0

OVIOVI

1

CCCC

110

1111111111R3 R3 1221009100

0000909090

0000009000R9 R9

0

0

0

0

0

0

0

0

0

Ond

erbr

ekin

gsvl

agge

n

1

2

3

4

5

6

7

8

9

1

Analyseren, Uitvoeren

Page 37: SOCS

37

Voorbeeld

3221900103

1111111111

1111200000

1221009900

122130010201000100

01010101

01020102

01030103

89998999

90009000

90509050

99939993

99949994

0000009212

0000009050

Processor

0 1 0 3BTBT

0

SOISOI

0000000020R0 R0

3221900103BRBR

0

OVIOVI

1

CCCC

110

1111111111R3 R3 1221009100

0000909090

0000009000R9 R9

0

0

0

0

0

0

0

0

0

Ond

erbr

ekin

gsvl

agge

n

1

2

3

4

5

6

7

8

9

1

PO aangevraagd?

Page 38: SOCS

38

Voorbeeld

3221900103

1111111111

1111200000

1221009900

122130010201000100

01010101

01020102

01030103

89998999

90009000

90509050

99939993

99949994

0000009212

0000009050

Processor

0 1 0 3BTBT

0

SOISOI

0000000020R0 R0

3221900103BRBR

0

OVIOVI

1

CCCC

110

1111111111R3 R3 1221009100

0000909090

0000009000R9 R9

0

0

0

0

0

0

0

0

0

Ond

erbr

ekin

gsvl

agge

n

1

2

3

4

5

6

7

8

9

1

PO aangevraagd? Push(PTW0..9)

Page 39: SOCS

39

Voorbeeld

3221900103

1111111111

1111200000

1221009900

122130010201000100

01010101

01020102

01030103

89998999

90009000

90509050

99939993

99949994

0000009212

0000009050

Processor

0 1 0 3BTBT

0

SOISOI

0000000020R0 R0

3221900103BRBR

0

OVIOVI

1

CCCC

110

1111111111R3 R3 1221009100

0111000103

0000008999R9 R9

0

0

0

0

0

0

0

0

0

Ond

erbr

ekin

gsvl

agge

n

1

2

3

4

5

6

7

8

9

1

PO aangevraagd? PO-vlag[4] 0

Page 40: SOCS

40

Voorbeeld

3221900103

1111111111

1111200000

1221009900

122130010201000100

01010101

01020102

01030103

89998999

90009000

90509050

99939993

99949994

0000009212

0000009050

Processor

0 1 0 3BTBT

0

SOISOI

0000000020R0 R0

3221900103BRBR

0

OVIOVI

1

CCCC

110

1111111111R3 R3 1221009100

0111000103

0000008999R9 R9

0

0

0

0

0

0

0

0

0

Ond

erbr

ekin

gsvl

agge

n

1

2

3

4

5

6

7

8

9

PO aangevraagd? PTW6..9 …

Page 41: SOCS

41

Voorbeeld

3221900103

1111111111

1111200000

1221009900

122130010201000100

01010101

01020102

01030103

89998999

90009000

90509050

99939993

99949994

0000009212

0000009050

Processor

9 0 5 0BTBT

0

SOISOI

0000000020R0 R0

3221900103BRBR

0

OVIOVI

1

CCCC

010

1111111111R3 R3 1221009100

0111000103

0000008999R9 R9

0

0

0

0

0

0

0

0

0

Ond

erbr

ekin

gsvl

agge

n

1

2

3

4

5

6

7

8

9

Ophalen

Page 42: SOCS

42

Voorbeeld

3221900103

1111111111

1111200000

1221009900

122130010201000100

01010101

01020102

01030103

89998999

90009000

90509050

99939993

99949994

0000009212

0000009050

Processor

9 0 5 0BTBT

0

SOISOI

0000000020R0 R0

1221009900BRBR

0

OVIOVI

1

CCCC

010

1111111111R3 R3 1221009100

0111000103

0000008999R9 R9

0

0

0

0

0

0

0

0

0

Ond

erbr

ekin

gsvl

agge

n

1

2

3

4

5

6

7

8

9

Enz …

Page 43: SOCS

43

Soorten Onderbrekingen

1. Externe oorzaken Externe klok, wekker, reset-toets, …

2. Randapparatuur Bestuurder van invoer-, uitvoerapparaat, hulpgeheugen,

netwerkkaarten, … Klaar met aangevraagde bewerking,

Gegevens beschikbaar, Fout, …

3. Machinefout Elektrische spanning uitgevallen, Geheugenfout, …

4. Programmafout Overloop, Stapeloverloop, Ongeldig adres,

Ongeldige instructie, …

5. Geprogrammeerde programma-onderbreking Hulp vragen aan het besturingsprogramma

Page 44: SOCS

44

Soorten Onderbrekingen

Engels: Interrupt Trap, Exception (oorz. = programma)

Synchroon vs asynchroon Synchroon = op welbepaald tijdstip

Voorbeeld: ongeldige instructie (bij analyse) Asynchroon = op willekeurig tijdstip

Randapparaat klaar met opdracht

Page 45: SOCS

45

Soorten Onderbrekingen

Synch.Supervisie-oproep

Asynch.Wekker

Asynch.Drukkerbestuurder

Asynch.Toetsenbordbestuurder

Asynch.Schermbestuurder

Asynch.Schijfbestuurder

Synch.Programmafout (OVL)

Synch.Programmafout (SO)

Asynch.Synch.Synch.

---

WEK

DRK

IN

UIT

SCH

OVL

SPL

MFTMachinefoutOngeldige instructieOngeoorloofde instructie

9991

9992

9993

9994

9995

9996

9997

9998

9999

1

2

3

4

5

6

7

8

9

TypeMaskerOorzaakPO-vector

Nr= Prio

Page 46: SOCS

46

Soorten Onderbrekingen

Synch.Supervisie-oproep

Asynch.Wekker

Asynch.Drukkerbestuurder

Asynch.Toetsenbordbestuurder

Asynch.Schermbestuurder

Asynch.Schijfbestuurder

Synch.Programmafout (OVL)

Synch.Programmafout (SO)

Asynch.Synch.Synch.

---

WEK

DRK

IN

UIT

SCH

OVL

SPL

MFTMachinefoutOngeldige instructieOngeoorloofde instructie

9991

9992

9993

9994

9995

9996

9997

9998

9999

1

2

3

4

5

6

7

8

9

TypeMaskerOorzaakPO-vector

Nr= Prio

Page 47: SOCS

47

Verbieden van programma-onderbrekingen

Page 48: SOCS

48

Uitstellen van programma-onderbrekingen

Wie eerst?

Page 49: SOCS

49

Verbieden/Uitstellen van programma-onderbrekingen

Onderbreking onmogelijk PO-vlag kan niet gezet worden

Onderbreking tijdelijk opschorten Niet ingaan op PO-aanvraag

Mechanismen: Maskers Prioriteiten

Page 50: SOCS

50

Maskers

H/U S/P CCONV OVI SOI BT

GPF WEK DRKG IN UIT SCH OVL SPL MFT

0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19

Globaal M

asker

Globaal Program

ma Fout M

asker

Wekker M

askerD

rukker Masker

Invoer Masker

Uitvoer M

askerSchijf M

askerO

verloop Masker

Stapeloverloop Masker

Machinefout M

asker

0: PO-aanvraag toegelaten (enabled)1: PO-aanvraag niet toegelaten (disabled)

Page 51: SOCS

51

Maskers

G==1 geen enkele PO-aanvraag toegelaten

H/U S/P CCONV OVI SOI BT

GPF WEK DRKG IN UIT SCH OVL SPL MFT

0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19

Page 52: SOCS

52

Maskers

GPF==1 PO7 en PO8 genegeerd (ignored)(vlaggen kunnen niet gezet worden)

H/U S/P CCONV OVI SOI BT

GPF WEK DRKG IN UIT SCH OVL SPL MFT

0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19

Page 53: SOCS

53

Maskers

Masker == 1 PO-aanvraag uitgesteld (pending)

H/U S/P CCONV OVI SOI BT

GPF WEK DRKG IN UIT SCH OVL SPL MFT

0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19

Page 54: SOCS

54

Maskers

Speciale instructies MKH xxx (Masker Hoog)

PTWxxx 1

MKL xxx (Masker Laag) PTWxxx 0

TSM xxx (Test Masker) CC PTWxxx

TSO xxx (Test Onderbrekingsvlag) CC PO-vlagxxx

Page 55: SOCS

55

Maskers

Voorbeelden: PO vanwege wekker en drukker niet toegestaan

Toch nagaan of drukker PO aangevraagd heeft

R9 niet gebruikt voor stapel

Staat Globaal Masker af?

MKH WEKMKH DRK

MKH SPL

TSO DRKVSP POS,PO_AANGEVRAAGD

TSM GVSP NUL,G_MASKER_AF

Page 56: SOCS

56

Prioriteiten

H/U S/P CCONV OVI SOI BT

GPF WEK DRKG IN UIT SCH OVL SPL MFT

0 1 2 3 4 5 6 7 8 9

10 11 12 13 14 15 16 17 18 19

Alleen op PO-aanvragen met prioriteit hoger dan ONVkan ingegaan worden.

Page 57: SOCS

57

Prioriteiten

Voorbeelden: ONV == 4

? PO-aanvraag Wekker

? PO-aanvraag Schijf

? PO-aanvraag Machinefout

ONV == 9

Toekenning prioriteiten?

Prio Oorzaak

9 MachinefoutOngeldige instructieOngeoorloofde instr.

8 Programmafout (SO)

7 Programmafout (OVL)

6 Schijfbestuurder

5 Schermbestuurder

4 Toetsenbordbest.

3 Drukkerbestuurder

2 Wekker

1 Supervisie-oproep

UITGESTELD

TOEGESTAAN

TOEGESTAAN

Geen enkele PO TOEGESTAAN

• Prio(dringend) > Prio(minder dringend)• Prio(snel apparaat) > Prio(traag apparaat)

Page 58: SOCS

58

Bevelencyclusstop = 0;while (! stop) {

/* haal bevel op */ …/* analyseer bevel */ …/* voeruit */ …if (PTW[10] != 1) {

/* G masker af */int onv = PTW[0];int k;/* Toeg. PO-aanvraag? */for (k=9; k>onv; k--)

if ((PO_vlag[k] && ((k == 1) ||

! PTW[10+k])) /* && (PTW[11]==0 ||

(k!=7 && k!=8))*/ )break;

if (k > onv) {

/* POk */

PTW[0] = k; /* ONV */

PO_vlag[k] = 0;

vulin(Geheugen[9990+k]% 10000,PTW,6,9);

}

} /* if (G-masker) */

} /* while */

Indien PTW[11] == 1 PO_vlag[7] en PO_vlag[8] kunnen niet gezet worden

Page 59: SOCS

59

PO-behandelingsroutine

Elk soort programma-onderbreking apart programma (= PO-behandelingsroutine)

Engels: Interrupt (service) routine

HIA.w R1,10HIA.w R2,50OPT R1,R2

……

HIA.w R1,1000…

! Na onderbreking:

Onderbroken programma hernemen

Alle accumulatoren terug oorspronkelijke waarde

CC, OVI, SOI terug oorspronkelijke waarde

BT terug oorspronkelijke waarde

Page 60: SOCS

60

KTO-instructie Na programma-onderbreking

terug verder met onderbroken programma KTO

Keer Terug van Onderbreking 6299999999

Beëindigt de programma-onderbreking PTW0..9 pop()

BT terug de oorspronkelijke waarde CC, OVI, SOI opnieuw oorspronkelijke waarde …

Vergelijk KTG Alleen BT hersteld PTW6..9 pop() % 10000

Page 61: SOCS

61

Voorbeeld

tijd

Gebruikers-programma

PO-routine-1

PO-routine-2

PO-routine-3

PO-routine-4

PO-routine-5

PO-routine-6

PO-routine-7

PO-routine-8

PO-routine-9

ONV=0

ON

V=4

ONV=9

ONV=4

ONV=7

ONV=4

ONV=0

KT

O

KT

O

KT

O

PO

4

PO

9

PO

7

PO

5

Masker PO5 = 1Andere maskers = 0

Page 62: SOCS

62

PO-behandelingsroutine

| Bewaar inhouden van accumulatorenPO_routineN:

| Hier begint de eigenlijke behandeling…

| Herstel de inhouden v/d accumulatoren

| Keer terugKTO

BIG R0,BEWAAR+0BIG R1,BEWAAR+1…BIG R9,BEWAAR+9

HIA R0,BEWAAR+0HIA R1,BEWAAR+1…HIA R9,BEWAAR+9

BEWAAR: RESGR 10

Page 63: SOCS

63

Geprogrammeerde programma-onderbreking

PO-vlag[1] geplaatst via speciale instructie OND (Onderbreking) 619999

Waarde niet gebruikt bij uitvoering Programma vraagt “hulp” aan het besturingsprogramma

Bijvoorbeeld: Hoe laat is het? Schrijf “PO-aanvraag” weg in bestand “Socs.doc”

= dienstnummer PO_routine voor geprogrammeerde PO

moet zelf nummer ophalen (cfr. Verder)

Page 64: SOCS

64

DRAMA - machine

Opstarten van DRAMA-machine99909990

99919991

99929992

99939993

99949994

99959995

99969996

99979997

99989998

99999999

6299999999

0000009990

0000009990

0000009990

0000009990

0000009990

0000009990

0000009990

0000009990

0000009990 H/U S/P CC0 OVI SOI BT

1 1 11 1 1 1 1 1 1

KTO

Page 65: SOCS

65

DRAMA - machine

Voorbeeld: PO voor drukker (PO3) toelaten6299999999

0000009990

99909990

99919991

99929992

99939993

99949994

99959995

99969996

99979997

99989998

99999999

0000009990

0000009990

0000009990

0000009990

0000009990

0000009990

0000009990

0000009990 H/U S/P CC0 OVI SOI BT

1 1 11 1 1 1 1 1 1

PO_DRK: ……KTO

91239123

BIG R0,9990+3HIA.a R0,PO_DRK

Page 66: SOCS

66

DRAMA - machine

Voorbeeld: PO voor drukker (PO3) toelaten6299999999

0000009990

99909990

99919991

99929992

99939993

99949994

99959995

99969996

99979997

99989998

99999999

0000009990

0000009990

0000009990

0000009990

0000009990

0000009123

0000009990

0000009990 H/U S/P CC0 OVI SOI BT

1 1 11 1 1 1 1 1 1

HIA.a R0,PO_DRKBIG R0,9990+3 …

PO_DRK: ……KTO

MKL DRK

91239123

Page 67: SOCS

67

DRAMA - machine

Voorbeeld: PO voor drukker (PO3) toelaten6299999999

0000009990

99909990

99919991

99929992

99939993

99949994

99959995

99969996

99979997

99989998

99999999

0000009990

0000009990

0000009990

0000009990

0000009990

0000009123

0000009990

0000009990 H/U S/P CC0 OVI SOI BT

1 1 01 1 1 1 1 1 1

HIA.a R0,PO_DRKBIG R0,9990+3MKL DRK …

PO_DRK: ……KTO

MKL G

91239123

Page 68: SOCS

68

DRAMA - machine

Voorbeeld: PO voor drukker (PO3) toelaten6299999999

0000009990

99909990

99919991

99929992

99939993

99949994

99959995

99969996

99979997

99989998

99999999

0000009990

0000009990

0000009990

0000009990

0000009990

0000009123

0000009990

0000009990 H/U S/P CC0 OVI SOI BT

1 1 00 1 1 1 1 1 1

HIA.a R0,PO_DRKBIG R0,9990+3MKL DRKMKL G…

PO_DRK: ……KTO

91239123

Page 69: SOCS

69

Cursustekst

Hoofdstuk 4: pag. 94 pag. 123