1. Inledning 1.1. Allmänt om operativsystem Några inledande

1
Inledning
1. Inledning
1.1. Allmänt om operativsystem
Några inledande reflexioner om ordbruk, program- och maskinvara, motiv och metamotiv för
operativsystem kommer här. Sist i kapitlet finns ett exempel på (vertikal) mikroprogrammering.
1.1.1. Maskin- och programvara
Ett operativsystem består av den maskin- och programvara som bedöms behövas för alla
aktiviteter i ett datorsystem. Det fungerar som en gränssnitt mellan "den nakna maskinen"
och tillämpningarna.
Tillämpningarna kan vara program som är skrivna av (slut)användarna i godtyckliga
programspråk eller systemprogram som kompilatorer, interpretatorer, länkningsprogram,
editorer, 'debuggers', databashanterare, fönsterhanterare och kommunikationssystem.
I många arkitekturer, dock inte i RISC, finns maskininstruktioner eller underliggande interna
operationer (mikro-subrutiner) som är inkorporerade på initiativ av operativsystemkonstruktörer. Även om man i huvudsak tänker sig operativsystemet som programvara så
slirar ordbruket lite så att även dessa funktioner brukar sägas ingå i operativsystemet. I
mikroprogrammerbara system är det ju också möjligt att placera delar av operativsystemet i
mikrokod efteråt. Somliga räknar (dock) mikrokoden till maskinvaran.
De funktioner som bedöms behövas för alla tillämpningar, oberoende av språk, sorteras alltså
av konvention in under hatten operativsystem.
1.1.2. Varför studera operativsystem ?
Följande anledningar, förutom den att operativsystem (OS) är ett väldefinierat delområde
inom datorvetenskapen, kan anföras.
i. I en del situationer kan befintliga system behöva modifieras.
God kännedom om allmänna principer för området gör detta möjligt.
ii. Ju mer bekant ett verktyg är, desto lättare är det att använda.
iii. Operativsystemet är ett viktigt utvärderingskriterium av system inför tex inköp.
iv. Slutligen stöter vi på begrepp och principer som abstraktioner, resurshanteringsmetoder och säkerhetsfrågor som kan ha mer allmängiltigt intresse.
1.1.3.
Motiv
för
operativsystem
Operativsystem finns av minst tre skäl; bekvämlighet, effektivitet, säkerhet: De kan
tillsammans säga utgöra grunden för pålitlig ('dependable') datoriserad bearbetning.
i. De abstraktioner (abstrakta datatyper, 'extended type objects') som ett operativsystem erbjuder gör användandet av datorsystemet enklare än om de inte fanns.
ii. Ett operativsystem ger i allmänhet också ett bättre maskinutnyttjande än
en dator utan operativsystem skulle ge.
iii. Slutligen finns säkerhetsfrågor som hanteras bäst av ett operativsystem.
1.1.4. Ordbruk
Uttrycket operativsystemet A kan avse två förhållanden. Somliga avser det gränssnitt som
systemet erbjuder i form av synliga operationer (funktioner) uttryckta i dessas syntax (≈
utseende) och semantik (≈ betydelse); andra tänker sig en konkret implementering av
operationerna. Eftersom samma funktioner kan framställas på olika sätt så kan fler
implementeringar svara mot en specifikation. Det finns tex många olika konkreta
realiseringar av operativsystemet Unix. Den exakta framställningen kan vara avgörande tex
för systemets effektivitet även om den normalt inte är synlig utåt.
2
Inledning
1.2. Externa attribut
Det yttre synsättet på ett operativsystem avser de grundläggande abstraktioner som ett system
realiserar och hur dessa kan användas.
1.2.1.
Abstraktioner
I skenet av de huvudsakliga ingredienserna i ett datorsystem; processorer (cpu-er), minnen,
sekundärminnen och kommunikationskanaler, är det naturligt att de abstraktioner som
förekommer är de som utgår från dessa: Vi talar om
i. aktiva program med tillhörande data som processer,
ii. delar av minnet som segment eller abstrakta datatyper,
iii. långtidslagrade enheter på sekundärminnen som filer och
iv. sekvenser av in/ut-symboler som 'streams'.
Abstraktionerna brukar delas in i subjekt och objekt. Subjekten utgörs av de aktiva delarna i
systemet, tex processer, funktioner och instruktioner, medan objekten är de element som
subjekten opererar på, tex filer, terminaler och kanaler. Alla subjekt betraktas samtidigt som
objekt eftersom subjekt själva kan vara föremål för operationer som utförs av andra subjekt.
Ibland stöter man på benämningen virtuell maskin. Begreppet har två snarlika tolkningar.
Den ena (allmänna) består i att definiera begreppet som "den nakna maskinen" tillsammans
med de programmerade objekt som ett operativsystem implementerar.
Den andra (från IBM) är det förhållande att ett 'control program' ('virtual machine monitor')
endast åstadkommer en simulerad mångfald av "nakna maskiner". Tanken med detta är (var)
att kunna köra flera operativsystem samtidigt på varsin virtuell maskin ovanpå en reell
maskin; tex vid övergång från ett operativsystem till ett nytt. Den nödvändiga
tidsmultiplexeringen som ligger som bas för detta är också en grundfunktion i de flesta
operativsystem. Lite modernare namn på komponenter i samma anda är 'microkernel' och
'hardware abstraction layer'.
1.2.2.
Användning
Utifrån sett används operativsystem på två sätt: Via anrop (systemanrop) från
program/processer eller via interaktiva kommandon. Anropen brukar vara några fler än
kommandona, men kommandona brukar alltid ha en ekvivalent som systemanrop. Några
olika klasser av utförbara funktioner/tjänster (metaoperationer, yttre operationer) framgår av
följande tabell
i
ii
iii
iv
v
vi
vii
Klass
processhantering
minneshantering
filhantering
in-- och utmatning
kommunikation
tidshantering
administration
Exempel
starta processen B när A nått till punkt P
tilldela mer minne till en datastruktur
läs från fil till area i minnet
läs från tangentbord
skicka ett meddelande från dator A till B
starta en process kl 12:00
ta 'back-up' av filsystemet
I många tillämpningar når man dessa funktioner indirekt via bibliotek, 'macros' eller
systemprogram tex editorer, 'shell', kompilatorer, interpretatorer, fönstersystem och
databassytem. Ett operativsystem tjänstgör alltså som ett gränssnitt mellan maskinvaran och
tillämpningen vare sig den senare är ett systemprogram eller ett användarprogram.
Exempel: a. Ett XcSc i emacs tolkas av detta systemprogram som i sin tur gör ett anrop till
operativ- systemets filhanteringsdel,
b. ett anrop print i ett C-program går till en bibliotektsrutin som i sin tur anropar
operativsystemets i/o-del,
c. en accept-sats i Ada kompileras till systemanrop för processkommunikation, et cetera.
3
Inledning
1.3.
Funktionalitet
Ett operativsystem kan beskrivas/definieras av de funktioner det antas utföra, vad det är tänkt
att användas för och i termer av den historiska utecklingen.
1.3.1.
Grundfunktioner
Dessa kan formuleras i följande kravlista. Operativsystemet ska:
i. Skapa, övervaka och ta bort processer (≈ aktiva program).
ii. Tilldela och avallokera resurser; fysiska tex primärminne och logiska tex filer.
iii. Ge skydd, säkerhet och tillförlitlighet.
iv. Ombesörja datautbyte mellan olika program eller mellan program och användare.
v. Ta hand om avbrott och 'traps'; kallas ibland 'exceptions'.
Operativsystemet aktiveras endast via avbrott och 'traps'.
- Avbrott är de asynkrona händelser som uppstår då en yttre enhet vill påkalla
uppmärksamhet av processorn, då den yttre enheten har fullgjort sin uppgift och alltså är redo
för en ny transaktion, eller av en 'timer', som kan ses som en yttre enhet med en enda
uppgift: att generera avbrott med fix frekvens.
- Ett 'trap' som är en relativt processorn synkron händelse kan endera skapas av en 'trap'instruktion (kallas ibland 'supervisor call', svc) eller av ett fel; försök att exekvera en
privilegierad instruktion i 'user state', försök att dividera med 0, försök att skriva i skyddat
minne, mm. Olika processorer har mycket olika "felvillkor". Systemanrop slutar i en 'trap'instruktion oberoende av om de har en anpassning till omvärlden med hjälp av 'macros',
biblioteksrutiner eller används direkt.
Några av de vanligaste "tillståndsövergångarna" med avbrott och 'traps' visas i figur 1.1.
Övergångstyper
1. ist
2. est
3. iax
4. ist
5. iax
6. iax
7. ist
A = användareprocess
F
4
1
6
A
2
S
7
3
I/O
5
OBS. "Returer" visas inte
S = service (diverse)
F = felhanterare
I/O = in/utmatere
Normalt
i OS
En överggång kan vara
- explicit (e) eller implicit (i)
- synkron (s) eller asynkron (a)
- avbrott (x) eller 'trap' (t)
Figur 1.1 Avbrott och 'traps'
För den nogranna/e: En sk kallstart är den tredje orsaken till att operativsystemet aktiveras. Den
vidtas när systemet initialstartas, efter att ha varit frånslaget. 'Software interrupts' är
programavbrott orsakade av os-rutiner, som överför kontrollen till platser som kan anges via
systemanrop; tex vid inmatning av Cc.
1.3.2. Typer av operativsystem
En klassificering av operativsystem kan utgå från olika grunder.
i. Tänkt användningsområde.
Realtidsoperativsystem. Dessa används bla för processtyrning, datainsamling och
experimentstyrning, sk 'hard real time', och för databasutvinning och i transaktionssystem,
sk 'soft real time'. Den viktiga aspekten är här att systemen och tillämpningarna växelverkar
med en omgivning som består av yttre processer med givna tidskonstanter som kan vara
korta (millisekunder) eller långa (år) och att svarstiderna från program via operativsystemet
måste uppfylla de externa krav som följer av dessa för att systemet överhuvudtaget ska
fungera.
4
Inledning
'Job shop' system. Den andra huvudtypen innefattar satsvisbearbetande system och
interaktiva en- eller fleranvändarsystem. Här är rikligheten på verktyg viktig. Hastigheten är
en smakfrågan; inte en absolut nödvändighet för korrekt systembeteende. De flesta system av
denna typ är idag interaktiva (visavi människor), men för vissa syften kan sk
satsvisbearbetande system fortfarande vara funktionellt rimliga; tex utskrift av kontosaldon
en gång per månad.
ii. Given maskin- och programkonfiguration.
Distribuerade. Flera processorer eller datorer sammankopplas via kommunikationsmedier, tex
bussar, lokala nät eller 'wide area networks', och det finns ett för alla maskiner genemsamt
operativsystem som ger en extern illusion av ett enda snabbt och tillförlitligt datorsystem i
vilket användarna oberoende av var de sitter har tillgång till alla resurser i systemet oavsett
plats.
Centraliserade. All kontroll och alla data samlade på en maskin bestående av processor,
minne, skivminne, kanaler och yttre enheter.
iii. Funktionell ram.
Interaktiva. Program växelverkar med användaren under körningen.
'Embedded'. Växelverkan är (i huvudsak) riktad mot fysikaliska enheter; bilar, fabriker, osv.
'Batch'. Satsvis bearbetning i vilken ingen interaktion förekommer.
Ett exempel på ett distribuerat, 'embedded' realtidssystem är telenätets växlar.
Ett exempel på ett interaktivt, centraliserat 'job shop' system är en persondator.
1.3.3.
Historik
Några viktiga historiska hörnpelare (med mycket grova tidsangivelser) är följande.
- Binärkodning och binärladdare, ca 1945. Datorerna kördes utan något som helst understöd i
programvara. Programmering sker i begynnelsen med handgripliga kopplingar. Man kan
hävda att detta användningssätt var interaktivt.
- 'Assemblers', i/o program och 'debuggers', ca 1950. Symboliska maskinspråk, allmänt
tillgängliga drivrutiner för in- och utmatning och felsökningshjälpmedel gör sin entré.
- Bibliotek, "högnivåspråk" (tex Fortran), separatkompilering, relokering och länkning, ca
1955. Speciellt bestod dåtidens bibliotek av rutiner för beräkning av matematiska funktioner.
- Satsvisbearbetande ('batch') system, ca 1957. Här släpps den direkta interaktionen mellan
användaren och datorn. Programmerare och operatörer är ej längre samma individer. Jobben
definieras av program och data som stansas på hålkort och som läses in och körs av
operativsystemet. Kompileringslistningar och beräknade resultat presenteras vanligen i
skriven form på radskrivare.
- Kövisbearbetande system ('spooling'), ca 1960. En generalisering av satsvisbearbetningen
som använder avancerad buffring på skivminnen av sekventiella jobb. Spool = Simultaneous
peripheral operations on line. DMA-kanaler och goda avbrottsystem gav förutsättningarna.
- Multiprogrammerade 'batch' eller 'spooling' system (OS/360), ca 1962 (fördröjt). Samtidig
körning av flera jobb ökar maskinutnyttjandet. Samtidigheten innebär att ett jobb som väntar
på tex in/utmatning tillfälligtvis åsidoläggs till dess transaktionen är klar. Under väntetiden
körs ett annat jobb. Enkla former av minnesskydd utvecklas.
- Tidsdelande system ('time sharing') och realtid ('real time'), ca 1962. Tidsmultiplexing av
resurser, inkl cpu, är naturligtvis en central teknik, men det intressanta var nog i alla fall att
interaktivitet återinfördes (på högre nivå).
5
Inledning
Ett exempel: Tidsdelade, interaktiva Basic-system. De var mycket populära under en tid.
Ett annat: Realtidsystem för styrning av ett oljeraffinaderi.
- Multics 1965 -- 1972. OS-områdets mest inflytelserika system/projekt. Inte någon stor
kommersiell framgång, men frågan är om något system genererat så många nya idéer som
detta, tex hierarkiskt filsystem, 'shell'-programmering, processhantering, segmentering,
ringskydd, implementering i högnivåspråk, mm. I allt väsentligt ett tidsdelat system.
- Unix, 1969 --. En från början "strippad" variant av Multics för en interaktiv
enanvändarmiljö (på en PDP-7). Fick stor spridning bla pga att källkoden distribuerades
nästan gratis till universitet.
- Flerprocessorsystem 1970 -- . Flera cpu-er delar (refererar samma) minne. Tanken är att
åstadkomma bättre prestanda och större tillförlitlighet. Experiment med sk vektormaskiner
för numeriska beräkningar; Σi aibi, så att för varje produkt det finns en ALU.
- Datornät; Arpa 1965, Ethernet 1976. Kommunikation (mha filer) över stora eller små
avstånd är drivkraften. Elektronisk post (email) var inte ett av de tänkta tillämpningarna vid
specifikationen av Arpanätet.
- Distribuerade system, början av 80-talet. Systemen utnyttjar datornät men uppfattas utifrån
mha operativsystemet som en enhet; 'virtual uniprocessor'. Uppdelningen av exekvering och
lagring är helt transparant för användaren och sköts av ett sk distribuerat opertativsystem. Ett
stort forskningsområde idag. I de flesta kommersiella systemen delas bara filsystemet; man
får ett sk 'network operating system'.
- Arbetsstationer och persondatorer, början av 80-talet, med fönstersystem och många andra
'utilities'. Den första arbetsstationen Xerox Alto från 1974 blev inte så spridd.
- Windows NT, 1993, OSF/DCE, ... .
Idag rör forskningen inom området bland annat säkerhet, 'non uniform memory mangement',
'memory consistency', 'file caching', 'remote procedure calls', mm. Det brukar ta så där 5 - 10
år innan en del bra idéer når kommersiell status.
Utvecklingen inom tidsdelade system, datornät och processorarkitekturer har samverkat och
samverkar för att ge distribuerade system, som i sin tur accentuerar behov av nya
säkerhetsfunktioner och realtidsegenskaper som tex predikterbarhet.
1.4. Interna attribut
En process står för ett programs beteende, dvs är en aktivitet. Ett program är en text; en
statisk enhet. I ett system finns vanligen fler processer samtidigt, dvs det är fler som börjat
men (ännu) inte avslutats.
1.4.1.
Processtillstånd
Processer har olika tillstånd under sin livstid. Följande är de mest basala; i en del system
delas de upp i underordnade tillstånd.
Benämning
E: Exekverande, 'running',' executing'
R: Redo, 'ready,' 'scheduled'
Karakteristika
Processen körs på någon cpu
Processen skulle kunna köras om
tillgång till cpu fanns (men alla
processorer är upptagna av andra
exekverande processer)
6
Inledning
B: Blockerad, 'blocked', 'suspended', Processen kan inte köra därför att den
väntar på någon resurs (cpu:n
'waiting'
undantagen) som för tillfället inte finns
tillgänglig, tex en upptagen i/o enhet,
en synkroniseringssignal, utrymme i
minnet eller en fil som någon annan
process håller på att skriva på. Detta
tillstånd brukar delas upp i deltillstånd;
ett per vänteorsak.
F: Fördröjd, 'delayed'
Processen är "inaktiverad" i väntan på
ett visst klockslag. Tillståndet kan i
någon mån ses som en variant av B,
men särbehandlas av praktiska skäl i
många system
1.4.2.
Tillståndsövergångar
Under en process' livscykel förekommer tillståndsövergångar:
Övergång och benämning
R→E
'dispatching'
E→R
'preemption'
E→B
'suspension'
B→R
Beskrivning
Operativsystemet kan orsaka denna
övergång då en processor blir ledig pga att
en exekverande process blir klar eller
blockeras
Operativsystemet kan göra denna då en
process med högre prioritet än den
exekverande anländer till R från B eller då
en process' sk tidskvantum gått till ända
och den återplaceras i tillstånd R
Orsakas av den exekverande processen
själv då denna begär en resurs, tid eller
synkroniseringssignal som den för
tillfället inte kan få
Operativsystemet gör denna då
väntevillkoret inte längre föreligger
'scheduling'
Tillståndsövergångarna initieras alltid av avbrott/'traps' och effektueras av den modul i
operativsystemet som kallas kärnan ('kernel', 'nucleus'). Sista instruktionen i varje program
är (sista } i ett C-program eller end. i Pascal kompileras till) en trap-instuktion ('process
end'). Tidstyrd 'preemption' realiseras via en 'timer', som genererar avbrott med fix frekvens,
tex var 10:e ms. Figur 1.2 visar i diagramform tillstånden och tillståndsövergångarna.
2
1
6
R
E
3
4
5
B
Övergångarna är
1. Processen anländer
2. Processen körs igång ('dispatching')
3. Processen uppehålls tillfälligtvis ('preemption')
4. Processn blockeras ('suspension'); självorsakat
5. Processen schemaläggs ('scheduling')
6. Processen avslutas; självorsakat
Figur 1.2 Processtillstånd(sövergångar)
Tillstånden är
R = redo ('ready')
E = exekverande ('running')
B = blockerat ('waiting')
7
Inledning
1.4.3.
Egenskaper
Ett operativsystem karakteriseras (bland annat) av följande.
- Parallellism ('concurrency'). Detta betyder att det finns fler processer som påbörjat men inte
avslutat sin exekvering och utgör en logisk beskrivning eller implementering av den
verklighet som ett datorsystem simulerar. Ett parallellt system av sekventiella processer (de
flesta i branschen kallar detta lite oriktigt för "parallella processer": processerna i sig är ju
inte parallella!) uppstår.
- Automatisk, dvs operativsystemkontrollerad, resurshantering. En resurs kan vara:
a. Återanvändbar eller konsumerbar.
Exempel: Processor respektive synkroniseringssignal.
b. Exklusivt kontrollerad eller delbar.
Exempel: Skrivare respektive minne som bara läses (tex reentrant procedur).
c. Fysisk (maskinvara) eller logisk (programmerad).
Exempel: Skivmimne respektive fil och procsessor respektive process.
Varje resurs delas in i enheter (resursen minne består tex av enheter sk 'block'). Resurstypen
påverkar operativsystemets hantering av resursen.
- Delning. Betyder att ett objekt ingår i fler subjekt. Kan vara endera sann delning av resurs
som inte är exklusivt kontrollerbar eller realiseras via tidsmultiplexering av resursen.
- Multiplexering implementeras endera via naturlig delning eller via 'preemption'.
Några tekniker är
a. 'Multi programming'; cpu och minne delas mellan fler processer.
b. 'Multi access'; hela datorsystemet delas av flera (interaktiva) användare.
c. 'Multi tasking'; cpu delas mellan fler samtidiga processer.
d. 'Multi processing' står för att datorsystemet har flera (hårt kopplade) cpu-er !
En viss begreppsförvirring råder när det gäller dessa egenskaper, så se upp när du läser andra
böcker, manualer osv.
- Interaktivitet. En egenskap som tillfredställer systemutvecklare (och andra). Kan vara
avlägsen, 'remote', via tex datornät.
- Långtidslagring via objekthanterare, filsystem eller databassystem.
- Kommunikation i (intra) och mellan (inter) system. Både vad avser kommunikation
processer emellan och vad avser kommunikation mellan processer och användare.
- Säkerhet mot avsiktiga intrång eller oavsiktliga felaktigheter. Det övergripande målet är att
konstruera pålitliga ('dependable') system. Delområden är tillförlitlighet, feltolerans, skydd,
redundans, tillgänglighet, bekvämlighet, snabbhet, mfl.
1.4.4.'Policy/mechanism'
Man brukar dela upp funktionerna i ett operativsystem på detta sätt.
Mekanism.
Ger svar på frågan 'Hur?' Funktionerna bör vara snabba, fixa, säkra och antas användas ofta
(≈ mikro - millisekundsintervall).
'Policy'.
Ger svar på frågan 'Vad?'. Kan variera från stund till annan, används sällan (sek) och är inte
lika säkerhetskänsliga.
8
Inledning
Anledningen till uppdelningen är att man vill åstadkomma abstraherande förenklingar både
när man beskriver systemet och när man konstruerar det.
Policyn definierar de situationsanpassade aspekterna, medan mekanismerna kan betraktas som
en ren utvidgning av en "naken maskin".
Mekanismer har ofta realiserats i mikroprogramform eller tom i extra maskinvara. Gränsen
mellan operativsystemet och maskinvaran är, som sagts, flytande.
1.4.5.
Nödvändig
maskinvara
För att rimliga, dvs bekväma, skyddade och effektiva, operativsystem ska kunna byggas bör
de mest centrala mekanismerna finnas i maskinvara. Vanligt är att följande ingår.
- Avbrottshantering och 'traps', inklusive 'supervisor call'.
- Realtidsklocka. Avbryter med fix frekvens tex var 10:e ms.
- Privilegierade (skyddade) instruktioner; tex för i/o och HALT.
- Minnesskydd mellan program inkl operativsystemet som samtidigt finns i minnet.
Processorer ser dock mycket olika ut i dessa avseenden. En del (RISC) innehåller ett
minimun av funktioner, andra (CISC) har omfattande funktioner; en del system är så
omfattande att operativsystem- kärnan, dvs mekanismer för process-, minnes- och
skyddshantering, kan sägas finnas i maskinvara eller i mikroprogram.
Eftersom en del processorer som är/var vanliga i PC helt saknade tex minnesskydd i
maskinvara så uppstod plågan med virus och maskar, så snart dessa PC inkorporerades i de
stora system de från början inte var tänkta att användas i. Anledningen var att ingen ville
implementera minnesskydd i programvara; det skulle bli för ineffektivt.
1.4.6.
Skiktad
arkitektur.
Abstraktionsnivåer
Ett sätt att hantera komplexiteten i ett operativsystem är att specificera funktionerna
hierarkiskt ordnade och att bygga eller analysera skikten nästan oberoende av varandra: Ju mer
fundamental en funktion är desto mer åtkomlig måste den vara.
Exempel: PSOS, Provably Secure Operating System. Skikten 1, 2 och 3 och 5, 6, och 7
"syns ej" för användaren av operativsystemet. Skikten 0, 1, 2, 3, och 4 är maskinvara.
0. 'Capabilities'. Ett bassätt att adressera.
1. Fysiskt minne och register.
2. Avbrott och 'traps'.
3. Realtidsklocka.
4. Maskininstruktioner.
5. Primitiv i/o.
6. Systemprocesser.
7. Sidindelning av primärminnet.
8. Virtuellt minne.
9. Abstrakta datatyper.
10. Katalogsystem för filer.
11. Användarobjekt.
12. Användarprocesser.
13. Procedurer.
14. Användar i/o.
15. Användares omgivningar och namn.
16. Kommandotolk ('shell').
En enklare skiktning utgörs av
i. Maskinvara.
ii. Processhantering.
iii. Minneshantering.
iv. In- och utmatning.
v. Filhantering.
Många termer och begrepp är
(kanske)obekanta här.
De kommer att få sina förklaringar
under kursens gång.
Dessutom är det ju bara ett exempel.
9
Inledning
Denna senare skiktning är dock mindre lämpad för en operativsystemkonstruktör, eftersom
tex skikten ii. och iii. karakteriseras av inre ömsesidiga beroenden: En exekverande process
måste tex ha tillgång till primärminne, medan minnet hanteras av en process. Det är just en
sådan cirkularitet man vill undvika med en mer ändamålsenlig skiktindelning (om det går).
Skiktning och abstrakta datatyper är inte samma sak. En abstrakt datatyp kan innehålla flera
skikt och olika typers skikt kan interfolieras. Ett system är sällan renodlat hierarkiskt.
Ett tredje framställningssätt visas i figur 1.3.
A
n
v
ä
n
d
a
r
e
A
n
v
ä
d
a
r
p
r
o
g
r
a
m
S
y
s
t
e
m
p
r
o
g
r
a
m
O
P
E
R
A
T
I
V
S
Y
S
T
E
M
Filer
O
Processer
S
-
i/o-enheter
Minnen
k
ä
r
n
a
Avbrottsoch 'trap'hantering
Servicerutiner
Aktuator
('Dispatcher')
M
a
s
k
i
n
v.
Minne Processor(er)
Port
Disk
Nät
Nät
Figuren visar strukturen av ett datorsystem och (några av) anropsvägarna.
En aktiv enhet (subjekt) i ett skikt behandlas av underliggande skikt som
ett passivt objekt (en datastruktur) och som en tjänst från överliggande.
Figur 1.3 Operativsystemöversikt
1.4.7.
Systemgenerering
De flesta operativsystem är konstruerade för att kunna användas till olika
maskinkonfigurationer; olika antal processorer, mer eller mindre minne, olika yttre enheter
och nätanslutningar mm. Det system som levereras (vanligen på disk eller band) måste
anpassas för den aktuella konfigurationen. Vanligen sker detta utifrån kompilerade
objektmoduler via ett speciellt program; systemgeneratorn (sysgen) . Detta tillåter
maskinoperatören att ge relevanta parametervärden, som lagras i tabeller i systemet.
Systemgenereringen sker vanligen endast vid leverens och då maskinkonfigurationen ändras.
Då genereringen är klar finns ett körbart (länkat och initierat) operativsystem lagrat på disk
vi kan bortse från programmet sysgen.
För att starta operativsystemet, dvs ladda in [delar av] detta till primärminnet och överföra
kontrollen till dess startpunkt, sker en sms 'boot strap'-process. Följande sekvens är typisk.
M
a
s
k
i
n
v.
10
Inledning
När maskinen slås till utförs automatiskt ett rom-lagrat [mikro]program (en elementär
drivrutin, kanske 100 bytes stort) som läser in ett ladd-program från en fix plats på disken
('boot sector'). Detta program läser i sin tur in ett program som läser in operativsystemet.
Samma process används för att köra sysgen.
'Booting' kan bli nödvändigt om systemet "hänger sig", vilket kan ske pga att det
naturligtvis som alla andra programsystem innehåller felaktigheter (som inte kan åtgärdas av
systemet utan yttre ingrepp).
Med hjälp av operativsystemet skapas alla andra systemprogram som kompilatorer, editorer
etc och sedan användarnas egna program.
1.5. Vertikal mikroprogrammering; HP21MX
Minidatorn 21MX från Hewlett-Packard lanserades i mitten av 70-talet. Den exogena
arkitekturen var mycket vanlig för sin tid. Intressantare var att denna maskin var en av de få
som tillät dynamisk mikroprogrammering från användarnivå; leverantören tillochmed
uppmuntrade detta.
1.5.1.
Styrenheten
&c
Primärminnet. 16 bitars maskinord används genomgående. Adresser är i ursprungsutförandet
16 bitar, där en bit används för att indikera indirekt adressering, varför högst 32K kunde
adresseras. I senare versioner utökades den fysiska adressrymden till 1M ord via en MMU.
Enkelt minnesskdd i form av ett 'fence register' användes.
Aritmetisk/logisk enhet. De vanliga fixpunktsoperatioerna fanns. Flyttalsoperationer
implementeras i mikroprogram. A- och B- registren är (de primära) ackumulatorerna;
dataregistren.
In/utsystemet innehåller två oberoende DMA-kanaler och samverkar med avbrottssystemet.
Styrenheten är nästan fullständigt genomgående mikroprogrammerad. Vissa operationer
utförs visserligen direkt av maskinvaran, med de initieras alltid via mikroprogram.
Maskinen är byggd runt en 16 bitars systembuss; S-bussen. En T- och en i/o- buss ingår
dessutom.
IR är instruktionsregistret; 16 bitar. Mikroprogrammet för hämtfasen lagrar aktuell
instruktion i detta register genom att ladda minnesadressregistret MAR, eller M i HP:S
terminologi, från programräknaren P och initiera en läsoperation i primärminnet.
Minnesdata hamnar i minnesdataregistret MDR, eller T ('transfer') i HP:s terminologi.
Operationskoden används för att (indirekt, visas inte i figuren) ta fram adressen till
mikroprogrammet för aktuell instruktion. Efter det att en instruktion exekverats utförs en
returinstruktion i mikroprogrammet vars innebörd är att sätta mikroprogramräknaren i CSAR
till hämtfasens startadress 0. Mikroinstruktionerna läses ut från styrminnet till dataregistret
CSDR som avkodas för att generera styrsignaler till de grindar som i figuren illustreras med
pilar. (CS = 'control store' = mikroprogramminnet.)
Ett speciellt ROM som innehåller ett 'bootstrap' program exekveras då maskinen startas (från
frontpanelen).
Registerfilen innehåller 12 stycken 'scratch registers' S1 - S12 som mikroprogrammen kan
använda.
X och Y är indexregister som kan användas av aseemblerinstruktioner. Registret S är kopplat
direkt till maskinens frontpanel; kan användas som "i/o".
S-bussen och en 'latch' L föder ALU:n med data. Resultatet kan skiftas eller roteras
(artimetiskt eller logiskt i en 'shifter') innan det lagras i något register. Till ALU:n är
kopplat ett 'extend' (E) och ett 'overflow' (O) register, som fungerar på vanligt sätt.
11
Inledning
CIR, 'central interrupt register' levererar kanalnumret för avbrytande enhet.
Styrminnet, mikroprogramminnet, består ev en ROM-del där mikrokoden för hämt- avbrottsoch utförandefaserna för de av arkitekturen definierade maskininstruktionerna återfinns.
Resterade del kan installeras som ROM eller som skrivbart minne (WCS, 'writable control
store') för användarens egna mikrogrogram. WCS kan ändras dynamiskt under
programkontroll.
Registret SR används för att lagra återhoppsadressen vid subrutinhopp i mikroprogram; en
nivås subprogram är möjliga med denna mekanism.
1.5.2.
Mikroprogrammering
Mikroinstruktionerna är av en av fyra olika typer. Store-fältet anger var data ska lagras från
någon av bussarna. S-buss fältet anger varifrån data ska hämtas till S-bussen.
Maskinen är som synes verikalt mikroprogrammerad med kort ordlängd (24 bitar) och
höggradigt kodade format på mikroinstruktionerna.
Figur 1.4 visar "mikroarkitekturen" i form av en för våra ändamål lämplig abtraktionsnivå.
Här kommer några exempel på mikroprogram i mikroassemblerform. De är lite förenklade.
Hämtfasen
0
1
2
read
read
inc
jtab
pnm
ir
m
p
t
adr
Instruktion vid adressen 0 innebär följande.
P-registrets värde för över till S-bussen, körs genom alu:n där det ökas med ett (inc) för att
återlagras i P och i M (pnm = P and M). Sist i denna instruktion initieras en läsning i
primärminnet; instruktionsläsning.
När läsningen är klar överförs (via rad 1) innehållet i T-registret via S-bussen till IR.
Sista instruktionen i hämtfasen innebär att adressdelen (adr) från instruktionen i IR-registret
överförs till minnesadressregistret M och en ny läsning startas; en läsning som avser
instruktionens operand. jtab innebär att operationskoden i IR avkodas och att
mikroprogramräknaren sätts till det värde som svarar mot operationens utförandefas, tex
LDA:s.
Kommentar. I det verkliga programmet sker också en test på huruvida det föreligger ett
avbrott. I så fall överförs kontrollen till den sk avbrottsfasen, som kontrollerar
avbrottsorsaken (kanalnumret för avbrytande enhet) och överför kontrollen till motsvarande
avbrottshanterare, som normalt finns som en del av operativsystemet, men som naturligtvis
alternativt kan mikroprogrammeras i denna maskin.
Utförandefas för LDA (load accumulator, A)
144
rtn
pass
a
t
Instruktionen innebär kort och gott att det värde som pekas ut av instruktionens adressdel
kopieras över till A-registret: Det värde som just påbörjades läsas i slutet av hämtfasen finns
nu tillgängligt i T-registret och kan utan modifikation (pass) överföras till A-registret via Sbussen. RTN betyder returhopp; eftersom ingen tidigare subrutinnivå i detta fall finns
registrerad innebär detta att mikroprogramräknare nollställs och kontrollen återförs till
hämtfasen (för nästa instruktion).
12
Inledning
Utförandefas för memory swap
sw
read
mpck
read
mpck
wrte
wrte
rtn
inc
pass
pass
inc
pass
pass
pass
inc
pass
m
s1
m
s2
tab
m
tab
a
m
tab
b
m
tab
s1
a
s2
Denna instruktion fanns inte i standardutförandet av maskinen. Den representerar alltså vad
man skulle kunna kalla ett mikroprogram på användarnivå. Programmet byter ut innehållet i
två minnesceller vars adresser finns i A- respektive B-registret. S1 och S2 används som
temorärer. Operationen mpck betyder att kontroll sker så att inte minnesskyddat område
ändras. wrte står naturligvis för en skrivoperation i minnet. tab överför innehållet i antingen
A, B eller T till S-bussen beroende på "styrbitarna" aaf (= 1 ger A) och baf (= 1 ger B).
Adressen för detta program definieras (via jtab) av vald operationskod.
Ett fjärde exempel påvisar hur villkorliga hopp kan användas.
Utförandefas för block move
bmv
jmp
read
loop
cndx
read
wrte
jmp
out
cndx
rtn
pass
tbz
inc
pass
inc
pass
inc
inc
pass
inc
inc
tbz
inc
s1
m
s2
m
s3
m
s2
t
b
s1
rjs
p
a
out
p
tab
b
tab
s2
s2
s3
b
s1
loop
p
Vid anrop antas A-registret innehålla negativa värdet av det antal ord som ska flyttas, register
B innehåller blockadresen varifrån ord ska flyttas och destinationsadressen anges/pekas ut av
det ord vars adress finns i P-registret (i ordet efter "anropande" maskininstruktion, alltså).
1.5.3.
Mikroprogrammerbarhet
Följande programvara finns för utveckling av egna mikroprogram.
- En assembler så att mikrokod kan skrivas på symboliskt format enligt ovan.
- En 'debug editor' för uttestning av mikroprogram.
- En operativsystemkompatibel 'driver' för att programmera WCS; mikrokod som är översatt
till binär form och lagrad i en 'array' i primärminnet överförs till WCS.
Det finns ett antal "lediga operationskoder" som svarar mot förutbestämda platser i 'control
store' för att användas på maskininstruktionsnivå. Tyvärr, eller naturligt nog, känner inte
den vanliga assemblern till dessa, så anrop till mikrokod måste ske via binärkodade
maskininstruktioner.
Mikroinstruktionstiden är (ungefär) hälften av minnets cykeltid; ett förhållande som gör att
mikroprogrammeraren måste ta hänsyn till 'timing', tex då data skrivs/läses till/från
primärminnet.
13
Inledning
15
0
0
I/O kort
DMA
Primärminne
ei,
mm
MDR (T)
CIR
P
M
s
k
y
d
d
32K
MAR (M)
4 st loader
ROMs
C
I/O
b
u
s
s
F
r
o
n
t
p
a
n
e
l
4'*256 bits
S-buss
IR
S1
S2
.
.
S12
X
Y
S
P
SR
12
0
CSAR
Klocka,
Öka med 1
Mikroprogram
minne
A
L
B
AAF
BAF
ALU
Statusbitar
CSDR
24*4K bitar
23
Shifter
0
Avkodare
Styrsignaler
T-buss
är en förkortning av
data
and
styrsignal
Mikroinstruktionsformat
Typ 1 = alu operationer från s-buss till register
Typ 3 = villkorliga hopp med div. specialare
23
1
2
3
4
Typ 2 = lagrar konstanter
Typ 4 = hopp/sub-hopp
0
op
imm. op
cond jmp
jmp
alu
s-bus
immediate operand
condition
F
operand
operand
store
store
special
special
special
modif
Mikroassemblerinstruktionsformat
1
2
3
4
label
label
label
label
op
IMM
JMP/JSB
JMP
special
special
CNDX
modif
alu
modif
condition
store
store
jmp sense
s-bus
operand
operand
operand
comments
comments
comments
comments
O
E
14
Inledning
Repetition
1. Varför studera OS ?
1. Möjliggöra modifiering
2. Viktigt för utvärdering
3. Allmänna begrepp
4. OS är ett eget område
(bland ca 10 inom CS)
2. Varför OS ?
1. Enklare att använda
2. Effektivare utnyttjande
3. Säkerhet
3. Abstraktioner
1. Processer
2. Segment
3. Filer
4. Kanaler
4. Användning
1. Systemanrop
(från program)
2. Kommandon
(från terminal)
5. Klasser
1.Filhantering
2. In- och utmatning
3. Processhantering
4. Minneshantering
och
5. Kommunikation
6. Tidshantering
7. Administration
6. Kravspecifikation
OS ska
1. Skapa, övervaka och ta bort processer
2. Tilldela och frånta objekt
3. Ge skydd och säkerhet
4. Ombesörja datautbyte
5. Ta hand aom avbrott och 'traps'
7. Avbrott vs 'traps'
Asynkront vs synkront
Avbrott:
a. Yttre enheter
b. 'Timer'
'Traps':
a. Instruktion (svc)
b. Fel
ENDA SÄTTEN ATT 'AKTIVERA' OS
tex via en sk
avbrottsvektor
8. Typer av OS
1. Realtid
a. hrt; processtyrning
b. srt; transaktionssystem
2. 'Job shop'
a. satsvis
b. interaktiva
Kan vara: centraliserade eller distribuerade
9. Historik
(1945 - )
1. Inga hjälpmedel
2. 'Assemblers', 'debuggers', 'drivers'
3. Högnivåspråk, bibliotek och länkning
4. Satsvis ('batch')
5. Kövis ('spooling')
6. Multiprogrammering
7. Tidsdelning och realtid
8. Flerprocessorsystem
9. Dätornät
10. Arbetsstationer (och PC)
11. Distribuerade system
12. Multimedia
10. Processer
1. Tillstånd
- Exekverande (E)
- Redo (R)
- Blockerade (B), fördröjda (F)
2. Övergångar
- R -> E; 'dispatch'
- E -> R, 'preempt'
- E -> B, 'suspend'
- B - > R, 'schedule'
11. OS-egenskaper
1. Parallellism
2. Automatisk resurshantering
3. Delning
4. Multiplexering
5. Långtidslagring
6. Kommunikation
7. Säkerhet
12. Viktig maskinvara
1. Avbrottsystem
2. 'Timer'
3. Minnesskydd
4. Privilegierade instruktioner
5. Nätverksfunktioner
13.
Mikroprogrammering