SOCS - PowerPoint PPT Presentation

slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
SOCS PowerPoint Presentation
play fullscreen
1 / 76
SOCS
186 Views
Download Presentation
fell
Download Presentation

SOCS

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. SOCS Hoofdstuk 4 Besturingssystemen

  2. 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

  3. 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’)

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

  5. Buffer Speciale Registers Popdracht/geg. Ptoestand Poorten Randapparaten Schijfbestuurder Bestuurdervan drukker CVO Geheugen-bestuurder Geheugen Bus

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

  7. Randapparaten • Lezen/schrijven uit/in “poorten”Twee methodes: • Speciale instructies • Twee verschillende adresruimtes: • Geheugenregisters • Poorten van randapparaten • Inpassing in het geheugen • Slechts 1 adresruimte

  8. 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

  9. 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

  10. Geheugenregisters P0 P1 Poorten P9 Geheugenregisters Randapparaten • Lezen/Schrijven speciale registers (poorten) • Inpassing in het centrale geheugen 0000 … 9899 9900 9901 … 9909 9910 … 9999

  11. Randapparaat • Toestandspoort (Pt) • Toestand van het randapparaat • Alleen uitlezen

  12. PO-aanvraag Fout Fout Initialiseer Opdracht klaar(niet-invoer) Gegevensbeschikbaar Gegevensuitgelezen Opdracht Initialiseer Gegevens beschikbaar(zonder opdracht) Fout Laatste gegevensgelezen Randapparaat Fout Bezig Klaar Gegevens

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

  14. Begin-toestand Eind-toestand Verklaring Randapparaat • Sommige overgangen: PO-aanvraag • Interventie van het CVO gewenst ??? Fout CVO moet fout herstellen(herinitialisatie) Bezig Klaar CVO mag nieuwe opdracht geven Bezig Gegevens CVO moet gegevens inlezen (beschikbaar na opdracht) Klaar Gegevens CVO moet gegevens inlezen(beschikbaar zonder opdracht)

  15. INV R0,P2 UTV R1,P3 INV R2,P1 UTV R3,P0 P0 0000000002 Pog Pt P1 0000000088 P2 0000000000 P3 0000000000 0000001000 R0 1000000020 R1 R2 0000000050 R3 9999999999 … Randapparaat INV R0,P2

  16. INV R0,P2 UTV R1,P3 INV R2,P1 UTV R3,P0 P0 0000000002 P1 0000000088 P2 0000000000 P3 0000000000 0000001000 R0 1000000020 R1 R2 0000000050 R3 9999999999 … Randapparaat UTV R1,P3 0000000000

  17. INV R0,P2 UTV R1,P3 INV R2,P1 UTV R3,P0 P0 0000000002 P1 0000000088 P2 0000000000 P3 1000000020 0000000000 R0 1000000020 R1 R2 0000000050 R3 9999999999 … Randapparaat 0000000001 INV R2,P1

  18. INV R0,P2 UTV R1,P3 INV R2,P1 UTV R3,P0 P0 0000000002 P1 0000000088 P2 0000000001 P3 1000000020 0000000000 R0 1000000020 R1 R2 0000000050 R3 9999999999 … Randapparaat 0000000000 0000000000 UTV R3,P0 Niet toegelaten!(P0 = toestandspoort) 0000000088

  19. 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 C Lezen/Schrijven poorten

  20. Niet te schrijven in C C PO-routine • PO-routine voorstellen als ( C): interrupt po_routine() { … } Bewaar accumulatoren Herstel accumulatoren KTO i.p.v. KTG

  21. 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

  22. 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 (GEG) • Wachten tot juiste toestand • Actief wachten = continu testen

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

  24. 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 Geprogrammeerde in/uitvoer

  25. Actief Wachten Actief Wachten Geprogrammeerde in/uitvoer Gegevens inlezen Opdracht geven CVORandapparaat klaar bezig gegevens Toestand uitlezen

  26. 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,6 MEVA Pog,7 MEVA KLAAR,0 MEVA GEG,2 opd: … Geprogrammeerde in/uitvoer

  27. 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,6 MEVA Pog,7 MEVA KLAAR,0 MEVA GEG,2 LUS1: INV R0,P<Pt> VGL.w R0,<KLAAR> VSP NGEL,LUS1 opd: … Geprogrammeerde in/uitvoer

  28. 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,6 MEVA Pog,7 MEVA KLAAR,0 MEVA GEG,2 LUS1: INV R0,P<Pt> VGL.w R0,<KLAAR> VSP NGEL,LUS1 HIA R0,opd UTV R0,P<Pog> opd: … Geprogrammeerde in/uitvoer

  29. 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,6 MEVA Pog,7 MEVA KLAAR,0 MEVA GEG,2 LUS1: INV R0,P<Pt> VGL.w R0,<KLAAR> VSP NGEL,LUS1 HIA R0,opd UTV R0,P<Pog> LUS2: INV R0,P<Pt> VGL.w R0,<GEG> VSP NGEL,LUS2 opd: … Geprogrammeerde in/uitvoer

  30. 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,6 MEVA Pog,7 MEVA KLAAR,0 MEVA GEG,2 LUS1: INV R0,P<Pt> VGL.w R0,<KLAAR> VSP NGEL,LUS1 HIA R0,opd UTV R0,P<Pog> LUS2: INV R0,P<Pt> VGL.w R0,<GEG> VSP NGEL,LUS2 INV R0,P<Pog> … opd: … Geprogrammeerde in/uitvoer

  31. MEVA Pt,6 MEVA Pog,7 MEVA KLAAR,0 MEVA GEG,2 LUS1: INV R0,P<Pt> VGL.w R0,<KLAAR> VSP NGEL,LUS1 HIA R0,opd UTV R0,P<Pog> LUS2: INV R0,P<Pt> VGL.w R0,<GEG> VSP NGEL,LUS2 INV R0,P<Pog> … opd: … Actief wachten Actief wachten Geprogrammeerde in/uitvoer

  32. Geprogrammeerde in/uitvoer • Voorbeeld: • Scherm • Toestandspoort = P2; Opdrachtpoort = P3

  33. 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,0 LUS: INV R0,P2 VGL.w R0,<KLAAR> VSP NGEL,LUS HIA R1,OPDR OPT R1,ZONE(R2+) UTV R1,P3 VGL R2,N VSP KL,LUS … OPDR: 1000000000 N: 100 ZONE: 0000000086 0000000111 … Geprogrammeerde in/uitvoer | cmd  R1; idx  R2

  34. HIA.w R2,0 LUS: INV R0,P2 VGL.w R0,<KLAAR> VSP NGEL,LUS HIA R1,OPDR OPT R1,ZONE(R2+) UTV R1,P3 VGL R2,N VSP KL,LUS … OPDR: 1000000000 N: 100 ZONE: 0000000086 0000000111 … Actief wachten Nuttige bevelen Geprogrammeerde in/uitvoer

  35. 5 s 1 ms Geprogrammeerde in/uitvoer • Performantie Actief wachten Actief wachten Actief wachten Derde letter Tweede letter Eerste letter Scherm: 1000 tekens/s Drama: 1 MIPS Nuttig: 5/1000 = 0,5 %

  36. 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 • …

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

  38. 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

  39. char 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-onderbrekingen

  40. interrupt 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,BEWAAR BIG R5,BEWAAR+1 BIG R6,BEWAAR+2 INV R0,P2 VGL.w R0,<KLAAR> VSP NGEL,FOUT HIA R6,IDX VGL R6,AANTAL VSP GEL,EINDE HIA R5,OPDR OPT R5,ZONE(R6+) UTV R5,P3 BIG R6,IDX EINDE: HIA R0,BEWAAR … KTO Programma-onderbrekingen | cmd  R5; idx  R6

  41. PO_R4: BIG R0,BEWAAR BIG R5,BEWAAR+1 BIG R6,BEWAAR+2 INV R0,P2 VGL.w R0,<KLAAR> VSP NGEL,FOUT HIA R6,IDX VGL R6,AANTAL VSP GEL,EINDE HIA R5,OPDR OPT R5,ZONE(R6+) UTV R5,P3 BIG R6,IDX EINDE: HIA R0,BEWAAR … KTO 17 bevelen / letter Programma-onderbrekingen

  42. CVO en Bestuurderbeide bezig Programma-onderbrekingen Toestand uitlezen Nuttig werk CVO gebruikersprogr. POSchermbestuurder klaar bezig Opdracht geven Letter afbeelden

  43. Programma-onderbrekingen • Performantie • 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!

  44. Nuttig werk!!! 5 s 17 s 1 ms Programma-onderbrekingen • Performantie Iets anders Iets anders Iets anders Derde letter Tweede letter Eerste letter Scherm: 1000 tekens/s Drama: 1 MIPS

  45. 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

  46.  Transport via CVO Schijfbestuurder Toestenbord-bestuurder CVO Geheugen-bestuurder Geheugen

  47.  Transport via CVO Schijfbestuurder Scherm-bestuurder CVO Geheugen-bestuurder Geheugen

  48. Directe geheugentoegang • DGT • Engels: DMA (Direct Memory Access) • Optimisatie van vorige schema • CVO geeft opdracht aan bestuurder • Bestuurder zorgt zelf voor het transport van/naarhet geheugen • Na transport: Bestuurder  PO-aanvraag

  49.  Directe geheugentoegang Lezen … Schijfbestuurder Bestuurdervan drukker CVO Geheugen-bestuurder Geheugen Opdracht Transport

  50.  Directe geheugentoegang Schrijven … Schijfbestuurder Bestuurdervan drukker CVO Geheugen-bestuurder Geheugen Opdracht Transport