SOCS

76
1 SOCS Hoofdstuk 4 Besturingssysteme n

description

SOCS. Hoofdstuk 4 Besturingssystemen. Inhoud. Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer Randapparaten In- en uitvoer-organisatievormen Randapparaat-besturingsroutines (stuurprogramma’s) Processortoestanden Multiprogrammatie - PowerPoint PPT Presentation

Transcript of SOCS

  • SOCSHoofdstuk 4Besturingssystemen

  • InhoudInleidingProgrammatoestandswoordProgramma-onderbrekingenInvoer en uitvoer Randapparaten In- en uitvoer-organisatievormen Randapparaat-besturingsroutines (stuurprogrammas)ProcessortoestandenMultiprogrammatieSoorten BesturingssystemenTaken van een besturingssysteemKosten en Baten

  • Invoer en uitvoerBesturingssysteemBesturen van Randapparaten Opdrachten geven, PO opvangen, fouten GebruikersprogrammaHoog-niveau opdrachtenLEZ (= complexe operatie)Toetsaanslagen codeBlankos, return-toets, , BackspaceOmzetten naar decimaal getal (ev. 10-complement)Tonen op scherm (echo)

  • Randapparaten(Mechanisch gedeelte)Elektronisch gedeelte = Bestuurder (Controller, Adapter) Insteekkaart Vaak meerdere apparaten besturen

  • RandapparatenCVOSchijf bestuurderBestuurder van drukker

    Geheugen

    Geheugen- bestuurderBus

  • RandapparatenToestandspoort (Pt)Toestand v. (bestuurder) randapparaat (LEZEN)Opdracht en gegevenspoort (Pog)Opdracht aan bestuurder geven (SCHRIJVEN)Gegevens van (bestuurder) apparaat ophalen (LEZEN)

  • RandapparatenLezen/schrijven uit/in poorten Twee methodes: Speciale instructies Twee verschillende adresruimtes: Geheugenregisters Poorten van randapparaten Inpassing in het geheugen Slechts 1 adresruimte

  • RandapparatenSpeciale instructiesINV Ri,Pxxxx (INVoer) Ri PxxxxUTV Rj,Pyyyy (UiTVoer) Pyyyy Rj Pxxxx P0, P1, , P9998, P9999

    8199i9xxxx8299j9yyyy Afspraak: Pt : t = even, Pog = Pt+1

  • RandapparatenInpassing in het geheugenPoorten hebben een geheugenadres (vb. 9900..9909)Voordeel: geen speciale instructies nodig HIA Ri,xxxx BIG Rj,yyyyNadeel: minder geheugen beschikbaar

  • RandapparatenLezen/Schrijven speciale registers (poorten)Inpassing in het centrale geheugen

    0000

    98999900990199099910

    9999

  • RandapparaatToestandspoort (Pt) Toestand van het randapparaat Alleen uitlezen

    WaardeNaamVerklaring0000000000KlaarBestuurder klaar voor nieuwe opdracht0000000001BezigToestel is bezig met uitvoering van een opdracht0000000002GegevensEr zijn gegevens beschikbaar in de gegevenspoort9999999999FoutEr heeft zich een fout voorgedaan

  • RandapparaatKlaarGegevensBezigFout

  • RandapparaatFout:Onbestaande/foutieve opdrachtOpdracht gegeven terwijl apparaat nog bezig isApparaat heeft nieuwe gegevens terwijl vorige nog niet uitgelezen zijnFout in het apparaat: Vb. papierlade leeg, inktpatroon leeg,

  • RandapparaatSommige overgangen: PO-aanvraag Interventie van het CVO gewenst

    CVO moet gegevens inlezen (beschikbaar zonder opdracht)GegevensKlaarCVO moet gegevens inlezen(beschikbaar na opdracht)GegevensBezigCVO mag nieuwe opdracht gevenKlaarBezigCVO moet fout herstellen (herinitialisatie)Fout???

  • RandapparaatINV R0,P2

    UTV R1,P3

    INV R2,P1

    UTV R3,P0INV R0,P2

  • RandapparaatINV R0,P2

    UTV R1,P3

    INV R2,P1

    UTV R3,P0UTV R1,P30000000000

  • RandapparaatINV R0,P2

    UTV R1,P3

    INV R2,P1

    UTV R3,P0INV R2,P10000000001

  • RandapparaatINV R0,P2

    UTV R1,P3

    INV R2,P1

    UTV R3,P0UTV R3,P000000000000000000000Niet toegelaten! (P0 = toestandspoort)0000000088

  • Lezen/Schrijven poortenTwee 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 P1Constanten: #define KLAAR 0 #define BEZIG 1 #define GEG 2 #define FOUT -1C

  • PO-routinePO-routine voorstellen als ( C): interrupt po_routine() {

    }CBewaar accumulatorenHerstel accumulatorenKTOi.p.v. KTG

  • In- en uitvoer organisatievormenGeprogrammeerd (met actief wachten)M.b.v. programma-onderbrekingenD.m.v. directe geheugentoegangM.b.v. speciale invoer/uitvoer-processorenM.b.v. satelliet-computers

  • Geprogrammeerde in/uitvoerAlle gegevenstransport via de processorProcessor synchroniseert met randapparaatNieuwe opdracht mag slechts gegeven als toestand = KLAARGegevens kunnen slechts uitgelezen worden als toestand = GEGEVENS (GEG)Wachten tot juiste toestand Actief wachten = continu testen

  • Geprogrammeerde in/uitvoerint 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);Alleen als bestuurder klaar is voor een opdracht!Alleen als gegevens beschikbaar zijn!

  • Geprogrammeerde in/uitvoerint 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);

  • Geprogrammeerde in/uitvoerCVO Randapparaat klaar bezig gegevensOpdracht gevenGegevens inlezenToestand uitlezen

  • Geprogrammeerde in/uitvoerint 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

    opd:

  • Geprogrammeerde in/uitvoerint 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:INVR0,PVGL.wR0,VSPNGEL,LUS1

    opd:

  • Geprogrammeerde in/uitvoerint 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:INVR0,PVGL.wR0,VSPNGEL,LUS1HIAR0,opdUTVR0,P

    opd:

  • Geprogrammeerde in/uitvoerint 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:INVR0,PVGL.wR0,VSPNGEL,LUS1HIAR0,opdUTVR0,P

    LUS2:INV R0,PVGL.w R0,VSP NGEL,LUS2 opd:

  • Geprogrammeerde in/uitvoerint 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:INVR0,PVGL.wR0,VSPNGEL,LUS1HIAR0,opdUTVR0,P

    LUS2:INV R0,PVGL.w R0,VSP NGEL,LUS2INV R0,Popd:

  • Geprogrammeerde in/uitvoerMEVA Pt,6MEVA Pog,7MEVA KLAAR,0MEVA GEG,2

    LUS1:INVR0,PVGL.wR0,VSPNGEL,LUS1HIAR0,opdUTVR0,P

    LUS2:INV R0,PVGL.w R0,VSP NGEL,LUS2INV R0,Popd:

  • Geprogrammeerde in/uitvoerVoorbeeld: Scherm Toestandspoort = P2; Opdrachtpoort = P3

    OpdrachtBetekenis1000000cccDruk een letter af op het scherm ccc: ASCII voorstelling van de letter

  • Geprogrammeerde in/uitvoerchar 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,P2VGL.w R0,VSP NGEL,LUSHIA R1,OPDROPT R1,ZONE(R2+)UTV R1,P3VGL R2,NVSP KL,LUSOPDR:1000000000 N:100ZONE:00000000860000000111| cmd R1; idx R2

  • Geprogrammeerde in/uitvoerHIA.w R2,0 LUS:INV R0,P2VGL.w R0,VSP NGEL,LUSHIA R1,OPDROPT R1,ZONE(R2+)UTV R1,P3VGL R2,NVSP KL,LUSOPDR:1000000000 N:100ZONE:00000000860000000111

  • Geprogrammeerde in/uitvoerPerformantieActief wachtenEerste letterTweede letterActief wachtenActief wachtenDerde letterScherm: 1000 tekens/sDrama: 1 MIPSNuttig:5/1000 = 0,5 %

  • Geprogrammeerde in/uitvoer100 letters 100 ms1 MIPS computer: 0,5 % nuttig gebruik CVO10 MIPS computer: 0,05 % nuttig gebruik100 MIPS computer: 0,005% nuttig gebruik

  • Geprogrammeerde in/uitvoerVoorbeeld 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 toetsaanslag + organ. lus < 10 bevelen Rendement < 0,005 %

  • Programma-onderbrekingenCVO test niet voortdurend de toestandspoortBestuurder van randapparaat:Meldt aan CVO wanneer klaar met opdracht, gegevens beschikbaar, fout, Geen actief wachten meer!Toepassing: gegevensdebiet eerder laagZelfde voorbeeld:Scherm100 letters afbeelden1ste letter via vorige methode

  • Programma-onderbrekingenchar zone[100] = { v, };int aantal = 100;int idx = 0;main (){int cmd; /* eerste letter */while (getPort(2) != KLAAR);cmd = 1000000000 + zone[idx++];putPort(3, cmd);/* doe iets anders */}/* volgende letters */interrupt po_rout4 (){int cmd;/* bewaar accum. */ if (getPort(2) == KLAAR) {if (idx < aantal) {cmd = 1000000000 + zone[idx++];putPort (3, cmd);}} else { /* fout */ }/* herstel accum. */ }

  • Programma-onderbrekingeninterrupt po_rout4 (){int cmd;/* bewaar accumulatoren */if (getPort(2) == KLAAR) {if (idx < aantal) {cmd = 1000000000 + zone[idx++];putPort (3, cmd);}} else { /* fout */ }/* herstel accumulatoren */}PO_R4:BIG R0,BEWAARBIG R5,BEWAAR+1BIG R6,BEWAAR+2INV R0,P2VGL.w R0,VSP NGEL,FOUTHIA R6,IDXVGL R6,AANTALVSP GEL,EINDEHIA R5,OPDROPT R5,ZONE(R6+)UTV R5,P3BIG R6,IDXEINDE:HIA R0,BEWAARKTO| cmd R5; idx R6

  • Programma-onderbrekingenPO_R4:BIG R0,BEWAARBIG R5,BEWAAR+1BIG R6,BEWAAR+2INV R0,P2VGL.w R0,VSP NGEL,FOUTHIA R6,IDXVGL R6,AANTALVSP GEL,EINDEHIA R5,OPDROPT R5,ZONE(R6+)UTV R5,P3BIG R6,IDXEINDE:HIA R0,BEWAARKTO

  • Programma-onderbrekingenCVO gebruikersprogr. PO Schermbestuurder klaar bezigOpdracht gevenNuttig werkToestand uitlezenLetter afbeelden

  • Programma-onderbrekingenPerformantie Extra overhead door PO Bewaar R0, R5, R6 Herstel R0, R5, R6 Index Idx 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!

  • Programma-onderbrekingenPerformantieIets andersEerste letterTweede letterDerde letterScherm: 1000 tekens/sDrama: 1 MIPSIets andersIets anders

  • Programma-onderbrekingenNiet voor apparaten met hoog debietNa KTO, onmiddellijk een nieuwe POGeen tijd om iets anders te doenRisico dat PO-routine te lang duurt en gegevens verloren gaan

  • Transport via CVOCVOSchijf bestuurderToestenbord- bestuurder

    Geheugen

    Geheugen- bestuurder

  • Transport via CVOCVOSchijf bestuurderScherm- bestuurder

    Geheugen

    Geheugen- bestuurder

  • Directe geheugentoegangDGTEngels: DMA (Direct Memory Access)Optimisatie van vorige schemaCVO geeft opdracht aan bestuurderBestuurder zorgt zelf voor het transport van/naar het geheugenNa transport: Bestuurder PO-aanvraag

  • Directe geheugentoegangCVOSchijf bestuurderBestuurder van drukker

    Geheugen

    Geheugen- bestuurderLezen OpdrachtTransport

  • Directe geheugentoegangCVOSchijf bestuurderBestuurder van drukker

    Geheugen

    Geheugen- bestuurderSchrijven OpdrachtTransport

  • Directe geheugentoegangKamSpoorSectorCilinder (= alle sporen voor bep. positie kam)Lezen/Schrijven: 2 stappenPositioneer kam (+ selecteer kop)Lees/Schrijf # opeenvolgende sectorenSchijf:

  • Directe geheugentoegangVoorbeeld: 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

  • Directe geheugentoegangOpdrachten voor de schijfbestuurder:

    OpdrachtBetekenis100ttt0cccPositioneer kam op cilinder ccc en activeer lees/schrijfkop ttt200lll0sssLees lll opeenvolgende sectoren vanaf sector sss500000gggggggg is het adres van de DGT-geheugenzone

  • Directe geheugentoegangint 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_OPDLUS:INV R0,P6VGL.w R0,VSP NGEL,LUSUTV R5,P7HIA.w R0,1BIG R0,INLEZEN| doe iets anders TDZD:10000KOP:13CIL:37P_OPD:1000000000

  • Directe geheugentoeganginterrupt po_rout6() {/* bewaar accum. */ if (getPort(6) == KLAAR) {if (--inlezen == 0) lees( );else /* anders */ } else { /* fout */ }/* herstel accum. */ }void lees ( ){/* geef &dgt_zone door *//* geef lees opdracht */}PO_R6: | bewaar RiINV R0,P6VGL.w R0,VSP NGEL,FOUTHIA R0,INLEZENAFT.w R0,1BIG R0,INLEZENVSP NNUL,ANDERSSBR LEESSPR EINDEANDERS:EINDE: | herstel RiKTOFOUT:

  • Directe geheugentoegangvoid 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,VSP NGEL,FOUTHIA R5,AANTALVER R5,TDZDOPT R5,SECTOROPT R5,L_OPDUTV R5,P7KTGD_OPD:5000000000L_OPD:2000000000TDZD:10000DGT_ZONE:RESGR 400

  • Directe geheugentoegangCVO progr. PO Schijfbest. klaar bezigLees-opdrachtNuttig werkSectoren inlezen en in geheugen plaatsenPositioneerDGT-adres opdrachtNuttig werk

  • Directe geheugentoegangCVOSchijf bestuurderBestuurder van drukker

    Geheugen

    Geheugen- bestuurderBus kan niet gelijktijdig gebruikt worden!CVO of Bestuurder zal moeten wachten tot andere klaar is met geheugentoegang.

  • Directe geheugentoegangSchijf: Geheugencyclus-diefstalCVO Geheugen Schijfbestuurder L1L2S1S3S2L4

  • Directe geheugentoegangGrote computerinstallaties: Aparte gegevenspaden + gespreid geheugenCPU

  • Directe geheugentoegangBestuurder heeft geen GEGEVENS-toestandKlaarBezigFout

  • Speciale in/uitvoer processorenKanaalbestuurder!Lees Schrijf CVOKanaalbestuurder (Speciale I/U Processor)Teveel tijd met I/O bezig!

  • Speciale in/uitvoer processorenCVOKlaar!Echte Rekenwerk

  • Speciale in/uitvoer processorenCVOKanaal bestuurderMainframesSpeciale in/uitvoer processor

  • Speciale in/uitvoer processorenCVOLijst met uit te voeren opdrachten opstellen = speciaal kanaalprogramma opstellenDoorspelen aan kanaalbestuurderKanaalbestuurderVoert het kanaalprogramma uit Opdrachten geven aan bestuurders POs van bestuurders afhandelen (fouten, klaar, ) DGT verzorgenAls volledige kanaalprogramma afgewerkt: PO aanvragenVoordeel:CVO minder POs afhandelenCVO meer tijd voor ander werk

  • Speciale in/uitvoer processorenOpdrachten voor de kanaalbestuurder: Toestandpoort = P8, Opdracht/Geg.Poort = P9

    OpdrachtBetekenis200000ggggBegin uitvoering van het kanaal- programma dat op adres gggg begint.

  • Speciale in/uitvoer processorenKanaalprogramma: Eigen machinetaal Vaak lange bevelen (veel argumenten) Voorbeeld:KAMBESTUURDER=7,SCHIJF=0,CIL=13,SPOOR=37KAMBESTUURDER=8,SCHIJF=1,CIL=200,SPOOR=18LEESBESTUURDER=7,SCHIJF=0,DGT_ADRES=6000,\ LENGTE=4,SECTOR=7SCHRIJFBESTUURDER=8,SCHIJF=1,DGT_ADRES=7000,\LENGTE=2,SECTOR=24STOP6700370013 681018020037000060009000040007481000800090000200249999999999

  • Speciale in/uitvoer processorenint 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_OPDOPT.a R5,KPROGLUS:INV R0,P8VGL.w R0,VSP NGEL,LUSUTV R5,P9| Doe iets andersKPROG:RESGR 100K_OPD:2000000000

  • SatellietcomputersFront-end Computer verbonden met in/uitvoer apparatenBack-end Computer verbonden met hulpgeheugens

  • SatellietcomputersFront-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

  • SatellietcomputersVoordelen:Minder PO-en Hoofdcomputer meer tijd voor berekeningenSatellietcomputer hoeft niet snel te zijnVoordelen t.o.v. kanaalbestuurder:Satellietcomputers grotere varieteit randapparatuurSatellietcomputer ook gewone berekeningenProgrammatuur eenvoudiger te vervangenOnafhankelijk van een fabrikant

  • SatellietcomputersNadelen satellietcomputersMinder betrouwbaarKans(defect) = Kans(Hoofdcomputer=defect) + Kans(Satellietcomputer=defect)Oplossing: Reserve (backup) computers OnderhoudscontractIdem voor kanaalbestuurders

  • StuurprogrammaInvoer/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,

  • StuurprogrammaVoor 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

  • StuurprogrammasGeheugenGebruikers-programmaPO-routine (schijf)stuurprogramma (schijf)PO-routine (scherm)stuurprogramma (scherm)PO-routine (klavier)stuurprogramma (klavier)PO-vectorenNiet rechtstreeks

  • CursustekstHoofdstuk 4: pag. 124 pag. 146