Professional Documents
Culture Documents
Os Kolis
Os Kolis
Os Kolis
1. Įžanga
OS koncepcija
Viena iš pagrindinių OS funkcijų yra efektyvus kompiuterio techninės įrangos valdymas. OS siekia užtikrinti,
kad kuo racionaliau būtų naudojami kompiuterio įtaisai: procesoriai, atmintinė, diskai, klaviatūra,
spausdintuvai ir kt. OS atlieka tarpininko vaidmenį tarp taikomųjų programų ir techninės įrangos.
Einant žemyn:
Atsiradus kreipiniui į kuriuos nors duomenis, esančius žemesnėje struktūroje, visas duomenų blokas įkeliamas
į aukštesnę struktūrą ir taip užtikrinama, kad kreipinių į žemesnįjį lygį dažnis būtų gerokai mažesnis nei
kreipinių dažnis lygiu aukščiau (1.7 pav.).
1. Adresų linijos
2. Duomenų linijos
3. Valdymo linijos
Dar kompiuteriuose naudojami įtaisų valdikliai (garso plokštė). Šie valdikliai turi procesorių ir savos atminties.
Naudoja pertraukčių mechanizmą. Atmintinės valdiklis reguliuoja prieigas prie atminties įtaisų.
Procesoriaus registrai
Registrai naudojami paspartinti procesoriaus veikimą, sumažinant kreipinių į pagrindinę atmintinę.
Sąlygų kodai (vėliavėlės – flags) – tai seka bitų, kuriuos procesorius įjungia arba išjungia priklausomai nuo
operacijos vykdymo rezultatų.
Bazinis programos vykdymo ciklas
Išrenkant komandą naudojamas PC registras. Procesorius naudodamas PC turinį išrenka komandą iš pagr.
atmintinės ir nustato sekančios komandos adresą PC registre. Išrinkta komanda įkeliama į IR registrą.
Komandų tipai:
Pertraukčių tipai:
• Programinės pertrauktys
Generuojamos komandos vykdymo metu, kai susidaro tam tikros situacijos: aritmetinis perpildymas,
dalyba iš nulio, bandymas atlikti nekorektišką komandą ar kreiptis į atmintinės sritį, į kurią vartotojui
yra uždrausta.
• Aparatinės pertrauktys
1. Laikrodžio mechanizmo pertrauktys
2. I/O pertrauktys (pelytės paspaudimas, baigus spausdintuvui nurodytą komandą)
3. Susidarius avarinėms situacijoms(nukritus įtampai tinkle)
Jei vykdomą programą galima pertraukti, tai kiekvieną kartą įvykdęs komandą procesorius tikrina, ar nėra
pertraukčių signalų. Atsiradus procesorius pristabdo vykdomosios programos darbą ir kreipiasi į pertraukčių
doroklę.
Procesoriaus darbas tampa efektyvesnis, nes jis nelaukia I/O veiksmų pabaigos, jam tai praneša pertrauktys
ir jas tada procesorius apdoroja. Tai leidžia jam vykdyti daugiau programų, nes nereikia laukti.
Prieš apdorojant pertrauktį registrų turiniai yra išsaugomi. Tada i PC įrašomas doroklės adresas. Tada
procesorius pereina prie komandos išrinkimo ciklo, ir valdymas perduodamas doroklei, nes PC įrašytas
doroklės adresas. Baigus apdoroti pertrauktį, iš dėklo informacija įkeliama atgal į registrus.
Apdorojant pertrauktį gali atsirasti kitų pertraukčių signalų, tuomet yra įvertinami pertraukčių prioritetai ir
nusprendžiama ar apdoroti naują pertrauktį ar tęsti esamą.
2. OS apžvalga
OS paskirtis ir funkcijos
OS apibūdinama kaip programa, kuri kontroliuoja taikomųjų bei sisteminių programų vykdymą ir veikia kaip
taikomųjų programų ir techninės įrangos sąsaja. OS perduoda komandas procesoriui, kuris jas vykdo.
OS veikimo charakteristikos:
OS atliekamos funkcijos:
OS tobulinimo poreikiai
1. Reakcija į techninės įrangos pasikeitimus – jos elementų patobulinimus ir sukuriamus naujus
komponentus.
2. Naujų paslaugų užtikrinimas.
3. Klaidų atradimas;
4. Vartotojų bei sisteminių administratorių poreikių tenkinimas;
5. Reguliarių OS pakeitimų ir atnaujinimo būtinybė.
OS evoliucija
Nuoseklus duomenų apdorojimas
OS nebuvo, buvo įvedama visa programa naudojant perfojuostas ar perfokortas, PC nustatomas ties
pirma komanda ir pradedama vykdyti.
Pagrindiniai du trūkumai:
Tarkim, kad atminties pakanka dviem vartotojo programoms. Tokiu atveju kai viena užduotis lauks I/O
pabaigos, procesorius galės persijungti vykdyti kitą užduotį, kuriai tuo metu nereikia atlikti I/O veiksmų. Tai
padidina procesoriaus naudojimo koeficientą.
Procesorius programas vykdo pseudolygiagrečiai, persijungdamas nuo vienos prie kitos. Toks darbo režimas
vadinamas daugiaprograminiu (multiprogramming).
Paketinio apdorojimo sistemų vartotojas negali tiesiogiai bendrauti su kompiuteriu: įvedinėti duomenų,
matyti gaunamų rezultatų.
Laiko paskirstymo sistemos veikia interaktyviai. Prie kompiuterių sistemos prijungiama daug terminalų, kurie
leidžia vartotojui vienu metu dirbti su sistema.
Pagrindinis šių sistemų sukūrimo tikslas – patenkinti visų dirbančių vartotojų poreikius vienu metu. Šis
metodas buvo naudojamas esant daug vartotojų ir buvo pridedamas laikrodžio mechanizmas.
Jei vienu metu reikia aptarnauti n vartotojų, kiekvienam iš jų skiriama 1/n dalis kompiuterio greičio.
Atsiradus pertraukčiai šiose sistemose, valdymas būdavo perduodamas operacinei sistemai ir procesorių
buvo galima perduoti kitam vartotojui. Jei norima vykdyti programa netilpdavo pagrindinėje atmintinėje, tai
kažkuri programa būdavo iškeliama į diską.
Pirmosios OS valdė tik vietiniu išteklius, o šiuolaikinės OS turi valdyti ir tinklo išteklius.
Vis rečiau naudojamas centrinis kompiuteris, vis dažniau jaučiamas poslinkis paskirstytųjų skaičiavimų
kryptimi, kai daug nepriklausomų kompiuterių vykdo bendrą užduotį komunikuodami per tinklą
Atsirado daugiaprocesorės sistemos, kuriose skaičiavimai gali būti vykdomi lygiagrečiai. Lygiagrečiai gali būti
vykdomas ir programos kodas, jį suskaidžius į gijas.
Pirmosios paskirstytosios OS buvo projektuojamos kaip tinklinės failų sistemos. Tolesnis paskirstytųjų OS
raidos etapas buvo susijęs su kliento – serverio tipo architektūra. Tai tinklo architektūra, kai kiekvienas tinklo
kompiuteris yra arba klientas, arba serveris. Duomenų perdavimas vyksta naudojantis OS branduoliu
Pradėjo sklisti laisvai platinama bei atvirojo kodo programinė įranga („Linux“ – os, „ApacheWeb“ – severis).
Daug dėmesio skiriama tarpinės programinės įrangos vystymui, kuri įsiterpia tarp OS ir taikomųjų programų.
Tokia įranga leidžia kontaktuoti nutolusiems procesams per tinklą (web).
Web paslaugomis naudojamasi dėl to, kad jos gali būti plačiai ir lengvai pritaikomos nepriklausomai nuo
naudojamos platformos, programavimo kalbos ar sistemos. Web paslauga yra neatsiejama SOA (service
oriented architecture) į paslaugas orientuotos architektūros dalis. SOA leidžia pakartotinai naudoti
programinę įrangą ir yra sukurta pakartotinių paslaugų pagrindu. SOA leidžia lengvai kurti bendraujančias
programas, kurios gali būti įrašytos skirtingose vietose, per tinklą.
Europoje, JAV ir Azijoje plėtojama paskirstytojo skaičiavimo sistema vadinama tinklu (grid). „Grid“ – tai
paskirstytieji skaičiavimai perkelti į aukštesnį evoliucijos lygmenį. Palengvina keitimąsi skaičiavimais ir
duomenimis. Lygiagrečiųjų ir paskirstytųjų skaičiavimų tinklai – tai nauja informacinių technologijų evoliucijos
pakopa. Sujungiami tarpusavyje geografiškai nutolę kompiuterių ištekliai į vieną virtualų superkompiuterį.
Specializuotų OS plėtra. Viena iš jų rūšių – įterptoji skaičiavimo sistema. Tai specializuota elektroninė ir
programinė įranga. Valdomi įvairūs mechanizmai – automobiliai, lėktuvai, telefonai, skalbyklės ir t.t.
Įterptosioms sistemoms būdinga:
Dauguma įterptinių sistemų veikia pagal realaus laiko sistemoms keliamus reikalavimus, kai ypač daug
dėmesio skiriama užduoties įvykdymo trukmei.
Realaus laiko sistemos. Svarbiausias faktorius yra užklausos apdorojimas iki tam tikro kritinio momento.
Tobulėjant techninei įrangai, OS įgauna naujų charakteristikų:
Klasteris – tai sistema, sudaryta iš dviejų ar daugiau kompiuterių ar kompiuterių sistemų, kurios sujungtos į
junginį, vykdo programą. Klasterio paskirtis – padidinti patikimumą ir paskirstyti apkrovą padidinant našumą.
Klasteriai gali būti sudaryti tiek iš skirtingų, tiek iš vienodų kompiuterių.
Labai patikimi klasteriai taikomi tada, kai reikia užtikrinti nenutrūkstamą paslaugų ar išteklių prieinamumą.
Jei vienas mazgas sugenda, jo vykdytos programos perduodamos kitam mazgui.
Apkrovą išlyginantys klasteriai paskirsto ateinantį užklausų srautą daugeliui mazgų, kurie vykdo tą pačią
programą. Jei mazgas sugenda, tai užklausos yra perskirstomos tarp likusių mazgų. Taip veikia web.
Paskirstytojo ar lygiagrečiojo skaičiavimo klasteriai gali pagerinti tiek pasiekiamumą, tiek funkcionavimo
charakteristikas, ypač kai to reikalauja didelės apimties skaičiuojamosios užduotys. Dideli skačiavimai
išdalinami atskiriems mazgams.
OS komponentai
Procesų valdymas
Programa yra pasyvus elementas, procesas - tai vykdoma programa. Procesą apima programinis kodas,
duomenys, procesoriaus registrų turiniai, procesui priskirti kompiuterio ištekliai.
1. Procesams sinchronizuoti
2. Procesų tarpusavio ryšiams užtikrinti
3. Mirties taško situacijai išvengti arba susidariusiam mirties taškui apdoroti
Pagrindinė atmintinė – tai atmintinė su greita prieiga prie duomenų, kuriais naudojasi procesai ir I/O įtaisai.
OS turi sekti, kad nė vienas procesas negalėtų keisti atminties srities, priskirtos kitam procesui.
1. Ji stebi, kurios pagrindinės atmintinės sritys yra užimtos ir kas jas užima
2. Sprendžia, kurį procesą įkelti į atmintinė, kai ši tampa prieinama.
3. Skiria atmintinės sritį procesams arba atima ją iš proceso, iškilus reikalui
OS siekia optimaliai išrinkti informaciją, kad kompiuterinė sistema veiktų kiek įmanoma greičiau.
Procesų vykdymas dažnai susijęs su įvairiais įvesties ir išvesties veiksmais: duomenys įvedami iš klaviatūros
ar failo, skaičiavimų rezultatai įrašomi į diską, išvedami į vaizduoklio ekraną ar spausdinami.
Procesai naudojami read, write, open, close, lock, unlock gali manipuliuoti I/O įtaisais.
1. Įtaisai
2. Buferiai
3. Spartinančioji atmintinė
4. Tvarkyklės (jai žinomi specifiniai įtaiso savitumai)
Failų valdymas
OS formuoja vienodą loginį požiūrį į informacijos saugojimą įvairiuose įtaisuose. Naudoja loginį saugojimo
vienetą – failą. Tai patogi ir plačiai vartojama duomenų struktūra, prie kurių priėjimą ir kurių apsaugą vykdo
OS. Failai gali būti laisvos struktūros (txt) arba griežtos struktūros.
Failų sistema paprastai yra sudaryta iš aplankų. OS kontroliuoja kam ir kokiais tikslais leidžiama kreiptis į failą.
Apsaugos sistema
Procesai gali skirtis tik į jam priskirtą atminties sritį, tai kontroliuoja OS. Jei procesas reikalauja kitam
procesui priskirtos atminties, OS nusprendžia, ar leisti, ar ne.
Mode switch yra dar vienas mechanizmas, kuris įgalina OS atlikti privilegijuotas komandas, kurios vartotojui
neprieinamos.
Darbas tinkle
Paskirstytąją sistemą sudaro rinkinys procesorių, kurie turi savą vietinę atmintinę ir tarpusavyje komunikuoja
įvairiomis ryšio linijomis.
Darbas tinkle leidžia skirtingiems kompiuteriams komunikuoti ir veikti kaip didžiulei virtualiai sistemai. Pačios
komunikacijos tinkle vyksta pagal tam tikrus protokolus.
Komandų interpretavimas
Sisteminė programa, įeinanti į OS sudėtį. Kai kuriose yra įtraukiamas į branduolį, kai kuriose tai speciali
programa (dažnesnis variantas), kuri veikia paleidus užduotį ar prisijungus vartotojui. Komandų
interpretatorius priima ir interpretuoja, analizuoja ir vykdo reikiamus veiksmus pagal vartotojo pateikiamas
komandas.
OS paslaugos
Pagrindinės paslaugas, kurias turi daugelis OS:
Programų kūrimas.
OS teikia paslaugas ir instrumentus, skirtus programų kūrimui (tekstų redaktorius, kompiliatorius). Paprastai
šios paslaugos neįeina į OS branduolio sudėtį.
Programų vykdymas.
OS pasirūpina sėkmingu programos įkėlimu į pagr. atmintinę ir vykdymu, taip pat (jei reikia) I/O veiksmų ir
veiksmų su failais inicijavimu, išteklių valdymu.
I/O veiksmai.
OS valdo I/O veiksmų atlikimą tiek su I/O įtaisais, tiek su failais, gali reikėti specifinių su tuo įtaisu susijusių
veiksmu.
OS sudaro sąlygas atlikti įvairius veiksmus su failais ir failų aplankais: kurti, naikinti, atidaryti, rašyti į failą ir
kt.
Vykdydama I/O veiksmus, OS turi užtikrinti prieigą prie failų, įvertinti I/O specifiką ir failų formatus.
Komunikacijos
Procesų vykdymo metu gali susidaryti situacijų, kai procesams reikia pasikeisti tam tikra informacija
tarpusavyje. Tokios komunikacijos gali vykti tarp procesų esančių net skirtinguose kompiuteriuose.
Komunikacijos gali vykti per bendrai naudojamą atminties sritį arba keičiantis tarpusavyje pranešimais, arba
naudojant kitą komunikavimo priemonę.
Klaidų aptikimas
Dirbant kompiuterių sistemai, galimos įvairios klaidos. Jos gali būti išorinės ir vidinės. Pavyzdžiui, įtaisų
techniniai sutrikimai, aritmetinis perpildymas, bandymas kreiptis į atminties ląstelę, į kurią kreiptis uždrausta,
arba negalėjimas įvykdyti taikomosios programos užklausos.
OS turi atlikti veiksmus, kurie iki minimumo sumažintų klaidos poveikį taikomosios programos vykdymui.
OS reakciją į klaidą gali būti įvairi – nuo paprasto pranešimo iki programos sustabdymo.
Papildomos funkcijos
Papildomos OS funkcijos skirtos efektyviam pačios kompiuterių sistemos veikimui užtikrinti. Viena iš tokių
funkcijų yra susijusi su sistemos išteklių skirstymu.
Išteklių priskyrimas
OS rūpinasi ir valdo visus sistemos išteklius. Kai sistemoje daug vartotojų, daug užduočių, OS turi paskirstyti
teisingai išteklius. Tam ji naudoja įvairius algoritmus, kurie leidžia: planuoti, kaip panaudoti procesorių,
skirstyti pagrindinę atmintinę, vykdyti I/O veiksmus su išoriniais įtaisais.
Apskaita
OS teikia apskaitos paslaugas. Apskaita parodo, kaip vartotojai naudoja kompiuterinės sistemos išteklius.
Apsauga
Šio tipo paslaugos užtikrina, kad prieiga prie įvairios kompiuterių sistemoje saugomos informacijos, prie
įvairių sistemos išteklių būtų kontroliuojama, kad vienu metu vykdomos programos netrukdytų viena kitai.
Pvz. bet kokiai komunikacijai tarp procesų, I/O veiksmams su įtaisais reikia naudoti sisteminius kvietinius.
Atlikdama vartotojo procese užprašyto sisteminio kvietinio veiksmus, OS persijungia i branduolio režimą, kad
galėtų vykdyti privilegijuotas komandas.
Sisteminiai kvietiniai yra diegiami naudojami pertraukčių mechanizmą: aptikus sisteminį kvietinį vykdoma
pertrauktis.
Kiekvienas sisteminis kvietinys turi savo numerį. Sisteminių kvietinių sąsaja saugo lentelę, indeksuotą šiais
numeriais. Toje lentelėje prie kiekvieno numerio nurodytas apdorojimo funkcijos adresas. Pagal numerį
iškviečiama funkcija, įeinanti į OS branduolio sudėtį.
Sisteminiai kvietiniai dažniausiai kviečiami per taikomųjų programų sąsają API (Application Program
Interface). API turi bibliotekines funkcijas, per kurias iškviečiami sisteminiai kvietiniai.
• Win32 API
• POSIX API
• Java API
Sisteminio kvietinio parametrai gali būti perduodami trimis būdais:
1. parametrus įkeliant į registrus ir taip perduodant (riboja perduodamų parametrų skaičių registrų
kiekis)
2. išsaugoti juos atmintinėje tam tikrame bloke ar lentelėje ir šio bloko adresą perduoti kaip
parametrą į registrą
3. parametrus sudėti į programos dėklą, iš kurio juos gali išimti OS.
Sisteminės programos – tai programos, kurios OS suteikia funkcionalumo. Sisteminės programos teikia
vartotojams priemones (redaktoriai, kompiliatoriai, asembleriai, programų įkėlyklės, derintuvės, disko info
tiekimo programos). Kai kurios sukuria sąsają su sisteminiu kvietiniu, kitos yra sudėtingesnės.
3. OS architektūros
Projektuojant OS, reikia atsižvelgti į tuos tikslus, kuriuos naujai operacinei sistemai kelia vartotojai ir pats
projektavimas.
Monolitinio branduolio OS sudaro procedūros ir funkcijos, kurios nėra realizuojamos atskirais moduliais, tai
tiesiog didelės programos sudėtinės dalys. Visa OS dirba branduolio režimu, visos procedūros gali kviesti
viena kitą. Vartotojo programos veikia vartotojo režimu.
Pliusai:
▪ Efektyvi, nes viskas yra prieinama
Minusai:
▪ Netinkama tobulinimui, nes visą OS tenka perprojektuoti, tai sudėtinga OS
▪ Nėra apsaugos tarp atskirų branduolio komponentų
Pavyzdžiai: Linux, MS-DOS, Windows 95, Windows 98, UNIX, SOLARIS
Bandoma tobulinti monolitinio branduolio OS architektūrą grupuojant OS komponentus, kuriu funkcijos yra
panašios, išdėstant juos vieną virš kito. Kiekvienas lygmuo komunikuoja tik su gretimais aukščiau ir žemiau
esančiais lygmenimis.
Žemiausiame lygmenyje yra aparatinės priemonės, aukščiausiame – vartotojo sąsaja. Skirtingiems lygmenims
suteikiamos skirtingos privilegijos. Žemiausi lygmenys turi daugiausia privilegijų.
Pliusai:
▪ Patogu testuoti
▪ modifikuoti, galima pakeisti tik vieną sluoksnį nekeičiant kitų
▪ Aptikus klaidą galima nustatyti, kuriame lygmenyje ji atsirado
Minusai:
Modulinė architektūra
Kiekvienas OS komponentas interpretuojamas kaip atskiras modulis. Modulis – tai logiškai išbaigtas funkcinis
elementas.
▪ Ne visa OS gali būti įkelta į pagrindinę atmintinę, ten sukeliami tik tie komponentai, kurie reikalingi
vykdyti vartotojo programas.
▪ Moduliai lengviau modifikuoji nei sluoksninėje architektūroje
Mikrobranduolio architektūra
Tik kai kurios svarbiausios OS funkcijos yra įtraukiamos į OS branduolio sudėtį. Siekiama išlaikyti branduolį
kaip galima mažesnį, iškeliant OS paslaugas į vartotojo lygmenį.
Kiekvienas serveris vykdo veiksmus vartotojo rėžime, aptarnaudamas klientų užklausas. Klientas prašo
paslaugos per mikrobranduolį siųsdamas užklausas atitinkamam serveriui. Serveris vykdo veiksmus, o
mikrobranduolys pristato klientui atsakymus pranešime. Moduliai tarpusavyje komunikuoja siųsdami
pranešimus, kurie eina pro mikrobranduolį.
Pliusai:
Virtualieji kompiuteriai
Virtualioji architektūra leidžia vartotojui viename kompiuteryje naudoti skirtingas OS. Sukuriama iliuzija, kad
kiekviena OS valdo visus sistemos išteklius. Vartotojai gali naudotis bet kuria OS, naudoti tik joms palaikomas
programas.
Pliusai:
1. Vykdomos programos
2. Duomenų, kurie reikalingi programos darbui (kintamųjų, darbo erdvės, buferių ir t.t.)
3. Vykdomos programos konteksto (arba proceso būsenos)
Vykdymo kontekstas apima visą informaciją, kurios reikia OS valdyti procesą. Duomenys, apibūdinantys
proceso būseną, apima įvairių registrų turinį (PC). Į vykdymo kontekstą taip pat įeina proceso prioritetai ir
informacija apie jo laukiamus įvykius.
▪ Programa
▪ Duomenys
▪ Dėklas (jame saugoma info užtikrinanti proceso atnaujimą – grįžimo adresai, perduodamos
parametrų reikšmės)
▪ Proceso kontrolės blokas
Procesas atmintyje
▪ Steko sritis - saugomi lokalių funkcijų kintamieji.
▪ Heap sritis - saugomi dinamiškai kuriami objektai. (C – malloc(), C++ - new).
▪ Duomenų sritis - saugomi globalūs kintamieji.
▪ Programos kodo sritis (text) - saugomas objektinis vykdomasis programos kodas.
Proceso sukūrimas
▪ Sisteminis kvietinys inicijuoja proceso sukūrimą
▪ Sukuriamas PID
▪ Skiriama atmintinės sritis proceso valdymo duomenims
▪ Sukuriamas ir užpildomas PCB
▪ Skiriama atminties sritis duomenims
▪ Įkeliamas programinis kodas į pagr. atmintinę
▪ Užpildomi registrai ir vykdoma komanda
Proceso būsenų diagramos (3, 5, 7 būsenų). Zombio būsena. Tipinė UNIX tipo OS
procesų būsenų diagrama.
Perėjimas iš naujumo į parengties – OS suformuoja visus su procesu susijusius įrašus atitinkamose lentelėse
ir skiria reikiamą atminties sritį
Perėjimas iš parengties į vykdymo – laiko kvanto skyrimas procesui, kai procesų planuoklė išrenka vykdyti šį
procesą
Perėjimas iš vykdymo į parengties – laiko kvanto pabaiga arba tarp pasiruošusių procesų atsirado procesas
su aukštesniu prioritetu ir planuoklė nusprendžia pertrauktį procesą.
Perėjimas iš vykdymo į blokavimo – procesas priverstas laukti kokio nors įvykio (I/O pabaiga, kito proceso
pabaiga)
Perėjimas iš blokavimo į parengties – įvykis sulauktas, procesas pereina į pasiruošusių procesų eilę
Perėjimas iš vykdymo į pabaigos – proceso pabaiga, atlaisvinami visi proceso užimti ištekliai, naikinami
valdymo kontrolės struktūrų įrašai
OS gali laikinai pristabdyti keletą procesų, iškeldama juos į diską. Į atsilaisvinusią atmintinės sritį OS galės
įkelti naujus procesus. Šis pristabdymo procesas vadinamas sukeitimu (swap).
Perėjimas iš blokuoto į blokuotą suspenduotą – visi procesai yra blokavimo būsenos, OS iškelia procesą i
diską, kad galėtų įkelti nauja procesą
Perėjimas iš parengties suspenduoto į parengties – pagr. atmintinėje nelieka daugiau pasiruošusių procesų
ir įkeliamas suspenduotas procesas
Perėjimas iš parengties į parengties suspenduotą – nėra užblokuotų procesų (ji juos iškeltų) ir OS turi iškelti
pasiruošusius procesus, kad geriau veiktų.
Perėjimas iš blokuotos suspenduotos į parengties suspenduotą – procesas sulaukia įvykio, kurio jis laukė
Zombis - tai procesas kuris baigė savo darbą bet vis tiek yra bendroje sistemos procesų lentelėje, jam reikia,
kad procesas kuris paleido zombį, nuskaitytų jo išėjimo "exit" statusą.
UNIX tipo OS procesų būsenų diagrama
Sisteminiai procesai vykdomi branduolio režimu ir atlieka įvairias sistemos tvarkymo funkcijas (atminties
skyrimo, procesų iškėlimo).
Vartotojų procesai vykdomi vartotojo arba branduolio režimu. Vartotojo režimu vykdomi paprasti vartotojų
programos kodo veiksmai. Branduolio režimu vykdomi veiksmai, atitinkantys sisteminius kreipinius.
Perėmimo (preempted) būsena atitinka parengties būseną, kai procesas pereina iš branduolio būsenos į
vartotojo būseną.
Proceso konteksto perjungimas (angl. context switch). Detali perėjimo nuo vieno
proceso prie kito procedūra
• Tai perėjimas, kurio metu prieš tai vykdyto proceso kontekstas išsaugomas to proceso kontrolės bloke
(PKB) ir įkeliamas naujo proceso kontekstas (iš jo PKB).
• Perėjimo procedūra:
o Išsaugomas sustabdyto proceso kontekstas, įskaitant programos skaitiklio ir kitų procesoriaus
registrų reikšmes.
o Atnaujinama vykdo proceso kontrolės bloko informacija pagal naują būseną: proceso būsenos
lauke pakeičiamas įrašas apie būseną iš vykdymo būsenos į parengties arba blokavimo būseną;
o PKB perjungiamas į atitinkamą eilę – pasiruošusių arba užblokuotų, nelygu, į kokią būseną buvo
perjungtas procesas;
o Iš pasiruošusių procesų eilės planuoklė parenka naują procesą, kuris bus pradedamas vykdyti;
o Atnaujinama šio proceso kontrolė blokos informacija; būsenos lauke atsiras įrašas – „vykdomas“.
o Procesoriaus registrų turiniai atnaujinami šio naujo proceso informacija.
Procesų vykdymo režimai, vykdymo režimo pasikeitimas (angl. mode switch)
Saugumui užtikrinti procesoriai veikia dviem komandų vykdymo režimais:
• Privilegijuotas (sistemos, branduolio ar kontrolės režimas) – dirbant šiuo režimu galimi įvairūs veiksmai
registrų atžvilgiu, galimi veiksmai, susiję su įrašais sisteminėse duomenų lentelėse ir kiti veiksmai su
sistemai svarbia informacija;
• Vartotojo režimas – tai neprivilegijuotas darbo režimas.
Vykdymo režimo perjungimas – veiksmas, kai procesorius persijungia iš vartotojo į branduolio režimą, kad
galėtų atlikti privilegijuotus veiksmus reikalingus procesui. Branduoliui įvykdžius visus vartojo užprašytus
veiksmus, procesas toliau vykdomas vartotojo režimu.
Verta paminėti, kad naujo proceso sistemoje neatsiranda. Branduolio režimu vykdomi veiksmai atliekami to
paties proceso vardu.
Procesų API (fork(), wait(), exec*(), pipe(), kill(), signal() f-jų paskirtis, jų taikymo
pavyzdžiai, procesų medis)
o fork() – naujo proceso sukūrimas;
o exec*() - paleidžia kitą programą vietoj einamosios.
o wait() – proceso pervedimas į laukimo būseną.
o kill() – proceso nutraukimas.
o pipe() – sukuria terminalą.
o singal() –
OS veiksmų vykdymas
OS galima įsivaizduoti kaip tam tikrų programų rinkinį, vykdančią savo procesus. OS savo veiksmus
kontroliuoti naudoja įvairius būdus
Neprocesinis branduolys
OS branduolys traktuojamas kaip atskira programa visada veikianti privilegijuotu režimu. Branduolio
programa įkeliama į jai skirtą atminties sritį. Branduolio programa turi dėklą procesams valdyti
OS niekada savo veiksmų nevykdo proceso viduje vartotojo kontekste. Visi OS veiksmai vykdomi branduolio
režimu.
Visas OS kodas vykdomas ir visos OS paslaugos teikiamos vartotojo proceso kontekste vartotojo režimu.
Branduolio režimu vykdomi tik procesų perjungimo veiksmai (esant pertraukčių signalams, klaidos
situacijoms ar sisteminiams kvietiniams). Procesų perjungimo funkcijos vykdomos privilegijuotu režimu.
OS funkcijų veiksmas atlikti naudojamas branduolio dėklas, jis sudaro proceso įvaizdį. Jis naudojamas
branduolio procedūroms iškviesti ir parametrams perduoti tuo metu, kai vartojo procesas vykdomas
branduolio režimu.
Procesais pagrįstos OS
OS laikoma tiesiog sisteminių procesų rinkiniu. Pagrindinės branduolio funkcijos vykdomos branduolio
režimu kaip atskiri sisteminiai procesai.
Tik nedaugelis procesų perjungimo funkcijų yra vykdomos išoriškai bet kurio proceso atžvilgiu.
Gijos sudaro procesą ir skirtingos to paties proceso gijos dalijasi proceso valdomais ištekliais. Gijų atžvilgiu
skirstomas procesoriaus laikas. Tuo tarpu išteklių skirstymas yra taikomas procesams.
• programos skaitiklis PC
• registrų rinkinys
• dėklo erdvė SP (dėklą įrašomi kiekvienos iškviestos procedūros lokalieji kintamieji bei grįžimo
adresas, kuris naudojamas atlikus procedūros veiksmus)
Gijų projektavimo poreikis:
• Gijos daug natūraliau atitinka lygiagrečius skaičiavimus: naudodami procesą su daugeliu gijų galime
gauti puikų serverį, aptarnaujantį klientų užklausas.
• Joms nereikia priemonių, leidžiančių komunikacijas tarp procesų, jos gali komunikuoti per bendrą
atmintinę.
• Gijos gali lengvai pasinaudoti nauda, kurią teikia daugiaprocesorinės sistemos.
• Gijos yra pigus, pseudolygiagretumą (arba lygiagretumą daugelio procesorių atveju) užtikrinantis
mechanizmas, nes:
o Gijoms reikia tik dėklo ir atmintinės srities registrams, tai jas lengviau sukurti.
o Gijoms yra nereikalinga nauja adresų erdvė, globalių duomenų, programos kodo ar naujų
operacinės sistemos išteklių.
o Konteksto perjungimas yra žymiai greitesnis pereinant nuo gijos prie gijos nei nuo proceso
prie proceso. Tai užtikrinama todėl, kad tenka išsaugoti (arba atkurti) tik PC, SP ir registrus.
Įdiegiamos naudojant vartotojo lygio bibliotekas, o ne per sisteminius kvietinius, taigi gijų tarpusavio
persijungimo metu nereikia kviesti OS ir vykdyti pertraukčių.
OS branduolys nežino apie jų egzistavimą. Galimas gijų naudojimas, net kai OS nepalaiko gijų.
Gijos valdomos vartotojo vartotojo erdvėje. Kiekvienas procesas gali turėti savą gijų planavimo algoritmą.
Trūkumas, tas kad reikia naudoti neblokuojamus sisteminius kvietinius. Priešingu atveju, gija, įvykdžius
sisteminį kvietinį, bus užblokuota, o užsiblokavus kuriai nors proceso gijai, bus blokuojamas ir visas procesas.
Kitas trūkumas, kad OS nežino apie procese esančias gijas. Todėl procesas gauna vieną laiko kvantą, nepaisant
kiek gijų yra procese.
Vykdant vieną iš gijų jokia kita gija nebus vykdoma, kol pirmoji gija pati neatiduos procesoriaus, nes
netaikomas pertraukčių mechanizmas. Todėl netinkamas RR planavimo algortimas.
Branduolio lygio gijos
Kai gijos yra branduolio lygio, OS branduolys valdo ne tik procesus, bet ir gijas (jis žino apie jas). Gijų lentelės
nėra formuojamos kiekviename procese, gijų lentelę turi OS branduolys, kuris ir prižiūri, kaip vykdomos
sistemos branduolio gijos.
Gijos blokavimas vykdomas naudojant sisteminius kvietinius, užblokavus vieną proceso giją, gali būti
parenkama kita to paties proceso gija arba pereinama prie kito proceso gijų vykdymo.
Trūkumas tas, kad OS turi gebėti valdyti gijas. OS branduolys tampa daug sudėtingesnis.
Hibridinis diegimas
Hibridinio diegimo metu bandoma pasinaudoti tais pranašumais, kuriuos teikia tiek vartotojo, tiek branduolio
lygio gijos.
Net jei OS palaiko branduolio lygio gijas, vartotojo lygyje gali būti įdiegiama gijų biblioteka, kuri leis kurti
vartotojo lygio gijas. Tada kiekviena branduolio lygio gija galės perjunginėti vartotojo lygio gijas.
Gijos ir proceso skirtumai/panašumai
o Panašumai:
▪ Kaip ir procesai, gijos gali būti vienos iš būsenų: vykdymo, blokavimo, parengties,
pabaigos
▪ Kaip ir procesai, gijos dalinasi procesoriumi ir tik viena gija (esant vienam CPU) yra
vykdoma bet kuriuo laiko momentu.
▪ Kaip ir procesai, proceso gijos, esant vienam CPU, yra vykdomos nuosekliai.
▪ Kaip ir procesai, gijos gali sukurti „vaikus“.
▪ Kaip ir procesų atveju, gija yra blokuojama, kai laukia kokio nors įvykio, po kurio ji
išeis iš blokavimo būsenos. Tuo tarpu gali būti vykdoma kita proceso gija.
o Skirtumai
▪ Skirtingai nei procesai, proceso gijos nėra tarpusavyje nepriklausomos.
▪ Proceso gijos turi prieigą prie bet kurio adreso proceso erdvėje.
▪ Persijungimas nuo vienos gijos prie kitos vyksta žymiai greičiau nei persijungimas nuo
vieno proceso prie kito
▪ Projektuojant proceso gijas siekiama, kad jos padėtų viena kitai, o projektuojant
procesus to nesiekiama, nes jie gali būti skirtingų vartotojų.
• 1:1
• N:M
• N:1
Gijos ir signalai
Procesams ar gijoms jų darbo metu gali būti perduodami dviejų tipų signalai:
Kai tik procesas nori gauti procesoriaus laiko, jis turi patekti užklausą planuoklei.
Procesoriaus laiko planavimas ir skirstymas tarp šio aptarnavimo laukiančių procesų (ar gijų) padeda
optimaliai išnaudoti procesorių. Tinkamas procesoriaus laiko planavimas leidžia garantuoti maksimalų
užklausų pralaidumą ir maksimalų skaičių procesoriaus atliktų darbų.
Daugumoje sistemų procesams suteikiami prioritetai, atitinkantys jų svarbą. Tokiu atveju planuoklė parenka
vykdyti aukštesnio prioriteto procesą. Procesų prioritetai gali būti statiniai (nekinta proceso vykdymo metu)
ir dinaminiai (keičiasi proceso vykdymo metu nuo tam tikrų faktorių, pvz.: nuo to kiek laiko jis laukia procesų
eilėse; kiek procesoriaus laiko tas procesas jau gavęs). Dinaminiai prioritetai leidžia išvengti badavimo
situacijų.
• Ilgalaikis planavimas:
o Tai užduočių planuoklė (angl. job scheduler)
o Sprendžia:
▪ Kuri programa bus priimta į sistemą (taps procesu) ir bus įtrauka į eilę „Naujas“
▪ Kuris procesas bus perkeltas į eilę „Pasiruošęs“
o Aktyvuojama:
▪ Kažkuriam iš procesų pasibaigus.
▪ Kai procesorius prastovi ilgiau nei tam tikrą nustatytą laiko intervalą.
o Užklausos gali būti atmestos, jei:
▪ yra perpildymo būsena
▪ Didelis puslapių mainų aktyvumas
• Vidutinės trukmės planavimas:
o “Swapper” planuoklė (angl. memory scheduler)
o Sprendžia:
▪ kada ir kokį procesą reikia atidėti (iškelti iš pagrindinės atmintinės)
▪ kada ir kokį procesą reikia suaktyvinti (įkelti į pagrindinę atmintinę).
o Aktyvuojama:
▪ Procesui ilgą laiką būnant neaktyviam;
▪ Procesui turint žemą prioritetą
▪ Kai procesas užima per daug vietos pagrindinėje atmintinėje
o Ilgalaikio ir vidutinio laiko planavimo mechanizmai kontroliuoja multiprogramavimo lygį. t.y. kiek
procesų vykdoma vienu metu.
• Trumpalaikis planavimas:
o Tai CPU planuoklė (dispečeris)
o Sprendžia, kurio proceso vykdymui bus skiriamas CPU.
o Šis planavimas vykdomas įvykus vienam iš šių įvykių:
▪ Laikrodžio mechanizmo generuota pertrauktis. I/O pertrauktis.
▪ Sutiktas OS kvietinys.
▪ Signalas.
o Šio tipo planuoklė daro planavimo sprendimus gerokai dažniau nei kitos dvi paminėtos
planuoklės: sprendimai turi būti daromi ne rečiau kaip po kiekvieno gana mažo procesoriaus laiko
kvanto.
Sinchronizacija turi užtikrinti, kad tokiu atveju, kai keli procesai naudoja bendrus sistemos išteklius, vienam
procesui vykdant veiksmus su tais ištekliais, kiti procesai neturėtų prieigos prie šių duomenų.
• Bet kuriuo laiko momentu tik vienas procesas gali vykdyti kritinės sekcijos(CS) veiksmus
Eigos(progreso) reikalavimas
• Tik tie procesai, kurie yra „įėjimo“ sekcijoje gali įeiti į CS.
• Yra tam tikra ribinė laukimo riba, nusakanti kiek kartų kitiems procesams bus leista įeiti į CS, nuo
proceso prašymo leisti įeiti į CS iki to momento, kol šis procesas įeis į CS.
Procesų sinchronizaciją užtikrinančių sprendimų tipai
Programiniai sprendimai
• Pirmas variantas
Naudojamas globalus kintamasis turn. Jei turn reikšmė sutampa su proceso numeriu, tai atitinkamas
procesas įeina į kritinę sekciją, jei ne, procesas turi nuolat klausti, kokia yra turn reikšmė. Tokia nuolatinio
klausinėjimo situacija vadinama aktyviojo laukimo (busy waiting) būsena.
Kitamasis turn pradžioje yra nustatomas yra pradinę būseną (0 arba 1) prieš bet kurio Pi-tojo proceso
vykdymą. Proceso Pi veiksmai kritinėje sekcijoje yra atliekami, jei kitamojo turn reikšmė yra: turn=i. Po to, kai
procesas baigia kritinės sekcijos veiksmus, jis turi pakeisti turn reikšmę ir taip suteikti šansą kitam procesui
įeiti į kritinę sekciją.
Netenkinamas eigos(progreso) reikalavimas. Procesai turi paeiliui eiti į CS iš anksto nustatyta tvarka.
• Antras variantas
Vietoj globalaus kintamojo turn naudojamas atskiros loginės vėliavėles (flag). Sutrikus vienam iš procesų,
kitas procesas vistiek galės įeiti į kritinę sekciją, nes jis nenurodo, kuris sekantis procesas vykdys CS.
Procesas periodiškai tikrina kito proceso vėliavėlės reikšmę, kol jos reikšmė taps false (tai reikš, kad kitas
procesas yra palikęs CS.). Tuomet procesas nustato savo vėliavėlės reikšmę į true ir įeina į CS, išeidamas iš CS
nustato savo vėliavėles reikšmę į false. Procesai gali tikrinti vienas kito vėliavėlės reikšmę bet negali jos keisti.
Galimas atvejis vykdant pertrauktis, kai abu procesai įeina į CS. Netenkinamas tarpusavio atskyrimo
reikalavimas.
• Trečias variantas
Procesai iš anksto nustato savas vėliavėles į true padėtį, dar nepatikrinę kito proceso vėliavėlės būsenos. Tai
rodo atitinkamo proceso ketinimą įeiti į CS.
Galimas mirties taškas. kai abiejų procesų vėliavėlės nustatomos į false. Netenkinamas eigos reikalavimas.
• Ketvirtas variantas
Mirties taško situacijos bandoma išvengti išjungiant vėliavėles (false), jei tuo metu kitas procesas yra įėjęs į
kritinę sekciją.
Esant pertrauktims abu procesai gali įeiti į CS. Netenkinamas tarpusavio atskirties reikalavimas.
Ši algoritmą galima naudoti daugiaprocesėse sistemose su bendra atmtinine užtikrinti tinkamiems procesų
veiksmas su bendraisiais kintamaisiais.
Programinio sprendimo trūkumas – procesai, kurie užsiprašo įėjimo į CS, yra aktyviojo laukimo būsenos (busy
waiting). Nenaudingai naudojamas procesoriaus laikas. Sprendimas – blokuoti procesus, laukiančius įėjimo į
CS (jei CS vykdomų veiksmų seka ilga).
Techninės įrangos sprendimai
Garantuojamas veiksmų kritinėje sekcijoje atskyrimas, bet nukenčia sistemos efektyvumas, nes CPU negali
persijunginėti.
Kritinės sekcijos veiksmuose reikia vengti sisteminių kvietinių, kurie reikalauja proceso pertraukimo.
Problema, kad procesas gali žlugti atliekant CS veiksmus ir liks neįjungtos pertrauktys, o tai lems visos
sistemos žlugimą.
Problema, jei kompiuteris turi keletą procesorių. Nėra garantijos, kad procesų veiksmai CS bus atskirti, nes
vykdant vienam procesoriui CS veiksmus, negalima uždrausti veikti kitiems procesoriams, kuria galimai gali
įeiti į CS. Dėl to naudojama tik vieno procesoriaus sistemose.
• Naudojamos tam tikros OS sistemos funkcijos bei duomenų struktūros, leidžiančios spręsti kritinės
sekcijos problemas
Apibendrinimas.
Naudojant kompiuterines komandas galima užtikrinti daugelio kritinių sekcijų palaikymą
daugiaprocesėse sistemose, kiekvieną kritinę sekciją susiejant su savais kintamaisiais. Trūkumai –
procesai, laukdami įėjimo į CS nenaudingai eikvoja procesoriaus laiką. Taip pat procesui baigus
vykdyti CS, kitas procesas, kuris vykdys CS parenkamas atsitiktinai, todėl galima badavimo būsena.
▪ Wait(S) – išjungiama semaforo laukimo būsena (jei 1, nustato į 0; jei 0, procesas užmiega,
perkeliamas į eilę, kuri laukia semaforo S iįjungimo)
▪ Signal(S) – įjungiamas semaforas, kai procesas išeina iš kritinės sekcijos
▪ Veiksmai su semaforu yra kritinė sekcija semaforo atžvilgiu, wait() ir singal() sudaro apie 10
komandų, kurios turi būti vykdomos jų nepertraukiant.
▪ Galima išvengti kritinės lenktynių situacijos, tačiau vien semaforai negali garantuoti, kad procesai
(gijos) nepateks į mirties taško situaciją ir išvengs badavimo
▪ Tipai:
• Skaitinis – sveikojo tipo kintamasis gali įgyti neapibrėžtas sveikąsias reikšmes.
• Dvejetainis –sveikojo tipo kintamasis gali įgauti nulinę ar vienetinę reikšmes.
▪ Panaudojimas:
• Koordinuoti prieigą prie kokių nors išteklių (naudojamas skaitmeninis semaforas)
• Procesų (ar proceso gijų) vykdymo eigai suderinti – jų veiksmams sinchronizuoti laiko
atžvilgiu (naudojamas dvejetainis semaforas)
Įsivaizduokime penkis filosofus, kurie arba galvoja arba valgo. Filosofas galvoja, tada išalksta sėdasi prie
stalo, pasiima dvi šakutes iš kairės ir dešinės ir pavalgo, tada atsistoja ir vėl galvoja.
Kiekviena šakutė – tai išteklius, kuriuo turi dalytis du gretimi filosofai. Filosofas negali atimti šakutės,
kurią jau turi paėmęs greta sėdintis filosofas.
• Visi sėdasi prie stalo vienu metu ir paima tik kairę šakutę.
• Susidaro ciklinio laukimo situacija
• Tarkime yra du filosofai, kurie greičiau galvoja ir greičiau valgo, tai visus sistemos išteklius jie
monopolizuos, likę trys filosofai negaus šanso pavalgyti
Problemos gali būti sprendžiamos ribojant laiką, kurį filosofas gali praleisti turėdamas tik vieną(kairę)
šakute.
Šioje realizacijoje galimas mirties taškas, jei visi filosofai ima kairiąją šakutę.
Galimas toks sprendimas: vienu metu leisti tik keturiems filosofams pradėti valgyti. Tokiu atveju visada
vienas filosofas galės valgyti, o kiti trys turės užsiėmę po vieną šakutę. Naudojamas papildomas
semaforas T, kuris riboja vienu metu prie stalo sėdinčių filosofų skaičių.
Kai vienam iš rašytojų procesų yra skiriama prieiga prie X objekto, jokiam kitam procesui, nei skaitytojo, nei
rašytojo, prieiga prie objekto draudžiama.
Šios problemos pirmoji variacija reikalauja, kad joks skaitytojo procesas nelauktų, nebent rašytojo procesas
yra užėmęs objektą. Jei vienas procesas skaito, tai skaito visi. Kiti skaitymo procesai netikrinami ir prileidžiami
prie objekto X. Galimas rašytojų badavimas
Antroji problema reikalauja, kad, kai tik rašytojo procesas yra pasiruošęs, rašytojas rašo kaip galima greičiau.
Kai nėra laukiančių rašytojų procesų, skaitytojų procesai gali naudotis objektu X, tačiau kai tik atsiranda
rašytojo procesas, jis pradedamas vykdyti.
Galimas skaitytojų badavimas.
Kartais siūloma trečioji skaitytojų ir rašytojų problema, kuri sudaro apribojimus, neleidžiančius badavimo.
Trečiosios problemos sprendimai kartais gali versti skaitytojų procesus laukti, nors prieiga bus atvira
skaitymui, arba kartais versti rašytojų procesus laukti ilgiau, nei tai būtina.