De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Hoofdstuk 4 Besturingssystemen

Verwante presentaties


Presentatie over: "Hoofdstuk 4 Besturingssystemen"— Transcript van de presentatie:

1 Hoofdstuk 4 Besturingssystemen
SOCS Hoofdstuk 4 Besturingssystemen

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, …

3 Besturingssystemen Gebruikers Toepassingen Besturingssysteem Hardware

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

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

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

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

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

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 0090 Conditiecode = 2 Oei, Overloop!

10 Programmatoestandswoord
20 decimale cijfer Verschillende velden PTW3 = CC, PTW6..9 = BT, … Stapel- overloop- indicator Conditie-code Overloop- indicator Bevelen- teller H/U S/P CC ONV OVI SOI BT GPF WEK DRK G IN UIT SCH OVL SPL MFT

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

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)

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 ... */ } ... LEZ LUS: VSP NUL,ENDWH HIA R1,R0 AFT R1,R0 VSP NNEG,POS VER.w R1,-1 POS: BST R1 SPR LUS ENDWH: … CC? CC? a, c  R1 b  R0

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 ... */ } ... LEZ LUS: VSP NUL,ENDWH HIA R1,R0 AFT R1,R0 VSP NNEG,POS VER.w R1,-1 POS: BST R1 SPR LUS ENDWH: … Overloop? Geen informatie over aantal of bereik van getallen

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 ... */ } ... LEZ LUS: VSP NUL,ENDWH HIA R1,R0 AFT R1,R0 VSP OVL,OVERL VSP NNEG,POS VER.w R1,-1 POS: BST R1 SPR LUS ENDWH: … OVERL: … Overloop? Geen informatie over aantal of bereik van getallen

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 ... */ } ... LEZ LUS: VSP NUL,ENDWH HIA R1,R0 AFT R1,R0 VSP OVL,OVERL VSP NNEG,POS VER.w R1,-1 POS: BST R1 SPR LUS ENDWH: … OVERL: … Stapel- overloop? Geen informatie over aantal of bereik van getallen

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 ... */ } ... LEZ LUS: VSP NUL,ENDWH HIA R1,R0 AFT R1,R0 VSP OVL,OVERL VSP NNEG,POS VER.w R1,-1 POS: BST R1 VSP SO,STOVL SPR LUS ENDWH: … OVERL: … STOVL: … Overloop? Overloop? Stapel- overloop? Geen informatie over aantal of bereik van getallen

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

19 Elektronica reeds aanwezig!
Overloop Overloop = resultaat kan niet meer voorgesteld worden Voorbeeld: HIA R1,a OPT R1,b VSP OVL,OVLP OVLP: … = Onmiddellijk testen na berekening Zoniet: OVI  Nieuwe waarde Beter: Automatisch onderbreken  Minder geheugen  Sneller uitvoeren = – Elektronica reeds aanwezig!

20 Overloop Oeps! Overloop!!! Stop de uitvoering!!! Rekenwerk Controle
= – Oeps! Overloop!!! Stop de uitvoering!!! Rekenwerk Controle

21 Oneindige Lus Meerdere programma’s Editor Vertaler
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

22 Oneindige Lus int a, b, c; main() { a = 0; b = 17; while (a < b)
... } | 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: …

23 Bevelencyclus Volgorde besturing: Doorbreken volgorde:
Ophalen bevel BT  BT + 1 Instructie analyseren Functiecode Operand(en) berekenen Instructie uitvoeren Doorbreken volgorde: Sprongbevel: BT  nieuwe waarde Programma-onderbreking

24 Programma-onderbreking
Uitvoering van een programma onderbreken + uitvoering van ander programma beginnen

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

26 Programma-onderbreking
Boek lezen Bezoeker ontvangen Toestand bewaren Toestand herstellen Bezoeker weg

27 Programma-onderbreking
Verschillende oorzaken …

