SOCS
description
Transcript of SOCS
2
Inhoud
Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer Processortoestanden Multiprogrammatie Soorten Besturingssystemen Taken van een besturingssysteem Kosten en Baten
3
Inhoud
Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer Processortoestanden
Halttoestand en uitvoeringstoestand Probleemtoestand en supervisietoestand Geprivilegieerde bevelen Supervisie-oproep De volledige bevelencyclus
Multiprogrammatie …
4
Processortoestanden
Als CVO niets te doen? Geen programma om uit te voeren Huidige programma wacht op gegevens
Oplossing: Actief wachten
LUS: SPR LUS Nadeel: DGT-transporten worden gestoord
“Halttoestand” Alleen 4de stap van bevelencyclus
(nagaan of PO-aanvraag mag optreden)
5
Halt-, Uitvoeringstoestand
H/U S/P CCONV OVI SOI BT
GPF WEK DRKG IN UIT SCH OVL SPL MFT
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
0: Halttoestand1: Uitvoeringstoestand
Alleen 4de stapbevelencyclus
Volledigebevelencyclus
6
Halt-, Uitvoeringstoestand
Halt-Halt-toestandtoestand
Uitvoerings-Uitvoerings-toestandtoestand
STP
KTOKTO
Anderbevel
Programma-onderbreking
3001111200
Stapel
7100100298
Stapel
7
Halt-, Uitvoeringstoestand
int * tedoen = (int *) –1;main(){
/* twee taken te doen */tedoen = &andere_taak;/* begin eerste taak */…if (tedoen == (int *) –1) {
/* stop */} else {
/* begin taak */}
}
MAIN: HIA.a R0,TAAKBIG R0,TEDOEN
… | eerste taak…
HIA R0,TEDOENVGL.w R0,-1
VSP GEL,NIETS
SPR 0(R0)
NIETS: STP
TEDOEN:-1
8
Halt-, Uitvoeringstoestand
Beter: lijst met taken Taak afgewerkt: volgende uit lijst Lijst leeg: STP
TAAK1: ……
TAAK2: ……
TAAK3: ……
NULL
9
Probleem-, Supervisietoestand
Besturingsprogramma
Gebruikersprogramma
Ik mag allesIk mag niet alles!
CVO moet weten welk programma uitgevoerd wordt!
10
Probleem-, Supervisietoestand
Correcte werking van computer garanderen: Verhinderen: gebruiker zelf apparaten aanstuurt Onderscheid tussen:
Gebruikersprogramma Besturingsprogramma
Twee toestanden: Supervisietoestand (monitortoestand)
CVO voert Besturingsprogramma uit Probleemtoestand
CVO voert Gebruikersprogramma uit
11
Halt-, Uitvoeringstoestand
H/U S/P CCONV OVI SOI BT
GPF WEK DRKG IN UIT SCH OVL SPL MFT
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
0: Supervisietoestand1: Probleemtoestand
CVO voert besturings-programma uit
CVO voert gebruikers-programma uit
12
Halt-, Uitvoeringstoestand
Halt-Halt-toestandtoestand
Uitvoerings-Uitvoerings-toestandentoestanden
STP
KTO
KTOAnderbevel
Programma-onderbreking
3001111200
Stapel
Probleem-Toestand (1)
SupervisieToestand (0)
KTO
0110100132
Stapel
Niet-gepriv.bevel
PO
5100100298
Stapel
PO
13
DRAMA bevelenDRAMA bevelen
Geprivilegieerde bevelen
Probleemtoestand: Niet alle bevelen toegelaten!
INV, UTV,INV, UTV,MKH, MKL, MKH, MKL, TSM, TSO,TSM, TSO,STP, KTOSTP, KTO
HIA, BIGHIA, BIGOPT, AFT, VER, OPT, AFT, VER, DEL, MOD, VGLDEL, MOD, VGL
SPR, VSP, SPR, VSP, SBR, KTG,SBR, KTG,
ONDOND
Geprivilegieerdebevelen
Niet-geprivilegieerdebevelen
14
Geprivilegieerde bevelen
UitgevoerdUitgevoerdPOPO99
UitgevoerdUitgevoerdUitgevoerdUitgevoerd
Probleem-Probleem-toestandtoestand
Supervisie-Supervisie-toestandtoestand
Niet-Niet-geprivilegieerdgeprivilegieerdbevelbevel
GeprivilegieerdGeprivilegieerdbevelbevel
15
Supervisie-oproep
Gebruikerprogramma: Niet rechtstreeks randapparaten aanspreken Hulp vragen aan besturingsprogramma
Mag wel geprivilegieerde bevelen uitvoeren Supervisietoestand!
Overgang afdwingen: Geprogrammeerde PO (OND) = supervisor call, system call
Operand = ‘dienst’ Mogelijk extra argumenten (via stapel, acc., …)
16
Supervisie-oproep
Dienst-nummer
Dienst
1 Lees getal in R0 in
2 Druk R0 af op scherm
3 Naar nieuwe lijn op scherm
4 Huidige datum + tijd in R0
…
9999 Stop de uitvoering van dit programma
Verschillend van besturingsprogramma tot besturingsprogramma
17
Supervisie-oproep
/* lees 1000 getallen in en druk getal, getal^2 af */main(){
int k, x;for (k=0; k<1000; k++) {
x = getint();printint(x);printint(x*x);
}}
MAIN: HIA.w R1,0FOR: VGL.w R1,1000
VSP GRG,EFORLEZDRUVER R0,R0DRUNWLOPT.w R1,1SPR FOR
EFOR: STP
OND 1 | LEZOND 2 | DRU
OND 2 | DRU
OND 3 | NWL
OND 9999 | STP
1000 x 4 + 1 = 4001 supervisie-oproepen1000 x 4 + 1 = 4001 supervisie-oproepen
18
Behandelingsroutine voorsupervisie-oproepen
| Gebruikersprogramma
MAIN: …
OND 2
…
PO_R1:BIG R0,BEWAAR…BIG R9,BEWAAR+9
| welke dienst?
00123123
01250125
00124124
…
…6199990002
89998999
9000900001100001250000000000
Gebruikers-programma
StapelR9R9
HIA R0,0(R9)MOD R0,TDZDAFT.w R0,1HIA R1,0(R0)MOD R1,TDZD
DST1: VGL.w R1,1VSP NGEL,DST2SBR LEZ_PROCSPR TERUG1
19
Behandelingsroutine voorsupervisie-oproepen
PO_R1:BIG R0,BEWAAR…BIG R9,BEWAAR+9
| welke dienst?HIA R0,0(R9)MOD R0,TDZDAFT.w R0,1HIA R1,0(R0)MOD R1,TDZD
DST1: VGL.w R1,1VSP NGEL,DST2SBR LEZ_PROCSPR TERUG1
DST2: VGL.w R1,2VSP NGEL,DST3SBR DRU_PROCSPR TERUG
DST3: …TERUG: HIA R0,BEWAARTERUG1: HIA R1,BEWAAR+1
…HIA R9,BEWAAR+9
KTO
BEWAAR: RESGR 10
TDZD: 10000
20
Behandelingsroutine voorsupervisie-oproepen
| GebruikersprogrammaMAIN: …
OND 2…
DRU_PROC:…UTV R5,P3…KTG
LEZ_PROC:…INV R0,P1…KTG
LEZ_PROC:…INV R0,P1…KTG
LEZ_PROC:…INV R0,P1…KTG
PO-vectorenPO-vectoren
PO_R1: …
SBR DRU_PROC
KTO
(1)
(2)
(3)
(4)
(5)(6)
ProbeemtoestandSupervisie-
toestand
OND 2
21
Supervisie-oproep
Voordelen: Programmeur geen laag-niveau details Complexe taken correct uitgevoerd
Buffering en boekhouding Timing, fouten opvangen, … echo-transmissie, lokaal editeren, …
Optimisaties mogelijk Actief wachten vermijden Uitgesteld wegschrijven Vooraf inlezen Vooraf intypen (type ahead) …
22
Bevelencyclus
int skip_uitvoering;
while (true) {
if (PTW[1] == 1) {
/* uitvoeringstoest. */
/* haal bevel op */ …
/* analyseer bevel */ …
skip_uitvoering = 0;if (PTW[2] == 1 &&
gepriv(fc)) {PO_vlag[9] = 1;skip_uitvoering = 1;
}
if (! skip_uitvoering) {
/* voeruit */
switch (fc) {…
case STP: PTW[1] = 0; break;
…
}}
} /* if (PTW[1] == 1) */
23
Bevelencyclus
if (PTW[10] != 1) {/* G masker af */
int onv = PTW[0];int k;
/* Toeg. PO? */for (k=9; k>onv; k--)
if ((PO_vlag[k] && ((k == 1) ||
! PTW[10+k]))break;
if (k > onv) {
/* POk */
opStapel(PTW, 0, 9);
PTW[0] = k; /* ONV */
PO_vlag[k] = 0;
/* uitv. + superv. */PTW[1] = 1;PTW[2] = 0;
vulin(Geheugen[9990+k]% 10000,PTW,6,9);
}
} /* if (G-masker) */
} /* while */
24
Inhoud Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer Processortoestanden Multiprogrammatie
Principe Doorvoer STP-bevel Besturingsprogramma Opstarten van de computer
Soorten Besturingssystemen …
25
Multiprogrammatie
Randapparaten traag t.o.v. CVO Actief wachten: heel onefficient PO en DGT: CVO kan iets anders doen Iets anders?
/* lees sector in */
while (getPort(6) != KLAAR);
putPort (7, cmd);
/* doe iets anders */
…
Dit moet een anderprogramma zijn.
Programma heeft diegegevens nodig.
26
Principe
PROG_B
PROG_A
Besturingsprog
PO_ROUT1
PO_ROUT6
halttijd
ON
D 7
3
ON
D 7
3 ON
D 7
3
KT
O
KT
O
KT
O
KT
O
ST
P
PO
6
PO
6
Lezen van schijf: OND 73 PO
6P
O6
I/O (A) gestart
I/O (A) gestart
I/O (A) klaar
Schijfbezig
I/O (A) klaar
I/O (B)gestart
27
Principe
Monoprogrammatie Programma’s sequentieel uitgevoerd Slechts 1 programma tegelijk geladen
Multiprogrammatie = Gelijktijdig (afwisselend) uitvoeren
van verschillende programma’s CVO ‘bezig’ houden Veel programma’s nooit werkloos
28
Doorvoer
2 Identieke programma: Initialisatie 100 ms 4 x (100 ms wachten invoer + 100 ms rekenen) 100 ms wegschrijven = totaal 1 s
Uitvoering: Monoprogrammatie (na elkaar) Multiprogrammatie
29
DoorvoerProg_A
Prog_B
halt
Prog_A
Prog_B
halt
1 2
1 1,1
Monoprogrammatie
Multiprogrammatie
Doorvoer: 1 prog/s
Doorvoer: ±2 prog/s
30
DoorvoerProg_A
Prog_B
halt
Prog_A
Prog_B
PO_R1
PO_R6
halt
Prog_A
Prog_B
PO_R1
PO_R6
halt
Prog_A
Prog_B
halt
StartI/O
I/Oklaar
I/Oklaar
StartI/O
RealiteitVorige figuur
31
Werkloos?
Zelden processor 100% bezighouden Zwaar belast: 90 .. 95 % Licht belast: 10 .. 30 %
Merk op: Hoge multiprogrammatiegraad
(= aantal programma’s in geheugen) Processor weinig (of niet) werkloos Elk programma slechts fractie van beschikbare tijd lijkt dat de processor traag werkt
32
STP-bevel
Geprivilegieerd Alleen besturingsprogramma (BP) weet of er
nog taken zijn Gebruikersprogramma aan BP vragen om
gestopt te worden Programma uit geheugen verwijderen Ander programma inbrengen?
33
Boekhouding
Voor elk programma: gegevensstructuur Inhouden van accumulatoren BT, CC, OVI, … (eerste deel PTW)
Gebruikt bij programmawisseling
R0R1
…
R9
PTWPro
gr.
A
R0R1
…
R9
PTWPro
gr.
B
R0R1
…
R9
PTWPro
gr.
C
34
Opstarten van de computer
Programma in ROM uitvoeren Lader(s) inladen (bootstrap)
besturingsprogramma inladen Hoofdprogramma van besturingsprogramma:
Gegevensstructuren initialiseren Op zoek naar werk
Gebruikersprogramma’s of (geen werk) STP
Besturingsprogramma alleen nog via POgeactiveerd
35
Inhoud
Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer Processortoestanden Multiprogrammatie Soorten Besturingssystemen Taken van een besturingssysteem Kosten en Baten
36
Soorten besturingssystemen
Algemeen Nut(general purpose)
Specifiek Doel(dedicated,embedded)
Niet-interactief Interactief
1 Gebruiker(Single User)
Meerdere gebruikers(Multi-User)
(Time sharing)
= Stapelverwerking(batch system)
Reële tijd(real time)
Vastetijdslimieten
37
Inhoud
… Processortoestanden Multiprogrammatie Soorten Besturingssystemen Taken van een besturingssysteem
Geheugenbeheer Processorbeheer Het beheer van de randapparaten Bestandenbeheer Informatiebeheer Boekhouding
Kosten en Baten
38
Taken/diensten besturingsprogramma
Geheugenbeheer Waar elk programma in het geheugen
Processorbeheer Aan welk programma zal CVO werken?
Beheer in/uitvoer Besturen van alle randapparaten
Bestandenbeheer Bestanden bijhouden op hulpgeheugens
Informatiebeheer
39
Geheugenbeheer
Multiprogrammatie meerdere programma’s gelijktijdig in geheugen
Verschillende algoritmes: Aaneengesloten, gepagineerd, …
A B
C
E
BPD
A1
A2
A3
B1
B2
B3
PB1
PB2
PB3
PB4
E1
E2
D1
D2C1
HW: verspreide delenals 1 geheel laten voorkomen
40
Geheugenbeheer
Verschillende programma’s bescherming
AB
C
E
BP
D
In uitvoering
Resultaatcorrect ?
Privacygeschonden?
41
Geheugenbeheer
Geen geheugenbescherming:
MAIN: HIA.a R0,LABELBIG R0,9991OND 1
LABEL:…
INV R0,P2UTV R1,P3…
42
Geheugenbeheer
MAIN: HIA.a R0,LABELBIG R0,9991OND 1
LABEL:…
INV R0,P2UTV R1,P3…
PO-vectorenPO-vectoren
PO_R1:BIG R0,BEWAAR…
HIA.a R0,LABEL BIG R0,9991
43
Geheugenbeheer
MAIN: HIA.a R0,LABELBIG R0,9991OND 1
LABEL:…
INV R0,P2UTV R1,P3…
PO-vectorenPO-vectoren
PO_R1:BIG R0,BEWAAR…
OND 1
44
Geheugenbeheer
MAIN: HIA.a R0,LABELBIG R0,9991OND 1
LABEL:…
INV R0,P2UTV R1,P3…
PO-vectorenPO-vectoren
PO_R1:BIG R0,BEWAAR…
…
INV R0,P2 In supervisortoestand!
45
Geheugenbeheer
Geen geheugenbescherming:
MAIN: HIA R0,9991HIA R1,INSTRBIG R1,0(R0)OND 1
INSTR:SPR LABEL
LABEL:…
INV R0,P2UTV R1,P3
46
Geheugenbeheer
MAIN: HIA R0,9991HIA R1,INSTRBIG R1,0(R0)OND 1
INSTR:SPR LABEL
LABEL:…
INV R0,P2UTV R1,P3
PO-vectorenPO-vectoren
PO_R1:BIG R0,BEWAAR…
HIA R0,9991HIA R1,INSTRBIG R1,0(R0)
9991
47
Geheugenbeheer
MAIN: HIA R0,9991HIA R1,INSTRBIG R1,0(R0)OND 1
INSTR:SPR LABEL
LABEL:…
INV R0,P2UTV R1,P3
PO-vectorenPO-vectoren
PO_R1:BIG R0,BEWAAR…
OND 1
SPR LABEL
48
Geheugenbeheer
MAIN: HIA R0,9991HIA R1,INSTRBIG R1,0(R0)OND 1
INSTR:SPR LABEL
LABEL:…
INV R0,P2UTV R1,P3
PO-vectorenPO-vectoren
PO_R1:BIG R0,BEWAAR…
…
INV R0,P2
SPR LABEL
In supervisortoestand!
49
Geheugenbescherming
Geheugen
Prog. A
ondergrens
bovengrens
CVOGeheugenbeheer eenheid
bus
Ondergrens
Adres
Bovengrens
<Ja Ja
Neen Neen
50
Geheugenbescherming
Geheugen
Prog. A0200
1234
CVO
455
Geheugenbeheer eenheid
bus
0200
<
1234
Ja Ja
HIA R0,455
455
51
Geheugenbescherming
Geheugen
Prog. A0200
1234
CVO
9991
Geheugenbeheer eenheid
bus
0200
<
1234
Ja
Neen
BIG R0,9991
Adres!
52
Geheugenbeheer
Besturingsprogramma: tabel met vrij/bezet
Beginadres Lengte Toegekend aan …
0000 1140 A
1140 1060 Vrij
2200 2253 B
4453 76 Vrij
4529 1271 C
5800 1150 D
6950 50 Vrij
7000 3000 Besturings-programma
53
Processorbeheer
Meerdere programma’s wie processor? Keuze gebaseerd op:
Hoogdringendheid (prioriteit) Beurtrol …
Sommige programma’s aan het wachten …
54
Processorbeheer
afgewerkt
klaar
wachten
uitvoering
passief
Klaar om uitgevoerd te worden
Nog niet in het geheugen gebracht
I/O klaar
Gekozen
Supervisie-oproep (I/O)
Supervisie-oproep (STOP)
55
Processorbeheer
Besturingssysteem: tabel met info programma’s
Prog. Toestand Prio R0 … PTW
A klaar 10 0000001234 … 0110000123
B klaar 7 0000002341 … 0110011232
C wacht 3 0000000000 … 0110004434
D klaar 1 9999999999 … 0110006545
E passief 15 ??? … ???
56
Processorbeheer
Timesharing systeem: meerdere gebruikers Tijd eerlijk verdelen Respons-tijd (reactie-tijd): Elke gebruiker:
Indruk persoonlijke computer ter beschikking
57
Processorbeheer
Te Doen:1. Practicum Perl2. Practicum BvP3. SOCS studeren4. Vakantiebrochures5. Karweien thuis
58
Processorbeheer
Te Doen:1. Practicum Perl2. Practicum BvP3. SOCS studeren4. Vakantiebrochures5. Karweien thuis
59
Processorbeheer
Te Doen:1. Practicum Perl2. Practicum BvP3. SOCS studeren4. Vakantiebrochures5. Karweien thuis Klaar!
60
Processorbeheer
Te Doen:1. Practicum Perl2. Practicum BvP3. SOCS studeren4. Vakantiebrochures5. Karweien thuis
Enz.
61
Processorbeheer
Vóór: CVO gebruikersprogramma: Wekker zetten
Twee mogelijkheden: Gebruikersprogramma doet supervisor-oproep
wachten Wekker afzetten Volgende taak kiezen + eerst wekker instellen
Wekker loopt af Huidige taak tijdelijk uitstellen Volgende taak kiezen + eerst wekker instellen
62
Processorbeheer
Wekker: Opdrachtpoort: P9 P9 interval
interval > 0 wekker actief (telt af) interval <= 0 wekker inactief
Wekker actief: Elke s: P9 P9 – 1
Indien P9 == 0 PO_vlag[3] 1
63
Processorbeheer
Besturingsprogramma:…| Stel wekker inHIA R1,intervalUTV R1,P9| Herstel accumulatorenHIA R0,bewaar+0HIA R1,bewaar+1…HIA R9,bewaar+9KTO
bewaar: RESGR 10interval: 1000
64
PrincipePROG_A
PROG_B
PROG_C
PROG_D
PO_ROUT1PO_ROUT2
PO_ROUT6
halt tijd
ON
D 7
3
KT
O
KT
O
KT
O
KT
O
KT
O
Lezen van schijf: OND 73 PO
6P
O6
KiesProg. I/O (A)
gestartKies Prog.
KiesProg. Kies
Prog.KiesProg.
KT
O
65
Beheer van randapparaten
Besturingsprogramma: Toestand van elk apparaat bijhouden Opdrachten bijhouden indien apparaat bezig
Bezig (lezen)
CVO: Iets anders
Schrijven op schijf in wachtrij
66
Beheer van randapparatenApparaat Toestand Opdrachten
Scherm bezig A
Schrijf “xyz = …”
Toetsenbord klaar Beschikbaar
12345, abcde
Drukker klaar ---
Schijf bezig A
Schrijf cil:4,…, Data
B
Lees cil:6,…,Adres
Schijf2 defect ---
67
Bestandenbeheer
Bestand = ‘container’ voor informatie (bron)programma’s, teksten, gegevens, …
= Hoog-niveau concept Gebruiker/programma hoeft plaats niet te
kennen (alleen naam) Besturingsprogramma houdt bestanden bij
op hulpgeheugen
68
Bestandenbeheer
Prog.java
Socs.doc
Spel
Inhoudstafel
Naam Lengte Plaats
Prog.java 19820 Cil:8/spoor:4/sec:2-7
Socs.doc 98172 Cil:2/spoor:5/sec:32-59
Spel 8729 Cil:1/spoor:8/sec:11-13
69
Informatiebeheer
Besturingsprogramma houdt heel wat informatie bij Huidige datum/tijd Wie werkt op het systeem? Programma’s in uitvoering Beschikbare schijfruimte …
Opvragen via supervisie-oproepen Voorbeeld
OND 100 | R0dag,R1maand,R2jaar
70
Informatiebeheer
Bijhouden van de tijd M.b.v. circuit dat regelmatige PO aanvraagt
vb. Om de 20 ms (freq. van lijnspanning) Referentiedatum + tijd opvragen bij opstarten # PO-en tellen huidige datum en tijd berekenen
24 april 2002
10:00:00
1.002.100
# PO-en
15:34:02
Referentiedatum + tijd
24 april 2002
Huidigedatum + tijd
20.042 s later
Niet nauwkeurig (PO uitstellen, missen, …)
71
Informatiebeheer
Bijhouden van de tijd Kristal-oscillator
Onder spanning zeer nauwkeurig periodisch signaal
Signaal naar tel-circuit geleid Eenmalig initialiseren Vaak batterij klok blijft doorlopen
DRAMA: Klok v/d 2de soort Poort P8 Inhoud = # 1/10 s sinds 1 januari 1990 (00:00)
72
Informatiebeheer
Samenwerkende programma’s Informatie uitwisselen = Communicatie
A B
A B
| zend(B,boodschap)OND 234
| boodsch = ontvang(A)OND 235
Besturingssysteem
73
Boekhouding
Ten behoeve van facturatie Commercieel systeem
Statistieken t.b.v. computersysteemplanning Knelpunten Afregelen (Tunen)
74
Inhoud
Inleiding Programmatoestandswoord Programma-onderbrekingen Invoer en uitvoer Processortoestanden Multiprogrammatie Soorten Besturingssystemen Taken van een besturingssysteem Kosten en Baten
Baten Kosten Uiteindelijk rendement
76
Kosten
Apparatuur CVO complexer: PO, GBE, … Groot centraal geheugen
(besturingsprogramma, multiprogrammatie) Voldoende randapparaten
Programmatuur Verschillende manjaren
Overhead aan tijd PO toestand bewaren (+ later herstellen) Extra controles (of geoorloofd) Deels gecompenseerd door tijdswinst
(multiprogrammatie, optimisaties, …)
77
Rendement
80% processortijd: BP 20% processortijd: gebuikersprogramma
80% apparatuur: beheer van apparatuur 20% apparatuur: uitvoeren van bevelen
75% programma: organisatie (lussen, …) 25% programma: rekenen
0,2 * 0,2 * 0,25 = 0,01 = 1 % echte rekenwerk