Operacinės sistemos projektas

Reali mašina

Reali mašina – tai kompiuteris, kuriam kuriama operacinė sistema.

Realios mašinos schema

[pic]

Realios mašinos komponentės

Centrinis procesorius

Centrinio procesoriaus paskirtis – paeiliui skaityti komandas iš atminties

ir jas vykdyti. Procesorius gali dirbti dviem režimais: supervizoriaus ir

vartotojo. Supervizoriaus režime komandos betarpiškai interpretuojamos

aukšto lygio kalbos procesoriaus HLP, vartotojo režime HLP interpretuoja

„mikroprogramą“ supervizorinėje atmintyje tik skaitymui, kuri imituoja

virtualios mašinos procesorių ir prieina prie vartotojo atmintyje esančių

virtualios mašinos programų per puslapiavimo mechanizmą.

Centinio procesoriaus registrai:

• 1 baito loginis trigeris C,

• 2 baitų virtualios mašinos programos skaitiklis IC,

•• 4 baitų bendrojo naudojimo registras R,

• 4 baitų puslapių lentelės registras PTR,

• Procesoriaus darbo režimo požymis MODE,

• Programinių pertraukimų registras PI,

• Supervizorinių pertraukimų registras SI,

• Taimerio registras TI.

Atmintis

Atmintis skirstoma į supervizorinę ir vartotojo. Supervizorinė atmintis yra

skirta pačiai operacinei sistemai. Ten laikomi sisteminiai kintamieji,

sisteminiai procesai, resursai ir mikroprogramos. Supervizorinė atmintis

apibrėžiama tokio dydžio, kokio reikia MOS. Vartotojo atmintis yra skirta

vartotojo programų poreikiams, t.y. atmintyje laikomos virtualių mašinų

puslapių lentelės ir jų atmintis.

Vartotojo atmintis susideda iš 300 žodžių, kkurių ilgis 4 baitai, nuosekliai

adresuojamų nuo 000 iki 299. Atmintis suskirstyta į 30 blokų po 10 žodžių

(40 baitų).

Įvedimo ir išvedimo įrenginiai

Realios mašinos įvedimo įrenginys yra klaviatūra, o išvedimo – monitorius.

Išorinė atmintis

Išorinė atmintis realizuojama failu kietajame diske. Jame bus laikomos

vartotojo programos. Išorinę atmintį sudaro 1000 takelių, kiekviename

takelyje 10 blokų (0-9999) po 10 žodžių, kurių kiekvieno ilgis 4 baitai.

Kanalų įrenginys

Kanalų įrenginys skirtas darbui su atmintimis ir išvedimo, įvedimo

įrenginiais. Priklausomai nuo nustatytų registrų kanalų jis gali vykdyti

apsikeitimą duomenimis visomis kryptimis pavaizduotomis realios mašinos

modelio schemoje. Veiksmai su kanalų įrenginiu gali būti atliekami tik

supervizoriniame rėžime. Kanalų įrenginys turi komandą XCHG, tačiau neturi

procesoriaus kuris ją galėtu vykdyti. Todėl šis įrenginys nėra lygiagrečiai

su procesoriumi veikianti aparatūra.

Kanalų įrenginio registrai:

• SB – takelio, iš kurio kopijuosime numeris,

• DB – takelio, į kurį kopijuosime numeris,

• ST – objekto, iš kurio kopijuosime numeris,

1. Vartotojo atmintis

2. Supervizorinė atmintis

3. Išorinė atmintis

4. Įvedimo srautas

• DT – Objekto į kurį kopijuosime numeris

1. Vartotojo atmintis

2. Supervizorinė aatmintis

3. Išorinė atmintis

4. Išvedimo srautas

Puslapiavimo mechanizmas

Virtualios mašinos atmintis yra 10 blokų. Šie blokai vartotojo atmintyje

gali būti išdėstyti bet kokia tvarka, tai reikiamu momentu būtu sunku

nustatyti kur realioje atmintyje rasti virtualios mašinos atmintį. Šiai

problemai spręsti naudojamas puslapiavimo mechanizmas. Pradėjus darbą