28 Programma-onderbreking
H/U S/P CC ONV OVI SOI BT GPF WEK DRK G IN UIT SCH OVL SPL MFT 1 2 3 4 5 Onderbreking gevraagd! 1 Onderbrekingsvlaggen CVO (processor)

29 Programma-onderbreking
Op elk ogenblik aangevraagd (asynchroon) Eventueel ingaan na uitvoering huidige instructie Bevelencyclus Ophalen bevel BT  BT + 1 Analyseren bevel Functiecode Operanden Uitvoeren bevel Programmaonderbreking aangevraagd? Toestand bewaren Ander programma uitvoeren

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: k (k = nummer PO) 9991 9992 9993 9994 9995 9996 9997 9998 9999 PO4

31 Voorbeeld Stapel PO-vectoren
0100 0101 0102 0103 8999 9000 9050 9993 9994 BIG R3,RES SPR VERDER RES: RESGR 1 VERDER: HIA.w R2,0 … Stapel R9 PO_ROUT4: BIG R0,BEWAAR … PO-vectoren

32 Onderbrekingsvlaggen
Voorbeeld Ophalen 0100 0101 0102 0103 8999 9000 9050 9993 9994 Processor BT SOI OVI 2 CC 1 1 2 3 4 5 R0 R3 Onderbrekingsvlaggen R9 BR

33 Onderbrekingsvlaggen
Voorbeeld Analyseren, Uitvoeren 0100 0101 0102 0103 8999 9000 9050 9993 9994 Processor 2 CC OVI SOI BT 1 1 1 2 3 4 5 R0 R3 Onderbrekingsvlaggen R9 BR

34 Onderbrekingsvlaggen
Voorbeeld PO aangevraagd? 0100 0101 0102 0103 8999 9000 9050 9993 9994 Processor 1 CC OVI SOI BT 1 1 1 2 3 4 5 R0 R3 Onderbrekingsvlaggen R9 BR

35 Onderbrekingsvlaggen
Voorbeeld Ophalen 0100 0101 0102 0103 8999 9000 9050 9993 9994 Processor 1 CC OVI SOI BT 1 1 1 2 3 4 5 R0 R3 Onderbrekingsvlaggen R9 BR

36 Onderbrekingsvlaggen
Voorbeeld Analyseren, Uitvoeren 0100 0101 0102 0103 8999 9000 9050 9993 9994 Processor 1 CC OVI SOI BT 1 1 1 2 3 4 5 R0 1 R3 Onderbrekingsvlaggen R9 BR

37 Onderbrekingsvlaggen
Voorbeeld PO aangevraagd? 0100 0101 0102 0103 8999 9000 9050 9993 9994 Processor 1 CC OVI SOI BT 1 1 1 2 3 4 5 R0 1 R3 Onderbrekingsvlaggen R9 BR

38 Onderbrekingsvlaggen
Voorbeeld PO aangevraagd? Push(PTW0..9) 0100 0101 0102 0103 8999 9000 9050 9993 9994 Processor 1 CC OVI SOI BT 1 1 1 2 3 4 5 R0 1 R3 Onderbrekingsvlaggen R9 BR

39 Onderbrekingsvlaggen
Voorbeeld PO aangevraagd? PO-vlag[4]  0 0100 0101 0102 0103 8999 9000 9050 9993 9994 Processor 1 CC OVI SOI BT 1 1 1 2 3 4 5 R0 1 R3 Onderbrekingsvlaggen R9 BR

40 Onderbrekingsvlaggen
Voorbeeld PO aangevraagd? PTW6..9  … 0100 0101 0102 0103 8999 9000 9050 9993 9994 Processor 1 CC OVI SOI BT 1 1 1 2 3 4 5 R0 R3 Onderbrekingsvlaggen R9 BR

41 Onderbrekingsvlaggen
Voorbeeld Ophalen 0100 0101 0102 0103 8999 9000 9050 9993 9994 Processor 1 CC OVI SOI BT 1 1 2 3 4 5 R0 R3 Onderbrekingsvlaggen R9 BR

