slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
SOCS PowerPoint Presentation
Download Presentation
SOCS

Loading in 2 Seconds...

play fullscreen
1 / 73

SOCS - PowerPoint PPT Presentation


  • 169 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'SOCS' - eros


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


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

SOCS

Hoofdstuk 4

Besturingssystemen

inhoud
Inhoud
  • Inleiding
  • Programmatoestandswoord
  • Programma-onderbrekingen
  • Invoer en uitvoer
  • Processortoestanden
  • Multiprogrammatie
  • Soorten Besturingssystemen
  • Taken van een besturingssysteem
  • Kosten en Baten
inhoud1
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
invoer en uitvoer
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’)
randapparaten
Randapparaten
  • (Mechanisch gedeelte)
  • Elektronisch gedeelte
    • = Bestuurder (Controller, Adapter)
    • Insteekkaart
    • Vaak meerdere apparaten besturen
randapparaten1

Buffer

Speciale Registers

Popdracht/geg.

Ptoestand

Poorten

Randapparaten

Schijfbestuurder

Bestuurdervan drukker

CVO

Geheugen-bestuurder

Geheugen

Bus

randapparaten2
Randapparaten
  • Toestandspoort (Pt)
    • Toestand v. (bestuurder) randapparaat (LEZEN)
  • Opdracht en gegevenspoort (Pog)
    • Opdracht aan bestuurder geven (SCHRIJVEN)
    • Gegevens van (bestuurder) apparaat ophalen (LEZEN)
randapparaten3
Randapparaten
  • Lezen/schrijven uit/in “poorten”Twee methodes:
    • Speciale instructies
      • Twee verschillende adresruimtes:
        • Geheugenregisters
        • Poorten van randapparaten
    • Inpassing in het geheugen
      • Slechts 1 adresruimte
randapparaten4
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
randapparaten5
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
randapparaten6

Geheugenregisters

P0

P1

Poorten

P9

Geheugenregisters

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

0000

9899

9900

9901

9909

9910

9999

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

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

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

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)

randapparaat4
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

randapparaat5
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

randapparaat6
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

randapparaat7
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

lezen schrijven poorten
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
po routine

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

in en uitvoer organisatievormen
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
geprogrammeerde in uitvoer
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
    • Wachten tot juiste toestand
      • Actief wachten = continu testen
geprogrammeerde in uitvoer1
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
geprogrammeerde in uitvoer2
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
geprogrammeerde in uitvoer3

Actief Wachten

Actief Wachten

Geprogrammeerde in/uitvoer

Gegevens inlezen

Opdracht geven

CVORandapparaat klaar bezig gegevens

Toestand uitlezen

geprogrammeerde in uitvoer4
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
geprogrammeerde in uitvoer5
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
geprogrammeerde in uitvoer6
Geprogrammeerde in/uitvoer
  • Voorbeeld:
    • Scherm
      • Toestandspoort = P2; Opdrachtpoort = P3
geprogrammeerde in uitvoer7
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
geprogrammeerde in uitvoer8
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
geprogrammeerde in uitvoer9

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 %

geprogrammeerde in uitvoer10
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
geprogrammeerde in uitvoer11
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 van toetsaanslag + lus < 10 bevelen
      • Rendement < 0,005 %
programma onderbrekingen
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
programma onderbrekingen1
char zone[100] = { ‘v’, … };

int n = 100;

int idx = 0;

main ()

{

/* eerste letter */

int cmd;

while (getPort(2) != KLAAR);

cmd = 1000000000 + zone[idx++];

putPort(3, cmd);

/* doe iets anders */

}

/* volgende letters */

interrupt po_rout4 ()

{

int cmd;

/* bewaar accumulatoren */

if (getPort(2) == KLAAR) {

if (idx < n) {

cmd = 1000000000 + zone[idx++];

putPort (3, cmd);

}

} else { /* fout */ }

/* herstel accumulatoren */

}

Programma-onderbrekingen
programma onderbrekingen2
interrupt po_rout4 ()