virtualiai mašinai yra padaroma puslapių lentelė, kurioje nurodama kuris

realios atminties blokas atitinka virtualios atminties bloką. Puslapių

lentelei yra skiriamas vienas realios atminties blokas. Taigi pirmame

puslapių lentelės elemente esantis skaičius rodo kur realioje atmintyje yra

pirmas virtualios atminties blokas. Taip puslapiavimo mechanizmas

naudodamasis PTR registro reikšme išsprendžia šią problemą (susieja

virtualią atmintį su realia).

Pertraukimu mechanizmas

Pertraukimas – tai signalas apie įvykusį įvykį. Sistema turi jį aptikti ir

atitinkamai sureaguoti. Kiekvienas pertraukimas turi savo identifikaciją

(sistema turi turėti galimybę atskirti pertraukimų tipus). Galima sakyti,

kad pertraukimas, tai pakeista kompiuterio būsena. Pertraukimus aptinka

procesoriaus komanda test, kuri apklausia reikalingus registrus. Ir tik

sistemai aptikus pertraukimą, yra nutraukiamas vartotojo programos

vykdymas. Tai atliekama pasinaudojant pertraukimų vektorių lentele (kur yra

nuorodos į pertraukimus apdorojančias programas). Valdymas yra perduodamas

pertraukimą apdorosiančiai programai, kuri dažniausiai yra atmintyje su

požymiu “tik skaitymui”. Įvykdžiusi savo darbą, pertraukimo apdorojimo

programa valdymą gražina operacinei sistemai pertraukimo vietoje. Ką daryti

toliau, sprendžia OS.

OPERACINĖS SISTEMOS PROJEKTAS

Bendrosios sąvokos

Skiriami du procesų prioritetai – vartotojiški ir sisteminiai. Aptarnaujant

pirmenybė skiriama sisteminiams procesams.

Užduotys į sistemą patenka „iš išorės“, t.y. vartotojo aplinkai tiesiogiai

sukuriant resursą „Užduotis supervizorinėje atmintyje“.

Įvedimas/išvedimas atliekamas taip pat tiesiogiai per vartotojo aplinką,

neimituojant klaviatūros/monitorių portų, buferių ir kt. aparatūrinių

dalykų. Išorinė atmintis realizuojama failu išorėje. Laikoma, jog išorinės

atminties dydis yra fiksuotas ir iš anksto žinomas.

Virtualios mašinos instrukcijos

• LRxy. Atminties ląstelės kurios adresas yra 10 * [10*(10 * a2 + a3 )+ x

] + y kopijavimas į registrą R.

• SRxy. Registro R reikšmė įrašoma į atminties ląstelę kurios adresas yra

10 * [10*(10 * a2 + a3 )+ x ] + y

• AADxy. Prie registro R reikšmės pridedama reikšmė esanti atminties

ląstelėje kurios adresas 10 * [10*(10 * a2 + a3 )+ x ] + y

• CRxy. Jei registro R reikšmė lygi atminties ląstelės kurios adresas 10 *

[10*(10 * a2 + a3 )+ x ] + y tada registrui C priskiriama reikšmė „True“,

kitu atveju priskiriama reikšmė „False“

• BTxy. Jei registro C reikšmė yra „True“ tai registrui IC priskiriama

reikšmė 10 * [10*(10 * a2 + a3 )+ x ] + y

• GDxy. Iš išvedimo lauko nuskaito 10 žodžių ir įrašo į atminties bloką

kurio adresas yra [(10 * a2 + a3 ) + x]..

• PDxy. Išvedimui išsiunčia informaciją (10 žodžių) esančią atminties

bloke, kurio adresas yra [(10 * a2 + a3 ) + x].

• PFxy. Išorinėje atmintyje išsaugoma informacija (10 žodžių) esanti

atminties bloke, kurio adresas yra [(10 * a2 + a3 ) + x]. Informacija

atmintyje yra išsaugojama bloke, kurio adresas yra nurodomas registre R

• GFxy. Nuskaitoma informacija (10 žodžių) iš išorinės atminties ir

patalpinama į atminties bloką kurio adresas yra [(10 * a2 + a3 ) + x].

