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ų, kurių 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ė atmintis
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
• ADxy. 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 programos 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., l – 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, tuo 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
000
001
002
298
299
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