690 likes | 917 Views
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
E N D
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 • Meerdere programma’s tegelijk, in- en uitvoer, … • Voldoende hardware ondersteuning! • Programmaonderbrekingen, processortoestanden, geprivilegieerde bevelen, beschermingsregisters, wekker, …
Besturingssystemen Gebruikers Toepassingen Besturingssysteem Hardware
Inhoud • Inleiding • Programmatoestandswoord • Programma-onderbrekingen • Invoer en uitvoer • Processortoestanden • Multiprogrammatie • Soorten Besturingssystemen • Taken van een besturingssysteem • Kosten en Baten
Inhoud • Inleiding • Programmatoestandswoord • Programma-onderbrekingen • Invoer en uitvoer • Processortoestanden • Multiprogrammatie • Soorten Besturingssystemen • Taken van een besturingssysteem • Kosten en Baten
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
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
Inhoud • Inleiding • Programmatoestandswoord • Programma-onderbrekingen • Invoer en uitvoer • Processortoestanden • Multiprogrammatie • Soorten Besturingssystemen • Taken van een besturingssysteem • Kosten en Baten
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! …
ONV H/U S/P CC OVI SOI BT G GPF WEK DRK IN UIT SCH OVL SPL MFT Programmatoestandswoord • 20 decimale cijfer • Verschillende velden • PTW3 = CC, PTW6..9 = BT, … Stapel-overloop-indicator Conditie-code Overloop-indicator Bevelen-teller 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
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
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)
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(); } ... } LEZ LUS: VSP NUL,ENDWH HIA R1,R0 LEZ AFT R1,R0 VSP NNEG,POS VER.w R1,-1 POS: BST R1 LEZ SPR LUS ENDWH: … Programmatoestandswoord CC? CC? a, c R1b R0
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(); } ... } LEZ LUS: VSP NUL,ENDWH HIA R1,R0 LEZ AFT R1,R0 VSP NNEG,POS VER.w R1,-1 POS: BST R1 LEZ SPR LUS ENDWH: … Programmatoestandswoord Overloop? Geen informatie over aantal of bereik van getallen
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(); } ... } LEZ LUS: VSP NUL,ENDWH HIA R1,R0 LEZ AFT R1,R0 VSP OVL,OVERL VSP NNEG,POS VER.w R1,-1 POS: BST R1 LEZ SPR LUS ENDWH: … OVERL: … Programmatoestandswoord Overloop? Geen informatie over aantal of bereik van getallen
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(); } ... } LEZ LUS: VSP NUL,ENDWH HIA R1,R0 LEZ AFT R1,R0 VSP OVL,OVERL VSP NNEG,POS VER.w R1,-1 VSP OVL,OVERL POS: BST R1 LEZ SPR LUS ENDWH: … OVERL: … Programmatoestandswoord Stapel-overloop? Geen informatie over aantal of bereik van getallen
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(); } ... } LEZ LUS: VSP NUL,ENDWH HIA R1,R0 LEZ AFT R1,R0 VSP OVL,OVERL VSP NNEG,POS VER.w R1,-1 VSP OVL,OVERL POS: BST R1 VSP SO,STOVL LEZ SPR LUS ENDWH: … OVERL: … STOVL: … Programmatoestandswoord Overloop? Overloop? Stapel-overloop? Geen informatie over aantal of bereik van getallen
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 • …
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 Elektronica reeds aanwezig! Overloop • Onmiddellijk testen na berekening • Zoniet: • OVI Nieuwe waarde • Beter: • Automatisch onderbreken • Minder geheugen • Sneller uitvoeren = – 5.000.000.000
4.000.000.00 +1.000.000.000 = –5.000.000.000 Overloop Oeps! Overloop!!! Stop de uitvoering!!! Rekenwerk Controle
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
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: … Oneindige Lus
Bevelencyclus • Volgorde besturing: • Ophalen bevelBT BT + 1 • Instructie analyseren • Functiecode • Operand(en) berekenen • Instructie uitvoeren • Doorbreken volgorde: • Sprongbevel:BT nieuwe waarde • Programma-onderbreking
Programma-onderbreking • Uitvoering van een programma onderbreken+ uitvoering van ander programma beginnen
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 Programma-onderbreking
Programma-onderbreking Boek lezen Bezoeker ontvangen Toestand bewaren Toestand herstellen Bezoeker weg
Programma-onderbreking Verschillende oorzaken …
0 0 0 0 ONV H/U S/P CC OVI SOI BT 0 0 G GPF WEK DRK IN UIT SCH OVL SPL MFT 0 0 0 Programma-onderbreking 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 123 45 6789 Onderbreking gevraagd! 1 Onderbrekingsvlaggen CVO (processor)
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 Programma-onderbreking
9991 9992 9993 9994 9995 9996 9997 9998 9999 0000009712 PO4 0000009000 0000009500 0000009584 0000009112 0000009228 0000009012 0000009212 0000009612 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)
1221300102 3221900103 0000000000 1111200000 Stapel 0000909090 1221009100 R9 1221009900 PO-vectoren 0000009212 0000009050 Voorbeeld 0100 0101 0102 0103 8999 9000 9050 9993 9994 BIG R3,RES SPR VERDERRES: RESGR 1VERDER: HIA.w R2,0 … … PO_ROUT4: BIG R0,BEWAAR …
CC BT OVI SOI 0 1 0 0 2 0 0 0 1 1 0 1111111111 0000009000 0000000020 0 R0 R9 R3 0 0 0 0 0 0 0 1112000000 BR Voorbeeld Ophalen 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 3221900103 0000000000 123 45 6789 1111200000 0000909090 1221009100 Onderbrekingsvlaggen 1221009900 0000009212 0000009050
CC BT OVI SOI 0 1 0 1 2 0 0 0 0000000020 0000009000 1111111111 0 R0 R9 R3 0 0 0 0 0 0 0 1221300102 BR Voorbeeld Analyseren, Uitvoeren 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 3221900103 0 1 1 0000000000 123 45 6789 1111200000 0000909090 1221009100 Onderbrekingsvlaggen 1221009900 0000009212 0000009050
CC BT OVI SOI 0 1 0 1 1 0 0 0 0000000020 0000009000 1111111111 0 R0 R9 R3 0 0 0 0 0 0 0 1221300102 BR Voorbeeld PO aangevraagd? 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 3221900103 0 1 1 1111111111 123 45 6789 1111200000 0000909090 1221009100 Onderbrekingsvlaggen 1221009900 0000009212 0000009050
CC BT OVI SOI 0 1 0 1 1 0 0 0 0000000020 0000009000 1111111111 0 R0 R9 R3 0 0 0 0 0 0 0 1221300102 BR Voorbeeld Ophalen 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 3221900103 0 1 1 1111111111 123 45 6789 1111200000 0000909090 1221009100 Onderbrekingsvlaggen 1221009900 0000009212 0000009050
CC BT OVI SOI 0 1 0 2 1 0 0 0 0000000020 0000009000 1111111111 0 R0 R9 R3 0 0 0 0 0 0 0 3221900103 BR Voorbeeld Analyseren, Uitvoeren 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 3221900103 0 1 1 1111111111 123 45 6789 1111200000 0000909090 1 1221009100 Onderbrekingsvlaggen 1221009900 0000009212 0000009050
CC BT OVI SOI 0 1 0 3 1 0 0 0 0000000020 0000009000 1111111111 0 R0 R9 R3 0 0 0 0 0 0 0 3221900103 BR Voorbeeld PO aangevraagd? 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 3221900103 0 1 1 1111111111 123 45 6789 1111200000 0000909090 1 1221009100 Onderbrekingsvlaggen 1221009900 0000009212 0000009050
CC BT SOI OVI 0 1 0 3 1 0 0 0 0000000020 1111111111 0000009000 0 R9 R0 R3 0 0 0 0 0 0 0 3221900103 BR Voorbeeld PO aangevraagd? Push(PTW0..9) 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 3221900103 0 1 1 1111111111 123 45 6789 1111200000 0000909090 1 1221009100 Onderbrekingsvlaggen 1221009900 0000009212 0000009050
CC BT SOI OVI 0 1 0 3 1 0 0 0 0000000020 1111111111 0000008999 0 R9 R0 R3 0 0 0 0 0 0 0 3221900103 BR Voorbeeld PO aangevraagd? PO-vlag[4] 0 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 3221900103 0 1 1 1111111111 123 45 6789 1111200000 0111000103 1 1221009100 Onderbrekingsvlaggen 1221009900 0000009212 0000009050
CC BT OVI SOI 0 1 0 3 1 0 0 0 0000000020 0000008999 1111111111 0 R0 R9 R3 0 0 0 0 0 0 0 3221900103 BR Voorbeeld PO aangevraagd? PTW6..9 … 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 3221900103 0 1 1 1111111111 123 45 6789 1111200000 0111000103 1221009100 Onderbrekingsvlaggen 1221009900 0000009212 0000009050
CC BT OVI SOI 9 0 5 0 1 0 0 0 0000000020 0000008999 1111111111 0 R0 R9 R3 0 0 0 0 0 0 0 3221900103 BR Voorbeeld Ophalen 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 3221900103 0 1 0 1111111111 123 45 6789 1111200000 0111000103 1221009100 Onderbrekingsvlaggen 1221009900 0000009212 0000009050
CC BT OVI SOI 9 0 5 0 1 0 0 0 0000000020 0000008999 1111111111 0 R0 R9 R3 0 0 0 0 0 0 0 1221009900 BR Voorbeeld Enz … 0100 0101 0102 0103 8999 9000 9050 9993 9994 1221300102 Processor 3221900103 0 1 0 1111111111 123 45 6789 1111200000 0111000103 1221009100 Onderbrekingsvlaggen 1221009900 0000009212 0000009050
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
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
Nr= Prio PO-vector Oorzaak Masker Type 9 9999 MFT 8 9998 SPL 7 9997 OVL 6 9996 SCH 5 9995 UIT 4 9994 IN 3 9993 DRK 2 9992 WEK 1 9991 --- Soorten Onderbrekingen MachinefoutOngeldige instructieOngeoorloofde instructie Asynch.Synch.Synch. Programmafout (SO) Synch. Programmafout (OVL) Synch. Schijfbestuurder Asynch. Schermbestuurder Asynch. Toetsenbordbestuurder Asynch. Drukkerbestuurder Asynch. Wekker Asynch. Supervisie-oproep Synch.
Nr= Prio PO-vector Oorzaak Masker Type 9 9999 MFT 8 9998 SPL 7 9997 OVL 6 9996 SCH 5 9995 UIT 4 9994 IN 3 9993 DRK 2 9992 WEK 1 9991 --- Soorten Onderbrekingen MachinefoutOngeldige instructieOngeoorloofde instructie Asynch.Synch.Synch. Programmafout (SO) Synch. Programmafout (OVL) Synch. Schijfbestuurder Asynch. Schermbestuurder Asynch. Toetsenbordbestuurder Asynch. Drukkerbestuurder Asynch. Wekker Asynch. Supervisie-oproep Synch.
Uitstellen van programma-onderbrekingen Wie eerst?
Verbieden/Uitstellen van programma-onderbrekingen • Onderbreking onmogelijk • PO-vlag kan niet gezet worden • Onderbreking tijdelijk opschorten • Niet ingaan op PO-aanvraag • Mechanismen: • Maskers • Prioriteiten
ONV H/U S/P CC OVI SOI BT G GPF WEK DRK IN UIT SCH OVL SPL MFT Maskers 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Schijf Masker Invoer Masker Uitvoer Masker Wekker Masker Globaal Masker Drukker Masker Overloop Masker Machinefout Masker Stapeloverloop Masker Globaal Programma Fout Masker 0: PO-aanvraag toegelaten (enabled) 1: PO-aanvraag niet toegelaten (disabled)