Informacija nuskaitoma iš išorinės atminties bloko, kurio adresas

nurodomas registre R

• HALT. Vartotojo pprogramos vykdymo pabaiga.

Operacinės sistemos procesai

[pic]

Procesas „StartStop“

Procesas „ReadFromInterface“

[pic]

Procesas „JCL“

[pic]

Procesas „JobToSwap“

[pic]

Procesas „MainProc“

[pic]

Procesas „Loader“

Procesas „VM“

Procesas „Interrupt“

[pic]

PRIMITYVAI

Procesų primityvų paskirtis – pateikti vienodą ir paprastą vartotojo sąsają

darbui su procesais. Branduolio primityvai įvykdomi iššaukiančio proceso

aplinkoje nesukuriant naujo proceso. Kiekvieno primityvo programos gale yra

kviečiamas planuotojas.

Primityvas kurti procesą. Šiam primityvui perduodama nuoroda į jo tėą, jo

pradinė būseną, prioritetas, perduodamų elementų sąrašas ir išorinins

vardas. Pačio primityvo viduje vyksta proceso kuriamasis darbas. Jis yra

registruojamas bendrame procesų sąraše, tėvo – sūnų sąraše, skaičiuojamas

vidinis identifikacijos numeris, sukuriamas jo vaikų procesų sąrašas

(tuščias), sukurtų resursų sąrašas ir t.t.

Primityvas naikinti procesą. Pradedama naikinti proceso sukurtus resursus

ir vaikus. Vėliau jis išmetamas iš tėvo sukurtų procesų sąrašo. Toliau

išmetamas iš bendro procesų sąrašo ir, jei reikia, iš pasiruošusių procesų

sąrašo. Galiausiai naikinami visi jam perduoti resursai ir proceso

deskriptorius yra sunaikinamas.

Primityvas stabdyti procesą. Keičiama proceso būsena iš blokuotos į

blokuotą sustabdytą arba iš pasiruošusios į pasiruošusią sustabdytą.

Einamasis procesas stabdomas tamap pasiruošusiu sustabdytu.

Primityvas aktyvuoti procesą. Keičiama proceso būsena iš blokuotos

sustabdytos į blokuotą, ar pasiruošusios sustabdytos į pasiruošusios.

Primityvas keisti proceso prioritetą. Pakeičiamas proceso prioritetas

(sumažinamas arba padidinamas).

Primityvas kurti resursą. Resursus kuria tik procesas. Resurso kūrimo metu

perduodami kaip parametrai: nuoroda į proceso kūrėją, resurso išorinis

vardas. Resursas kūrimo metu yra: pridedamas prie bendro resursų sąrašo,

pridedamas prie tėvo sukurtų resursų sąrašo, jam priskirimas unikalus

vidinis vardas, sukuriamas

resurso elementų sąrašas ir sukuriamas

laukiančių procesų sąrašas.

Primityvas naikinti resursą. Resurso deskriptorius išmetamas iš jo tėvo

sukurtų resursų sąrašo, naikinamas jo elementų sąrašas, atblokuojami

procesai, laukiantys šio resurso, išmetamas iš bendro resursų sąrašo, ir ,

galiausisai naikinamas pats deskriptorius.

Primityvas prašyti resurso. Šį primityvą kartu su primityvu atlaisvinti

resursą procesai naudoja labai dažnai. Procesas, iškvietęs šį primityvą,

yra užblokuojamas ir įtraukiamas į to resurso laukiančių procesų sąrašą.

Sekantis šio primityvo žingsnis yra kviesti resurso paskirstytoją.

Primityvas atlaisvinti resursą. Šį primityvą kviečia procesas, kuris nori

atlaisvinti jam nereikalnigą resursą arba tiesiog perduoti pranešimą ar

informaciją kitam procesui. Resurso elementas, primityvui perduotas kaip

funkcijos parametras, yra pridedamas prie resurso elementų sąrašo. Šio

primityvo pabaigoje yra kviečiamas resursų paskirstytojas.

DESKRIPTORIAI

Proceso deskriptorius. Proceso valdymo blokas, dar vadinamas