42 Onderbrekingsvlaggen
Voorbeeld Enz … 0100 0101 0102 0103 8999 9000 9050 9993 9994 Processor 1 CC OVI SOI BT 1 1 2 3 4 5 R0 R3 Onderbrekingsvlaggen R9 BR

43 Soorten Onderbrekingen
Externe oorzaken Externe klok, wekker, reset-toets, … Randapparatuur Bestuurder van invoer-, uitvoerapparaat, hulpgeheugen, netwerkkaarten, … Klaar met aangevraagde bewerking, Gegevens beschikbaar, Fout, … Machinefout Elektrische spanning uitgevallen, Geheugenfout, … Programmafout Overloop, Stapeloverloop, Ongeldig adres, Ongeldige instructie, … Geprogrammeerde programma-onderbreking Hulp vragen aan het besturingsprogramma

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

45 Soorten Onderbrekingen
Type Masker Oorzaak PO-vector Nr = Prio 1 2 3 4 5 6 7 8 9 9991 9992 9993 9994 9995 9996 9997 9998 9999 Machinefout Ongeldige instructie Ongeoorloofde instructie --- WEK DRK IN UIT SCH OVL SPL MFT Asynch. Synch. Synch. Programmafout (SO) Synch. Programmafout (OVL) Synch. Schijfbestuurder Asynch. Schermbestuurder Asynch. Toetsenbordbestuurder Asynch. Drukkerbestuurder Asynch. Wekker Asynch. Supervisie-oproep Synch.

46 Soorten Onderbrekingen
Type Masker Oorzaak PO-vector Nr = Prio 1 2 3 4 5 6 7 8 9 9991 9992 9993 9994 9995 9996 9997 9998 9999 Machinefout Ongeldige instructie Ongeoorloofde instructie --- WEK DRK IN UIT SCH OVL SPL MFT Asynch. Synch. Synch. Programmafout (SO) Synch. Programmafout (OVL) Synch. Schijfbestuurder Asynch. Schermbestuurder Asynch. Toetsenbordbestuurder Asynch. Drukkerbestuurder Asynch. Wekker Asynch. Supervisie-oproep Synch.

47 Verbieden van programma-onderbrekingen

48 Uitstellen van programma-onderbrekingen
Wie eerst?

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

50 Maskers 0 1 2 3 4 5 6 7 8 9 H/U S/P CC ONV OVI SOI BT
H/U S/P CC ONV OVI SOI BT GPF WEK DRK G IN UIT SCH OVL SPL MFT Invoer Masker Schijf Masker Globaal Masker Wekker Masker Drukker Masker Uitvoer Masker Overloop Masker Machinefout Masker Stapeloverloop Masker Globaal Programma Fout Masker 0: PO-aanvraag toegelaten (enabled) 1: PO-aanvraag niet toegelaten (disabled)

51 G==1  geen enkele PO-aanvraag toegelaten
Maskers H/U S/P CC ONV OVI SOI BT G GPF WEK DRK IN UIT SCH OVL SPL MFT G==1  geen enkele PO-aanvraag toegelaten

52 Maskers 0 1 2 3 4 5 6 7 8 9 H/U S/P CC ONV OVI SOI BT
H/U S/P CC ONV OVI SOI BT G GPF WEK DRK IN UIT SCH OVL SPL MFT GPF==1  PO7 en PO8 genegeerd (ignored) (vlaggen kunnen niet gezet worden)

53 Maskers 0 1 2 3 4 5 6 7 8 9 H/U S/P CC ONV OVI SOI BT
H/U S/P CC ONV OVI SOI BT G GPF WEK DRK IN UIT SCH OVL SPL MFT Masker == 1  PO-aanvraag uitgesteld (pending)

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

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 WEK MKH DRK TSO DRK VSP POS,PO_AANGEVRAAGD MKH SPL TSM G VSP NUL,G_MASKER_AF