{

int cmd;

/* bewaar accumulatoren */

if (getPort(2) == KLAAR) {

if (idx < n) {

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,P<Pt>

VGL.w R0,<KLAAR>

VSP NGEL,FOUT

HIA R6,INDEX

VGL R5,AANTAL

VSP GEL,EINDE

HIA R5,OPDR

OPT R5,ZONE(R6+)

UTV R5,P<Pog>

BIG R6,INDEX

EINDE: HIA R0,BEWAAR

KTO

Programma-onderbrekingen
programma onderbrekingen3
PO_R4: BIG R0,BEWAAR

BIG R5,BEWAAR+1

BIG R6,BEWAAR+2

INV R0,P<Pt>

VGL.w R0,<KLAAR>

VSP NGEL,FOUT

HIA R6,INDEX

VGL R5,AANTAL

VSP GEL,EINDE

HIA R5,OPDR

OPT R5,ZONE(R6+)

UTV R5,P<Pog>

BIG R6,INDEX

EINDE: HIA R0,BEWAAR

KTO

17 bevelen / letter

Programma-onderbrekingen
programma onderbrekingen4

CVO en Bestuurderbeide bezig

Programma-onderbrekingen

Toestand uitlezen

Nuttig werk

CVO gebruikersprogr. POSchermbestuurder klaar bezig

Opdracht geven

Letter afbeelden

programma onderbrekingen5
Programma-onderbrekingen
  • Performantie
    • Extra overhead door PO
      • Bewaar R0, R5, R6 … Herstel R0, R5, R6
      • Index 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!
geprogrammeerde in uitvoer12

Nuttig werk!!!

17 s

1 ms

Geprogrammeerde in/uitvoer
  • Performantie

Iets anders

Iets anders

Iets anders

Derde letter

Tweede letter

Eerste letter

Scherm: 1000 tekens/s

Drama: 1 MIPS

programma onderbrekingen6
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
transport via cvo

Transport via CVO

Schijfbestuurder

Toestenbord-bestuurder

CVO

Geheugen-bestuurder

Geheugen

transport via cvo1

Transport via CVO

Schijfbestuurder

Scherm-bestuurder

CVO

Geheugen-bestuurder

Geheugen

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

Directe geheugentoegang

Lezen …

Schijfbestuurder

Bestuurdervan drukker

CVO

Geheugen-bestuurder

Geheugen

Opdracht

Transport

directe geheugentoegang2

Directe geheugentoegang

Schrijven …

Schijfbestuurder

Bestuurdervan drukker

CVO

Geheugen-bestuurder

Geheugen

Opdracht

Transport

directe geheugentoegang3
Directe geheugentoegang

Schijf:

Kam

Spoor

Sector

Cilinder(= alle sporen voor bep. positie kam)

  • Lezen/Schrijven: 2 stappen
  • Positioneer kam (+ selecteer kop)
  • Lees/Schrijf # opeenvolgende sectoren
directe geheugentoegang4
Directe geheugentoegang
  • Voorbeeld:
    • 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 geheugentoegang5
Directe geheugentoegang
  • Opdrachten voor de schijfbestuurder:
directe geheugentoegang6
int 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,KOP

VER R5,TDZD

OPT R5,CIL

OPT R5,P_OPDLUS: INV R0,P6

VGL.w R0,<KLAAR>

VSP NGEL,LUS

UTV R5,P7

| iets anders …

TDZD: 10000

KOP: 13

CIL: 37

P_OPD: 1000000000

Directe geheugentoegang
directe geheugentoegang7
interrupt po_rout6() {

/* bewaar accumulatoren */

if (getPort(6) == KLAAR) {

if (--inlezen == 0) lees( );

else /* anders */ …

} else { /* fout */ … }

/* herstel accumulatoren */

}

void lees ( )

{

/* geef &dgt_zone door */

/* geef lees opdracht */

}

PO_R6: … | bewaar Ri

INV R0,P6

VGL.w R0,<KLAAR>

VSP NGEL,FOUT

HIA R0,INLEZEN

AFT.w R0,1

BIG R0,INLEZEN

VSP NNUL,ANDERS

SBR LEES

SPR EINDE

ANDERS: …

EINDE: … | herstel Ri

KTO

FOUT: …

Directe geheugentoegang
directe geheugentoegang8
void 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_OPD

OPT.a R5,DGT_ZONE

UTV R5,P7

INV R0,P6

VGL.w R0,<KLAAR>

VSP NGEL,FOUT

HIA R5,AANTAL

VER R5,TDZD

OPT R5,SECTOR

OPT R5,L_OPD

UTV R5,P7

KTG

D_OPD: 5000000000

L_OPD: 2000000000

TDZD: 10000

DGT_ZONE: RESGR 400

Directe geheugentoegang
directe geheugentoegang9

CVO en Bestuurderbeide bezig

CVO en Bestuurderbeide bezig

Directe geheugentoegang

Nuttig werk

Nuttig werk

CVO progr. POSchijfbest. klaar bezig

DGT-adresopdracht

Lees-opdracht

Sectoren inlezen enin geheugen plaatsen

Positioneer

directe geheugentoegang10
Directe geheugentoegang

Bus kan nietgelijktijdig gebruiktworden!

Schijfbestuurder

Bestuurdervan drukker

CVO

Geheugen-bestuurder

Geheugen

CVO of Bestuurder zalmoeten wachten tot andereklaar is met geheugentoegang.

directe geheugentoegang11

S3

L1

L2

L4

S1

S2

Cyclusdiefstal

Directe geheugentoegang
  • Schijf: Geheugencyclus-diefstal

CVO

Geheugen

Schijfbestuurder

L1

L2

S1

S3

S2

L4

directe geheugentoegang12

Geheugen (module 1)

Geheugen-bestuurder

Geheugen(module 2)

Schijfbestuurder

Directe geheugentoegang
  • Grote computerinstallaties:
    • Aparte gegevenspaden + gespreid geheugen

CPU

directe geheugentoegang13

Fout

Fout

Initialiseer

Opdracht klaar

Opdracht

Directe geheugentoegang
  • Bestuurder heeft geen GEGEVENS-toestand

Fout

Bezig

Klaar

speciale in uitvoer processoren

Lees …Schrijf …

Speciale in/uitvoer processoren

Teveel tijd metI/O bezig!

Kanaalbestuurder!

Lees …Schrijf …

Kanaalbestuurder(Speciale I/U Processor)

CVO

speciale in uitvoer processoren1
Speciale in/uitvoer processoren

Echte Rekenwerk…

Klaar!

CVO

speciale in uitvoer processoren2

Geheugen-bestuurder

Geheugen

Schijfbestuurder

Schijfbestuurder

Drukkerbestuurder

Drukkerbestuurder

Speciale in/uitvoer processoren

CVO

Kanaalbestuurder

Mainframes

Specialein/uitvoerprocessor

speciale in uitvoer processoren3
Speciale in/uitvoer processoren
  • CVO
    • Lijst met uit te voeren opdrachten opstellen = speciaal kanaalprogramma opstellen
    • Doorspelen aan kanaalbestuurder
  • Kanaalbestuurder
    • Voert het kanaalprogramma uit
      • Opdrachten geven aan bestuurders
      • PO’s van bestuurders afhandelen (fouten, klaar, …)
      • DGT verzorgen
    • Als volledige kanaalprogramma afgewerkt: PO aanvragen
  • Voordeel:
    • CVO minder PO’s afhandelen
    • CVO meer tijd voor ander werk
speciale in uitvoer processoren4
Speciale in/uitvoer processoren
  • Opdrachten voor de kanaalbestuurder:
    • Toestandpoort = P8, Opdracht/Geg.Poort = P9
speciale in uitvoer processoren5
Speciale in/uitvoer processoren
  • Kanaalprogramma:
    • Eigen machinetaal
    • Vaak lange bevelen (veel argumenten)
    • Voorbeeld:

KAM BESTUURDER=7,SCHIJF=0,CIL=13,SPOOR=37

KAM BESTUURDER=8,SCHIJF=1,CIL=200,SPOOR=18

LEES BESTUURDER=7,SCHIJF=0,DGT_ADRES=6000,\ LENGTE=4,SECTOR=7

SCHRIJF BESTUURDER=8,SCHIJF=1,DGT_ADRES=7000,\

LENGTE=2,SECTOR=24

STOP

67003700136810180200

3700006000

9000040007

4810008000

9000020024

9999999999

speciale in uitvoer processoren6
int 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_OPD

OPT.a R5,KPROG

LUS: INV R0,P8

VGL.w R0,<KLAAR>

VSP NGEL,LUS

UTV R5,P9

| Doe iets anders

KPROG: RESGR 100

K_OPD: 2000000000

Speciale in/uitvoer processoren
satellietcomputers

Hoofd-computer

Back-end

Front-end

Satellietcomputers
  • Front-end
    • Computer verbonden met in/uitvoer apparaten
  • Back-end
    • Computer verbonden met hulpgeheugens
satellietcomputers1
Satellietcomputers
  • Front-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
satellietcomputers2
Satellietcomputers
  • Voordelen:
    • Minder PO-en Hoofdcomputer meer tijd voor berekeningen
    • Satellietcomputer hoeft niet snel te zijn
  • Voordelen t.o.v. kanaalbestuurder:
    • Satellietcomputers  grotere varieteit randapparatuur
    • Satellietcomputer  ook gewone berekeningen
    • Programmatuur eenvoudiger te vervangen
    • Onafhankelijk van een fabrikant
satellietcomputers3
Satellietcomputers
  • Nadelen satellietcomputers
    • Minder betrouwbaar
    • Kans(defect) = Kans(Hoofdcomputer=defect) + Kans(Satellietcomputer=defect)
    • Oplossing:
      • Reserve (backup) computers
      • Onderhoudscontract
  • Idem voor kanaalbestuurders
stuurprogramma
Stuurprogramma
  • Invoer/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, …
stuurprogramma1

Onderdeel v/hBesturingsprogramma(Operating System)

Stuurprogramma
  • Voor 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
stuurprogramma s

Besturings-programma

Stuurprogramma’s

Geheugen

PO-vectoren

Gebruikers-

programma

Niet rechtstreeks

PO-routine(schijf)

PO-routine(scherm)

PO-routine(klavier)

stuurprogramma(schijf)

stuurprogramma(scherm)

stuurprogramma(klavier)

cursustekst
Cursustekst
  • Hoofdstuk 4: pag. 124  pag. 146