deskriptoriumi, yra fiksuoto formato duomenų struktūra, sauganti

informaciją apie proceso einamąjį stovį. Remiantis informacija proceso

deskriptoriuje, korektiškai pratęsiamas blokuoto proceso vykdymas,

procesams skirstomas centrinio procesoriaus laikas ir kiti resursai.

Proceso sukūrimas – atitinkamos deskriptorinės struktūros užpildymas.

Kiekvienas procesas turi unikalų vardą (vidinis vardas). Proc.

deskriptoriai laikomi masyve, kuriame vidinis vardas (i)– indeksas. Proceso

deskriptorius: 1. Proceso išorinis vardas ID[i]. 2. Mašina (proceso

disponuojąmų resursų sąrašas): 2.1. Procesoriaus būsena ir teisės PBA[i];

2.2. Proceso turimas procesorius P[i]; 2.3. Operatyvi atmintis OAR[i]

(nuoroda į sąrašo pradžią); 2.4. Kiti resursai R[i]; 2.5. Sukurtų resursų

sąrašas SR[i]; 3. Informacija apie proceso būseną: 3.1. i – tojo proceso

statusas; 3.2. nuoroda į sąrašą, kuriame yra procesas; 4. Proceso sąryšis

su kitais procesais: 4.1. T[i] – tėvinis procesas; 4.2. S[i] – sūnų

sąrašas; 5. Proceso prioritetas PR[i].

Resurso deskriptorius. Resurso valdymo blokas, dar vadinamas

deskriptoriumi, yra fiksuoto formato duomenų struktūra, sauganti

informaciją apie resurso einamąjį stovį. Resurso deskriptoriuje nurodomas

jo užimtumo laipsnis, laisvas kiekis ir kt. – šia informacija naudojasi

duotojo resurso paskirstytojas. Resurso sukūrimas – atitinkamos

deskriptorinės struktūros užpildymas. Kiekvienas resursas turi unikalų

vardą (vidinis vardas). Proc. deskriptoriai laikomi masyve, kuriame vidinis

vardas (r)– indeksas. Resurso deskriptorius: 1. Identifikacija: 1.1.

Resurso išorinis vardas RID[r]; 1.2. Požymis ar resursas yra pakartotinio

naudojimo resursas PNR[r]; 1.3. Resursą sukurusio proceso vidinis vardas

K[r]; 2. Resurso prieinamumo aprašymas PA[r]; 3. Resurso laukiančiųjų

procesų sąrašas LPS[r]; 4. Resurso paskirstytojo adresas PLAN[r].

PLAN[r,sk,l), kur sk – aptarnautų procesų sk., ll – aptarnautų proc. vidinių

vardų masyvas. Procesoriaus resurso deskriptorius (vienintelis): 1. np –

procesorių skaičius; 2. PROC[k], k=1,..,np, – procesoriaus vykdomas

procesas.

PLANUOTOJAS

Procesų planuotojas. Tai algoritmas, kuris skirsto procesams procesorių.

Procesai patys negali pasiimti procesoriaus, nes toks modelis būtų labai

neefektyvus. Planuotojo naudojamas siekiant tokių tikslų: 1. Užtikrinti,

kad kiekvienas procesas pagrįstą laiko tarpą (nei daug, nei per mažai)

turėtų procesorių. 2. Laikyti procesorių užimtą netoli 100%. 3. Sumažinti

iki minimumo atsakymo laiką vartotojams; 4. Maksimizuoti darbų skaičių

nuveiktą per valandą. Procesoriaus skirstymas remiasi prioritetais – kuo

proceso prioritetas didesnis, ttuo greičiau jis gaus procesorių. Sisteminių

procesų prioritetas yra didesnis už vartotojiškų tam, kad sistema dirbtų

efektyviai. Nelogiškai paskirsčius prioritetus, sistemos darbas gali tapti

nestabilus, ar net neįmanomas.

———————–

Aukšto lygio kalbos procesorius

HLP

MODE

PI

SI

TI

PTR

R

IC

C

Centrinis procesorius

Puslapiavimo mechanizmas

Kanalų įrenginys

Įvedimo įrenginys