56 Prioriteiten 0 1 2 3 4 5 6 7 8 9 H/U S/P CC ONV OVI SOI BT
H/U S/P CC ONV OVI SOI BT GPF WEK DRK G IN UIT SCH OVL SPL MFT Alleen op PO-aanvragen met prioriteit hoger dan ONV kan ingegaan worden.

57 Geen enkele PO TOEGESTAAN
Prioriteiten Prio Oorzaak 9 Machinefout Ongeldige instructie Ongeoorloofde instr. 8 Programmafout (SO) 7 Programmafout (OVL) 6 Schijfbestuurder 5 Schermbestuurder 4 Toetsenbordbest. 3 Drukkerbestuurder 2 Wekker 1 Supervisie-oproep Voorbeelden: ONV == 4 ? PO-aanvraag Wekker ? PO-aanvraag Schijf ? PO-aanvraag Machinefout ONV == 9 Toekenning prioriteiten? UITGESTELD TOEGESTAAN TOEGESTAAN Geen enkele PO TOEGESTAAN Prio(dringend) > Prio(minder dringend) Prio(snel apparaat) > Prio(traag apparaat)

58 Bevelencyclus stop = 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

59 PO-behandelingsroutine
Elk soort programma-onderbreking  apart programma (= PO-behandelingsroutine) Engels: Interrupt (service) routine HIA.w R1,10 HIA.w R2,50 OPT 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

60 KTO-instructie Na programma-onderbreking  terug verder met onderbroken programma KTO Keer Terug van Onderbreking 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

61 Gebruikers- programma
Voorbeeld Masker PO5 = 1 Andere maskers = 0 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=9 KTO ONV=7 KTO ONV=4 ONV=4 ONV=4 KTO ONV=0 ONV=0 PO4 PO9 PO7 PO5 tijd

62 PO-behandelingsroutine
| Bewaar inhouden van accumulatoren PO_routineN: | Hier begint de eigenlijke behandeling | Herstel de inhouden v/d accumulatoren | Keer terug KTO BIG R0,BEWAAR+0 BIG R1,BEWAAR+1 BIG R9,BEWAAR+9 HIA R0,BEWAAR+0 HIA R1,BEWAAR+1 HIA R9,BEWAAR+9 BEWAAR: RESGR 10

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)

64 DRAMA - machine Opstarten van DRAMA-machine KTO H/U S/P CC OVI SOI BT
9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 KTO H/U S/P CC OVI SOI BT 1

65 DRAMA - machine Voorbeeld: PO voor drukker (PO3) toelaten H/U S/P CC
9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 H/U S/P CC OVI SOI BT 1 1 1 1 1 1 1 1 1 1 PO_DRK: … KTO HIA.a R0,PO_DRK BIG R0,9990+3 9123

66 DRAMA - machine Voorbeeld: PO voor drukker (PO3) toelaten H/U S/P CC
9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 H/U S/P CC OVI SOI BT 1 1 1 1 1 1 1 1 1 1 HIA.a R0,PO_DRK BIG R0,9990+3 PO_DRK: … KTO MKL DRK 9123

67 DRAMA - machine Voorbeeld: PO voor drukker (PO3) toelaten H/U S/P CC
9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 H/U S/P CC OVI SOI BT 1 1 1 1 1 1 1 1 1 HIA.a R0,PO_DRK BIG R0,9990+3 MKL DRK PO_DRK: … KTO MKL G 9123

68 DRAMA - machine Voorbeeld: PO voor drukker (PO3) toelaten H/U S/P CC
9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 H/U S/P CC OVI SOI BT 1 1 1 1 1 1 1 1 HIA.a R0,PO_DRK BIG R0,9990+3 MKL DRK MKL G PO_DRK: … KTO 9123

69 Cursustekst Hoofdstuk 4: pag. 94  pag. 123


Download ppt "Hoofdstuk 4 Besturingssystemen"

Verwante presentaties


Ads door Google