Išvedimo įrenginys

Išorinė atmintis

Vartotojo atmintis

Supervizorinė atmintis

StartStop

ReadFromInterface

JCL

JobToSwap

MainProc

Loader

Interrupt

JobGovernor

VM

JobGovernor

JobGovernor

VM

VM

Stop

Start

Sisteminių resursų naikinimas

Sisteminių procesų naikinimas

Blokavimasis laukiant „MOS pabaiga“ resurso

Sisteminių procesų inicializacija

Sisteminių resursų inicializacija

Atlaisvinamas resursas „Užduotis supervizorinėje atmintyje“.Skirtas

procesui JCL

Blokų kopijavimas į supervizorinę atmintį

Blokavimasis laukiant supervizoriaus atminties resurso

Failo nuskaitymas ir suskaidymas blokais

Blokavimasis laukiant „Iš vartotojo sąsajos“ resurso

Blokavimasis laukiant resurso “Užduotis supervizorinėje atmintyje“

Programos sąrašo inicijavimas

Imamas blokas iš supervizorinės atminties

Ar tai $AMJ blokas?

Atlaisvinti “Eilutė atmintyje“ resursą su pranešimu apie $AMJ bloko trūkumą

VM programoje ir atminties tipu “Supervizorinė”

Ne

Ar $AMJ blokas korektiškas?

Taip

Atlaisvinti „Eilutė atmintyje“ resursą su pranešimu apie $AMJ bloko

nekorektiškumą VM programoje ir atminties tipu “Supervizorinė”

Ne

Atlaisvinamas resursas „Užduoties vykdymo parametrai supervizorinėje

atmintyje“

Imamas blokas iš supervizorinės atminties

Ar $END blokas arba nėra blokų?

Prijungiamas blokas prie programos sąrašo

Taip

Taip

Ne

Ar tai $END blokas

?

Atlaisvinti „Užduoties programa supervizorinėje atmintyje“ resursas

Ne

Taip

Ar programos sąrašas tuščias?

?

Ne

Taip

Atlaisvinti „Eilutė atmintyje“ resursą su pranešimu apie programos nebuvimą

VM programoje ir atminties tipu „Supervizorinė“

Atlaisvinti „Eilutė atmintyje“ resursą su pranešimu apie $END bloko

nebuvimą VM programoje ir atminties tipu “Supervizorinė

Blokavimasis laukiant “Užduoties vykdymo parametrai supervizorinėje

atmintyje” resurso

Blokavimas laukiant „Užduoties vykdymo parametrai supervizorinėje

atmintyje” resurso

Blokavimas laukiant „Išorinė atmintis“ resurso

Blokavimasis laukiant „Kanalų įrenginio“ resurso

Nustatinėjami kanalų įrenginio registrai ir įvykdoma XCHG

Atlaisvinamas „Kanalo įrenginys“ resursas

Atlaisvinamas „Užduotis būgne“ resursas

Blokavimasis laukiant „Užduoties būgne“ resurso

Vykdymo laikas

0?

Ne

Taip

Kuriamas procesas JobGovernor, suteikiant jam „Užduotis būgne“ kaip pradinį

resursą

Naikinamas procesas JobGovernor, sukūręs gautajį resursą

Atlaisvinamas „Iš loader“ resursas, skirtas JobGovernor procesui,

sukūrusiam gautąjį „Pakrovimo paketo“ resursą

Atlaisvinamas „Kanalo įrenginys“ resursas

Nustatinėjami kanalų įrenginio registrai ir įvykdoma komanda XCHG

Blokavimasis laukiant “Kanalų įrenginio“ resurso

Blokavimasis laukiant „Pakrovimo paketo“ resurso

JobGovernor, atsakingo už pertrauktosios VM darbą, nustatymas

Atlaisvinamas „Iš Interrupt“ resursas skirtas konkrečiam JobGovernor

Atlaisvinamas „Pertaukimas“ resursas

Vykdoma vartotojo programa

Procesorius perjungiamas į vartotojo režimą

Pertraukimo tipo indentifikavimas

Blokavimasis laukiant „Pertraukimas“ resurso