Os Kolis

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 48

OS KOLIS

Pauliaus Gužo duoklė OS moduliui

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.

OS taip pat valdo:

• failų sistemą (failo įkėlimas į diską, failų išrinkimas)


• procesus (sukūrimas, vykdymas, lygiagretus veikimas)
• atminties įtaisus (procesų įkėlimas į RAM, procesų duomenų prieigos atskyrimas, mainų
užtikrinimas)
• darbą tinkle ir užtikrina jo saugą

Kompiuterio techninė įranga


• Procesorius
Atlieka kompiuterio veiksmų kontrolės, duomenų apdorojimo funkcijas
• Pagrindinis atminties įtaisas
Skirtas vykdomųjų programų kodams, įvairios paskirties duomenims saugoti. Saugojimo vietai
nusakyti naudojamas adresas. Adresai siunčiami tik iš procesoriaus į atmintinę, o duomenys abiem
kryptimis. Gali būti tokie tipai:
1. ROM(gali tik įrašyti, saugomos komandos, reikalingos kompiuterio įjungimo metu)
2. RAM
3. Išorinė atmintinė (diskas, duomenis galima saugoti nuolat)
Duomenų perdavimui naudojami I/O kanalai.
Atmintinės įrenginių hierarchija

Kompiuterio atmintis paprastai nusakoma trimis parametrais:


1. Apimtimi
2. Sparta
3. Kaina

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.).

• Įvesties ir išvesties įtaisai (1.5 pav.)


Per ryšio kanalus perduodamas valdymas, būvio informacija ir duomenys. Kiekvienas modulis
sąveikauja su sistemine magistrale arba centriniu procesoriumi.

Periferinės įrangos negalima tiesiogiai jungti į kompiuterio sisteminę magistralę, nes:


1. Periferinių įtaisų yra labai įvairių, ir jų veikimo principai iš esmės skiriasi. Būtų labai neracionalu
įtraukti valdymo logiką į centrini procesorių.
2. Keitimasis duomenimis su periferiniais įtaisais dažniausiai nėra toks intensyvus, kaip tarp
operatyviosios atminties ir centrinio procesoriaus.
3. Perif. įrangoje dažnai naudojami kitokie negu kompiuterio viduje duomenų formatai(ne b, ne word)
• Magistralė
Tam tikros struktūros ir mechanizmai, užtikrinantys ryšius tarp procesoriaus, pagrindinės atmintinės
ir I/O įtaisų.

Laidininkų funkcinės grupės:

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ę.

Procesoriaus registrai yra dviejų rūšių:

• Vartotojui prieinami registrai.


Jų turiniai pasiekiami vartotojų programoms. Gali būti įrašomi tarpiniai skaičiavimai ar duomenų ar
komandų iš pagrindinės atmintinės adresai. Iškvietus procedūrą įsimenami tuo metu esami registrų
turiniai, kad pasibaigus procedūrai juos galima būtų atkurti.
• Valdymo ir būsenos registrai.
Jų turiniai vartotojams nepasiekiami, arba pasiekiami netiesiogiai. Jais privilegijuotos OS programos
gali kontroliuot kaip vykdomos vartotojų programos.
Pagrindiniai naudojami registrai:
1. Programos skaitiklis (PC). Saugomas adresas sekančios komandos.
2. Komandos registras (IR). Saugoma šiuo metu vykdoma komanda.
3. Programos būsenos žodžio registras (PSW). Saugoma procesoriaus būsena (pertrauktis
leidžiantis bitas ar vartotojo/branduolio būsenos bitas).

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

Programos vykdymas susideda iš dviejų besikartojančių fazių – išrinkimo ir vykdymo.

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:

1. Aritmetiniai arba loginiai veiksmai su duomenimis


2. Duomenų perdavimas tarp atmintinės ir procesoriaus
3. Duomenų perkėlimas iš išorinės atmintinės į pagrindinę
4. Kontrolės veiksmai, leidžiantys keisti komandų vykdymo seką

Pertrauktys (programinės ir aparatinės, jų apdorojimo logika)


Pertrauktis (interrupt) – tai programos ar įtaiso atliktas veiksmas, kuriuo nutraukiamas einamosios
programos vykdymas ir valdymas perduodamas pertraukties doroklei (interrupt handler).

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:

1. Patogumas (OS daro naudojimąsi kompiuteriu patogesnį)


2. Efektyvumas (efektyviai naudojami ištekliai)
3. Plėtros galimybė (kuriama taip, kad būtų galimybė diegti naujas sistemas)

OS atliekamos funkcijos:

1. Pagrindinė OS paskirtis – vykdyti vartotojo programas.


2. Kontroliuoti taikomųjų bei sisteminių programų vykdymą;
3. Suteikti sąsają tarp kompiuterinės įrangos ir taikomųjų programų;
4. Turi perleisti procesorių vartotojo programai ir vėl jį atgauti;
5. Turi nurodyti procesoriui, kada ir kokią programą reikia vykdyti;
6. Turi palengvinti taikomųjų vartotojo programų ryšį su technine įranga;
7. Turi maskuoti techninės įrangos detales taikomosios programoms ir kartu rūpintis šiomis įrangos
detalėmis: valdyti šiuos įtaisus, suformuoti užduotis šiems įtaisams, priimti rezultatus, ateinančius iš
šių įtaisų.
8. Nurodyti procesoriui, kaip panaudoti kitus sisteminius išteklius ir kaip paskirstyti procesoriaus laiką
vykdant kitas programas.

Daugelio užduočių vykdymas


Kelių programų apdorojimo rėžimas, kai vienu metu į pagrindinę atmintinę yra įkeltos ir vykdomos kelios
užduotys, procesoriui persijungiant nuo vienos užduoties prie kitos.

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:

1. Reikėdavo nurodyti darbo trukmę


2. Daug laiko buvo sugaištama pasiruošti darbui (įkeliama pati programa – pradinis tekstas, tuomet
gaunama sukompiliuota programa – objektinis kodas, kuris įkeliamas į pagr. atmintinę)

Paprastos paketinės sistemos

Naudojama programa, vadinama monitoriumi. Programos įvedamos paketais, monitorius analizuoja


paketą ir vykdo jame pateiktas programas. Kiekvienai programai pasibaigus, valdymą perima monitorius
ir automatiškai įkrauna kitą programą iš paketo.

Procesoriaus darbas keičiasi tarp monitoriaus komandų ir tarp vartotojo komandų.

• Monitorius skaito FTN


• Įkrauna kompiliatorių „Fortan“ kalbos
• Kompiliatorius sukuria objektinį kodą
• Objektinis kodas įkeliamas į pagr. atmintinę arba į magnetinę juostą (tuomet naudojant LOAD
komandą monitorius galutinai įkelia objektinį kodą į pagr. atmintinę)
• Monitorius vykdo RUN, duomenys skaitomi po vieną eilutę
• Monitorius ieško END ir programa baigiama
Pageidautinos naudoti techninės įrangos galimybės:

• Atminties apsauga – vartotojo programos negali prieiti prie monitoriaus


• Laikrodžio mechanizmas – programos vykdymo laikas turi nustatytą ribą
• Privilegijuotos komandos – jas gali vykdyti tik monitorius, pvz. I/O komandos
• Pertrauktys – pirmuose kompiuteriuose to nebuvo

Daugeliui užduočių skirtos paketinės sistemos

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).

Reikalavimai programas vykdant daugiaprogramiu režimu:


1. Techninei įrangai: garantuoti I/O pertrauktis, valdyti atmintinę ir užtikrinti, kad joje būtų kelios
programos, garantuoti atmintines prieiga tik jai priskirtoms programoms
2. Programinei įrangai: užtikrinti užduočių planavimo mechanizmą, paskirstyti sistemos išteklius

Paketinio apdorojimo sistemų vartotojas negali tiesiogiai bendrauti su kompiuteriu: įvedinėti duomenų,
matyti gaunamų rezultatų.

Laiko paskirstymo režimu dirbančios sistemos

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ą.

OS plėtra nuo 1990 iki šių dienų sistemų


Pradėta plėtoti grafinė vartotojo sąsaja Windows sistemose.

Pirmosios OS valdė tik vietiniu išteklius, o šiuolaikinės OS turi valdyti ir tinklo išteklius.

Išaugo kompiuterių tarpusavio komunikacijų intensyvumas. Užduotys, susijusios, su kompiuterio darbu


tinkle, yra priskiriamos operinėms sistemoms.

Atsirado specialios paskirties kompiuteriai - serveriai.

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.

Daugiaprocesorės ir paskirstytosios OS veikia panašiai. Skirtumas tas, kad daugiaprocesorės sistemos


procesai naudojasi bendra atmintine bei įrenginiais, o paskirstytose sistemose kiekvienas procesorius turi
savo atmintinę.

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

Populiarėja objektinė programavimo kalba.

Pradėjo sklisti laisvai platinama bei atvirojo kodo programinė įranga („Linux“ – os, „ApacheWeb“ – severis).

Projektuojamos paskirstytosios OS, kurios naudoja paskirstytuosius skaičiavimus.

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į.

Naujos debesų paslaugos laikomos naujos kartos virtualiaisiais kompiuteriais.

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:

1. Nedideli specializuoti ištekliai


2. Tam tikras įrenginiams suteikiamas funkcionalumas
3. Efektyvus išteklių valdymas
4. Nedidelės apimties specializuota OS

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ų:

1. Padidėja procesorių sparta ir kompiuterio atminties talpa


2. Vieno procesoriaus sistemas keičia daugiaprocesorės sistemos
3. Atsiranda kompiuterių sistemos, kurios gali veikti didžiulės spartos tinkluose.

Atsiradus poreikiui teikti naujas paslaugas šiuolaikinės OS turi palaikyti:

1. Multimedijos tipo taikomąsias programas


2. Prieigą prie interneto bei saityno paslaugų
3. Kliento - serverio paremtas programas

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.

Procesai gali būti vartotojo ir sisteminiai.

OS atsakinga už šiuos veiksmus susijusius su procesais:

1. Procesų sukūrimą ir užbaigimą


2. Procesų pristabdymą ir atnaujinimą
3. Techninės įrangos išteklių skirstymą procesams

OS turi užtikrinti mechanizmus, skirtus:

1. Procesams sinchronizuoti
2. Procesų tarpusavio ryšiams užtikrinti
3. Mirties taško situacijai išvengti arba susidariusiam mirties taškui apdoroti

Pagrindinės atminties valdymas

Pagrindinė atmintinė – tai atmintinė su greita prieiga prie duomenų, kuriais naudojasi procesai ir I/O įtaisai.

Su pagrindine atmintimi procesorius gali susisiekti tiesiogiai.

Programa ir duomenys turi būti įkeliami į pagrindinę atmintinę.

OS turi sekti, kad nė vienas procesas negalėtų keisti atminties srities, priskirtos kitam procesui.

OS atsakinga už tokius uždavinius, susijusius su atminties valdymu:

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 dalis, kuri visada yra pagrindinėje atmintinėje, vadinama branduoliu.


Antrinės atmintinės valdymas

Naudojama antrinė atmintinė ilgalaikiam duomenų ir programų saugojimui.

OS atsakinga už šias užduotis, susijusias su disko valdymu:

1. Laisvos vietos diske valdymą


2. Disko atminties skyrimą
3. Disko darbo planavimą

OS siekia optimaliai išrinkti informaciją, kad kompiuterinė sistema veiktų kiek įmanoma greičiau.

I/O sistemos valdymas

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.

I/O sistemą sudaro:

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.

OS atsakinga už šių veiksmų vykdymą, susijusių su failais:

1. Failų sukūrimą ir šalinimą


2. Aplankų sukūrimą ir naikinimą
3. Pateikimą priemonių, skirtų įvairioms manipuliacijoms su failais ir aplankais
4. Failų įrašymą į antrinę atmintinę
5. Failų kilnojimą tarp pagrindinės ir antrinės atmintinių.

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.

Laikrodžio mechanizmas naudojamas, kad joks procesas ilgam neužimtų procesoriaus.

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.

OS turi įdiegtą tinklinių protokolų dėklą ir tinklo įtaisų tvarkykles.

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.

Tai sąsaja tarp vartotojo ir OS.

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.

Su failų sistema susiję veiksmai

OS sudaro sąlygas atlikti įvairius veiksmus su failais ir failų aplankais: kurti, naikinti, atidaryti, rašyti į failą ir
kt.

Daug vartotojų turinčios OS užtikrina apsaugos mechanizmo veikimą kreipiantis į failus.

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.

Ši informacija būtina norint tobulinti sistemą siekiant padidinti jos efektyvumą.

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.

Apsauga yra taip pat susijusi su sisteminių kvietinių kontrole.


Sisteminiai kvietiniai
Sisteminis kvietinys – tai užklausa, kurią procesas pateikia operacinei sistemai, kad ši įvykdytų tam tikrą
užduotį, kuri pačiam procesui vykdyti yra neleidžiama.

Pvz. bet kokiai komunikacijai tarp procesų, I/O veiksmams su įtaisais reikia naudoti sisteminius kvietinius.

Sisteminiai kvietiniai teikia sąsają tarp vykdomų procesų ir OS.

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į.

Gali būti susiję su:

• Procesų kontrole ( fork(), systems());


• Manipuliacija failais ( open(), close());
• Manipuliacija įrenginiais ( read(), write());
• Informacijos palaikymu: ( gettimeofday());
• Komunikacijomis ( send(), kill());

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.

Dažniausiai naudojamos API:

• 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 architektūra

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

Sluoksninė arba lygmenų architektūra

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:

▪ Sudėtingas projektavimo procesas, sunku suskirstyti OS funkcionalumą į lygmenis


▪ Ne tokia efektyvi kaip monolitinė

Pavyzdžiai: UNIX, THE

Modulinė architektūra

Projektuojant OS taikomas objektinio programavimo principas, naudojami logiškai išbaigti funkciniai


elementai, kurie tarpusavyje sąveikauja.

Kiekvienas OS komponentas interpretuojamas kaip atskiras modulis. Modulis – tai logiškai išbaigtas funkcinis
elementas.

Kiekvienas modulis bendrauja su kitu per žinomą sąsają.


Pliusai:

▪ 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

Pavyzdžiai: Mach, UNIX, Windows

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:

▪ Lengva modifikuoti, plėsti


▪ Saugi, patikima, nes moduliai negali prieiti prie techninės įrangos
▪ Vienoda sąsaja tiek su taikomosiomis programomis, tiek su sistemines paslaugas teikiančiais
moduliais
▪ Nesunkiai galima perkelti į kitą techninę platformą dėl mažo branduolio
Minusai:

▪ padidėja modulių tarpusavio komunikacijų laipsnis, dėlto mažėja sistemos funkcionalumas

Pavyzdžiai: Mach, PARAS, CHORUS

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.

Taikomas lygmeninis principas.

Pliusai:

▪ Gera priemonė OS tyrinėti, projektuoti


▪ Gerai apsaugoti
4. Procesai
Proceso aprašymas ir jo komponentai
Tai vykdoma programa, apimanti programos kodą, duomenis, procesoriaus registrų turinius, procesui
priskirtus ir jo naudojamus kompiuterių sistemos išteklius.

Procesą galima suvokti kaip sudarytą iš trijų komponentų:

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.

Proceso įvaizdį sudaro:

▪ Programa
▪ Duomenys
▪ Dėklas (jame saugoma info užtikrinanti proceso atnaujimą – grįžimo adresai, perduodamos
parametrų reikšmės)
▪ Proceso kontrolės blokas

Proceso valdymą apimančios funkcijos


1. Išteklių priskyrimas procesams
2. Procesų planavimas: reikia garantuoti, kad kiekvienas iš jų bus laiku sukurtas, vykdomas, užbaigtas,
stebėti ar efektyviai naudojamas procesorius.
3. Procesų tarpusavio komunikacijų užtikrinimą, jų sinchronizavimą, mirties taško susidarymo
prevenciją

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š blokuoto suspenduoto į blokuotą –

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ė

Perėjimas iš naujo į parengties suspenduotą –

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

Procesai yra dviejų kategorijų: sisteminiai procesai ir vartotojo procesai.

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.

Miego (sleeping) būsena atitinka blokavimo būseną.

Perėmimo (preempted) būsena atitinka parengties būseną, kai procesas pereina iš branduolio būsenos į
vartotojo būseną.

Proceso įvaizdį UNIX sistemoje sudaro:

• Vartotojo lygio kontekstas:


o Proceso vykdomas kodas (programos kodas)
o Proceso duomenys
o Vartotojo dėklas (informacija susijusi su kitų programinių objektų iškvietimais, kuriuos
įvykdžius reikia grįžti atgal ir tęsti veiksmus toliau).
o Bendrai naudojama atminties sritis (ji skirta procesų tarpusavio komunikacijos).
• Registrų kontekstas (jame saugoma procesoriaus būsenos informacija).
• Sisteminio lygio kontekstas:
o Procesų lentelės įėjimas. Tai realus įėjimas į OS palaikomą procesų lentelę (informacija, kaip
proceso būsena, UID, PID, proceso prioritetas, įvykis, kurio procesorius laukia, pasiųsti
signalai, nuorodos į atmintinės sritis, kuriose saugomi duomenys ir programos kodas)
o Vartotojo sritis (papildoma informacija, kurios reikia branduoliui, pavyzdžiui, efektyvus
vartotojo identifikatorius, naudojami failai ir t.t.)
o Branduolio dėklas (naudojamas vykdant veiksmus branduolio režimu).
o Procesų atminties sričių lentelė (naudojama atmintinei valdyti).
Proceso valdymui naudojamos duomenų struktūros (proceso kontrolės blokas,
procesų lentelė, procesų eilės)
• Procesų lentelė:
o Joje saugoma informacija apie kiekvieną procesą:
▪ PID – identifikatorius į PCB

• Proceso kontrolės blokas:


o Proceso identifikaciniai duomenys (proceso ID, tėvo proceso ID, vartotojo, sukūrusio procesą ID,
grupė).
o Procesoriaus būsenos duomenys (PC, SP, PSW, bendros paskirties registrų turiniai, nuoroda į
dėklą).
o Proceso valdymui skirti duomenys (proceso būsena, vykdymo prioritetas, privilegijos).
o Procesų tarpusavio komunikacijos duomenys (vėliavėlių reikšmės, signalai)
o Duomenys apie naudojamus failus ir I/O įtaisus
• Procesų eilės (gali būti sudarytos kaip susieti sąrašai iš procesų PCB):
o Pasiruošusių procesų eilė – atmintyje esančių procesų, laukiančių vykdymo procesoriuje, eilė.
o Blokuotų procesų eilė – atmintyje esančių procesų, laukiančių kažkokio įvykio pabaigos, eilė. Gali
būti atskira eilė kiekvieno įvykio laukiantiems procesams.
Procesų dispečerės-planuoklės paskirtis, jos komandų vykdymo periodai (t.y. kada
ji aktyvuojama)
• Paskirtis - planuoti procesoriaus persijungimą nuo vykdomo proceso prie kito proceso, esančio
pasiruošusiųjų eilėje.
• Ji skiria atskiram procesui vykdyti laiko kvantą, kai kvantas išnaudojamas, ji laikinai sustabdo procesą ir
perduoda vykdymą kitam procesui. Visa informacija apie procesą išsaugoma jo sustabdymo metu, kad
paskui būtų galimą jį pratęsti.
• Procesorius, prieš persijungdamas nuo proceso A vykdymo prie proceso B vykdymo, visada vykdo
planuoklės komandas, nuo kurių ir priklauso, kurį procesą procesorius vykdys kitą.

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.

Procesas, vykdomas branduolio režimu, paprastai negali būti pristabdytas ar pertrauktas.

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.

OS veiksmų vykdymas vartotojiškuose procesuose

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.

Ši technologija gerai tinka daugiaprocesėms sistemoms.


5. Gijos
Procesų tipai (nepriklausomi, konkuruojantys, kooperuojantys), jų
skirtumai/panašumai
o Nepriklausomi procesai (Independent process)
▪ Tai nuosekli programa vykdymo eigoje;
▪ Privatus kontekstas;
▪ Rezultatai priklauso tik nuo įėjimo duomenų.
o Konkuruojantys procesai (Concurrent processes)
▪ Dalinimasis resursais (konkurencija);
▪ Vykdymas reikalauja planavimo.
o Kooperuojantys procesai (Cooperating processes)
▪ Lygiagretaus principo programa jos vykdymo metu;
▪ Bendrai naudojamas kontekstas ar jo dalis;
▪ Rezultatai priklauso nuo vykdymo eigos.

Gijos. Jų tipai. Gijų projektavimo poreikis


Gija – tai nepriklausomų veiksmų seka procese. Jei proceso vykdomus veiksmus galima suskaidyti į
lygiagrečiai vykdomas šakas, tai kiekviena šaka gali būti traktuojama kaip proceso gija.

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.

Gijos kontekstą nusako:

• 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.

Gijos būna dviejų tipų (galimas ir trečias):

Vartotojo lygio gijos

Į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.

Norint sukurti ar naikinti giją vykdomas sisteminis kvietinys.

Procesorius atsižvelgia į gijų skaičių skiriant laiko kvantą.

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ų.

Gijų realizacijos modeliai


Galimi šie daugelio gijų realizacijos modeliai, kurie atspindi santykį tarp vartotojo (N) ir branduolio (M) lygio
gijų:

• 1:1
• N:M
• N:1

Gijų tarpusavio persijungimai


1. Išsaugomi procesoriaus registrų turiniai, gijos dėklas, PC turinys
2. Iš gijų lentelės išrenkama pasiruošusi vykdymui gija
3. Į procesoriaus registrus įkeliamos naujos reikšmės, perjungiama nuoroda į gijos dėklą ir pakeičiama
PC reikšmė
4. Pradedama vykdyti nauja gija
Gijų naudojimo teikiami pranašumai
o Gijos leidžia proceso veiksmus atlikti lygiagrečiai, pavyzdžiui, I/O veiksmus ir skaičiavimus, ir pasinaudoti
kelių sistemoje esančių procesorių egzistavimu ir realiai greičiau įvykdyti proceso veiksmus.
o Paprastai naujai gijai sukurti ir užbaigti reikia mažiau operacinės sistemos veiksmų nei naujam procesui.
o Mažiau laiko trunka ir persijungimas nuo vienos gijos prie kitos, nei nuo vieno proceso prie kito.

Gijos ir signalai
Procesams ar gijoms jų darbo metu gali būti perduodami dviejų tipų signalai:

1. Sinchroniniai. Siunčiamas tik tai gijai, kuri jį sugeneravo, jei ji jo nemaskuoja


2. Asinchroniniai. Gali būti persiųstas bet kuriai iš gijų, kuri nėra to signalo užmaskavusi

Gijų API (pthread_create(), pthread_join(), pthread_exit() f-jų paskirtis, jų taikymo


pavyzdžiai)
• pthread_create() – gijos sukūrimas.
• pthread_join() –
• pthread_exit() – gija baigia iškviestos funkcijos veiksmus.
6. Procesų vykdymo planavimas
Procesų vykdymo planavimo sąvoka, paskirtis.
Kai sistemoje veikia daugiau nei vienas procesas (ar daug gijų), reikia valdyti procesoriaus laiko skirstymą
procesams (gijoms) – jį planuoti, nes vienu metu gali būti keletas paruoštų vykdymui procesų (gijų). Tuo
rūpinasi OS dalis, vadinama planuokle.

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ų.

Planavimo tipai (ilgalaikis, vidutinės trukmės, trumpalaikis). Planuotojų komandų


vykdymo periodai (t.y. kada kiekvieno tipo planuoklė aktyvuojama)

• 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.

Procesoriaus resursų perėmimo būdai (angl. preemptive, non-preemptive


scheduling)
• Kai vykdomo proceso negalima perimti, jis išlieka tokios būsenos, kol užblokuojamas arba gera valia
atiduoda procesorių (non-preemptive)
• Jei vykdant procesą procesorius gali būti perimtas, tai procesas gali būti pertraukiamas po tam tikro
fiksuoto laiko intervalo ir OS yra perkeliamas į parengties būseną (preemptive)

Planavimo įvertinimo metrika, kriterijai


• CPU panaudojimas (CPU usage)
o Procentai, kuriais apibūdinama laiko dalis, kurią procesorius yra užimtas. Svarbus kriterijus
daugelio vartotojų sistemose.
• Visas vykdymo laikas (turnaround)
o Laikas, kurio reikia tam tikram procesui atlikti nuo sukūrimo iki pabaigos.
• Laukimo laikas (waiting time)
o Laikas, kurį procesai praleidžia pasiruošusių procesų eilėje laukdami I/O pabaigos
• Atsakymo laikas (response time)
o Laiko tarpas nuo to momento, kai užklausa buvo pateikta, iki tol, kol buvo gauti pirmieji
atsakymai. Prastas kriterijus interaktyviosiose sistemose.
• Pralaidumas (throughput)
o Skaičius procesų, kurie baigiami vykdyti per nurodytą laiko vienetą.
Planavimo politika-tikslai (130psl)
• Minimizuoti [visą] atsakymo laiką:
o Minimizuoti proceso apdorojimo laiką sistemoje (laikas pasiruošusių procesų eilėje, išskirti
reikiamą CPU kvanto dydį)
• Maksimizuoti pralaidumą (angl. throughput):
o Minimizuoti papildomas sąnaudas (pavyzdžiui proceso perjungimo konteksto skaičių).
o Efektyviai naudoti esamus resursus (ne tik CPU, bet ir diskas, atmintis ir t.t.)
• Vykdyti sąžiningą resursų paskirstymą
o Dalinti CPU resursus sąžiningai – subjektyvu, tačiau bendru atveju vertinamas bendras vartotojo
pasitenkinimas sistemos darbu.
o Daugiau sąžiningumo – didesnis atsakymo laikas.

Sąžiningas planavimas (141psl)


• Reikalingas kompromisas: sąžiningumas didina atsakymo laiką.
• Sąžiningumo mechanizmo realizacija:
o kiekvienai eilei paskirti fiksuotą dalį CPU laiko -> ne visuomet pasiteisina (kas atsitiks, jei turim
100 trumpų procesų ir vieną ilgą?)
o didinti prioritetą tiems procesams, kurie negauna CPU laiko(naudojama UNIX tipo OS) ->
neaišku kaip dažnai ir iki kokio prioriteto reikia didinti, kad būtų optimalu.

Planavimo algoritmai (FCFS, RR, SPF(SJF), SRT(SRTF), prioritetinės eilės, daugelio


lygių grįžtamojo ryšio eilė (MLFQ): jų parametrai, veikimo principas, trūkumai,
privalumai, panaudojimo sąlygos. Soliaris OS TS prioritetinės klasės dispečerio
konfigūracija.
• FCFS(FIFO) algoritmas:
o pirmas pasirodęs procesas yra ir aptarnaujamas pirmas (FIFO)
o Proceso pertraukimas negalimas:
▪ Ankstyvosiose OS procesas vykdomas iki jo pabaigos (tame tarpe ir su I/O).
▪ Dabartinėse OS procesas vykdomas iki jo pabaigos arba užsiblokavimo.
o Savybės:
▪ Problemos:
• Vidutinis laukimo laikas gali būti didelis, jei trumpos užduotys laukia už ilgų
(išsprendžiama naudojant prioritetinį planavimą).
• Gali gautis blogas persidengimas tarp I/O ir CPU veiksmų.
• Neparankūs trumpiems procesams
▪ Privalumai:
• Paprasta realizacija
• Gerai tinka daugiau skaičiavimų pobūdžio (CPU-bound) tipo procesams
• RR algoritmas:
o Sprendžia FCFS konvojaus efekto problemą.
o Vykdomas ciklinis aptarnavimas:
▪ OS priskiria laiko kvantus (q) kiekvienam iš procesų.
▪ laiko kvantui pasibaigus, procesas pertraukiamas ir perkeliamas į pasiruošusių procesų
eilės pabaigą laukti, kol jam bus išskirtas sekantis laiko kvantas.
▪ n pasiruošusių procesų, kai laiko kvantas lygus q:
• Kiekvienas procesas gauna 1/n CPU laiko.
• CPU laikas išdalinamas lygiomis dalimis q.
• Nei vienas procesas nelaukia daugiau kaip (n-1)q laiko.
o Savybės:
▪ Privalumai:
• Tinkamesnė esant trumpiems procesams.
• Tinkama interaktyvioms sistemoms, nes gali garantuoti mažas vidutines
atsakymo trukmes.
▪ Problemos:
• Papildomas laikas dėl dažno proceso konteksto perjungimo (FCFS atveju
papildomas laikas būtų mažesnis)
• Laiko kvanto dydžio parinkimas:
o Per didelis – sistemos atsakymo laikas netinkamas
o Begalinis – FCFS atvejis
o Per mažas – CPU pralaidumas mažėja
o q optimalus, kai interaktyvūs procesai spėtų pateikti I/O užklausą (10-
100ms), ~1proc. papildomų sąnaudų dėl konteksto perjungimo)
• SJF (SPF) algoritmas
o Trumpiausias darbas(procesas) pirmas (SJF - Shortest Job First)
o Proceso pertraukimas negalimas
o Savybės:
▪ Privalumai:
• Gaunami mažesni vidutiniai laukimo laikai nei FIFO
• Gerai tinka trumpiems procesams aptarnauti
▪ Problemos:
• Gan sunku nustatyti, kiek laiko truks proceso vykdymas
• Ilgiems procesams gali susidaryti badavimo situacija
• Netinka interaktyvioms sistemoms
• SRTF algoritmas
o Procesas, kuriam liko mažiausiai aptarnavimo laiko, aptarnaujamas pirmas (SRTF – Shortest
Remaining Time First):
o Proceso pertraukimas galimas:
▪ Naujo proceso pasirodymo metu įsijungia planuoklė ir vykdomasis procesas
pertraukiamas, jei naujo proceso likęs vykdymo laikas yra trumpesnis
o Savybės
▪ Privalumai:
• Didelis pralaidumas
• Minimali vidutinė atsakymo trukmė
▪ Trūkumai:
• Reikalauja įvertinti likusį proceso aptarnavimo laiką
• Galimas badavimas ilgiems procesams
• MLFQ (Daugelio lygių grįžtamojo ryšio eilės):
o Pagrindiniai veikimo principai:
▪ Pirmą kartą procesas talpinamas į aukščiausio prioriteto eilę.
▪ Jei išnaudotas CPU laiko kvantas, bet procesas nepasibaigė – perkelti jį į žemesnio
prioriteto eilę.
▪ Jei procesas neišnaudojo jam skirto laiko kvanto(pertraukiamas arba pradėjo vykdyti I/O
veiksmus) – perkelti jį į aukštesnio prioriteto eilę arba palikti esamoje.
▪ Jei procesas pradeda vykdyti I/O veiksmus – perkelti jį į aukštesnio prioriteto eilę
o Kiekviena eilė gali turėti savą procesų planavimo algoritmą (paskutinė eilė FCFS)
o Jei atsiranda procesas aukštesnio lygio eilėje nei tuo metu vykdomas procesas, tai šio proceso
vykdymas yra pertraukiamas
o Kiekviena eilė aptarnaujama cikliniu principu
7. Tarprocesinė (IPC) komunikacija
Procesų vykdymo sinchronizacija: sąvoka ir paskirtis
Sinchronizacija – veiksmas, leidžiantis procesams naudotis bendrais sistemos ištekliais.

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ų.

Pagrindinės su procesų vykdymo sinchronizacija susijusios sąvokos (tarpusavio


atskyrimas, kritinės sekcija)
• Tarpusavio atskyrimas
o bet kuriuo laiko momentu tik vienas procesas gali vykdyti veiksmus su bendru (kritiniu) resursu:
▪ Duomenimis;
▪ Įvairiais įtaisais, pvz. spausdintuvu.
• Kritinė sekcija
o Tai programos kodo dalis, kuriai turime užtikrinti tarpusavio atskyrimą:
▪ Bet kuriuo laiko momentu tik vienam procesui yra leidžiama atlikti kritinės sekcijos
veiksmus (netgi esant keliems CPU).
▪ Tik po to, kai vienas procesas atlieka visus kritinės sekcijos veiksmus, į kritinę sekciją
leidžiama įeiti kitam procesui.
o Turi būti kiek įmanoma trumpesnė.
o Kritinių sekcijų identifikavimas – gera sistemos/aplikacijos projektavimo pradžia.
o Prieigai prie kritinės sekcijos sinchronizuoti naudojami semaforai, monitoriai ir kitos priemonės.

Reikalavimai efektyviam kritinės sekcijos problemos sprendimui


Tarpusavio atskyrimo reikalavimas

• 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.

Ribinio laukimo reikalavimas

• 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

• Realizuojami programiniais principais, naudojami algoritmai, kurie leidžia tarpusavyje atskirti


procesų veiksmus
• Nėra palaikomi nei OS, nei techninės įrangos

Pirmasis Th. J. Dekkerio algoritmas:

• 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.

Antrasis Th. J. Dekkerio algoritmas:

• Naudojamos vėliavėlės, rodančios, kad atitinkamas procesas nori įeiti į CS.


• Naudojamas kintamasis turn, kurio reikšmė rodo, kuriam procesui atėjo eilė įeiti į CS.
Netenkinamas eigos(progreso) reikalavimas, nes procesai turi eilės tvarka įeiti į CS.

Gary L. Pettersono algoritmas:

• Naudojamos vėliavėlės, rodančios, kad atitinkamas procesas nori įeiti į CS.


• Naudojamas kintamasis turn, kurio reikšmė rodo, kuriam procesui atėjo eilė įeiti į CS.

Tenkinami visi trys reikalavimai: tarpusavio atskirties, eigos, ribinio laukimo.


Kepyklos algoritmas:

Naudojamas kai sistemoje yra n procesų, besivaržančių del įejimo į CS.

Tenkinami visi trys reikalavimai: tarpusavio atskirties, eigos, ribinio laukimo.

Š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

• Naudojamos tam tikros specialios kompiuterinės komandos

Uždraudžiamos pertrauktys, kai procesas įeina į CS.

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.

Operacinių sistemų sprendimai

• Naudojamos tam tikros OS sistemos funkcijos bei duomenų struktūros, leidžiančios spręsti kritinės
sekcijos problemas

Naudojamos specialias kompiuterines komandos, kurios vykdo du veiksmus neperskiriamai


(„atomiškai“).
testset() naudojimas
xchg(a, b) naudojimas

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.

Problemos, iškylančios nekorektiškai taikant/netaikant procesų sinchronizaciją


užtikrinančius mechanizmus (lenktynių situacija, mirties taško situacija, badavimo
situacija)
• Lenktynių situacija
o Tai situacija, kai programos įvykdymo rezultatas priklauso nuo procesų (gijų) vykdymo sekos.
• Mirties taško situacija
o Tai lenktynių situacijos priešingybė.
o Situacija kai procesų arba gijų grupė blokuojasi taip, kad toliau nei vienas iš šios grupės
nebegali vykdyti tolesnių veiksmų.
o Mirties taškas kyla kai du ar daugiau procesų turi konfliktuojančius poreikius (laukia vienas
kito pabaigos)
• Badavimo situacija
o Tai situacija, kai vienas ar daugiau procesų (gijų) laukia kritinių resursų, bet jų negauna.
Procesų sinchronizaciją užtikrinantys mechanizmai:
o Užraktai (jų tipai, skirtingos realizacijos, savybės, trūkumai/panašumai, naudojimo sąlygos) (187psl)
▪ Tipai:
• Pakartotinai užrakinamas - užraktas gali būti daug kartų rakinamas tos pačios gijos,
kiekvieną kartą iškart suteikiant priėjimą prie saugomos struktūros.
• Skaitymo-rašymo užraktas - suteikia dviejų tipų (skaitymo ir rašymo) leidimus.
• Garbingas užraktas- užraktas atrakinus suteikia leidimą tai gijai, kuri šio leidimo laukė
ilgiausiai.
▪ Savybės:
• Naudojami tik procesų tarpusavio atskyrimo užtikrinimui, valdant prieigą prie bendrai
naudojamų duomenų ar bendros kodo dalies:
• Gali būti viename iš dviejų būvių: – užrakintas arba atrakintas (1-0).
• Sudaro 3 pagrindinės operacijos:
o Allocate and Initialize – užrakto inicializacija.
o Acquire /lock – gauti prieigą prie resurso.
o Release /unlock – atlaisvinti prieigą prie resurso.
▪ Realizacija:
• Kritinės sekcijos vykdymo metu uždraudžiant pertrauktis arba keičiant jų vykdymo
prioritetą.
• Naudojant žemo lygio komandas, kurių atomiškumas užtikrinamas techninės įrangos
pagalba.
o Semaforai (jų tipai, savybės, trūkumai/panašumai, praktinis panaudojimas)
▪ Tai OS mechanizmas, leidžiantis tarpusavyje atskirti procesų veiksmų vykdymą kritinėje sekcijoje
(sprendžia lenktynių situacijos problemą)

▪ Naudojant semaforus galima išvengti aktyviojo laukimo (busy waiting) būsenos

▪ 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)

• Semaforai naudojami, kuomet pageidaujama, jog su tam tikra duomenų struktūra ar


kompiuterio įrenginiu nedirbtų daugiau nei nurodytas ribotas skaičius lygiagrečių gijų.
o Skirtumai tarp užrakto ir semaforo mechanizmų.
▪ Skirtingai nuo užraktų, semaforai paprastai leidžia grąžinti leidimą ir ne tai gijai, kuri jį pasiėmė.
▪ Skirtingai nuo užraktų, semaforai neskirti pakartotinam rakinimui ta pačia gija bei atskiriems
rakinimams.
▪ Kaip ir užraktas, semaforas gali būti garbingas arba ne. Garbingas semaforas pirmiausia suteikia
leidimą tai gijai, kuri jo laukė ilgiausiai, skaitymui bei rašymui.
o Vartotojo-gamintojo , skaitytojų-rašytojų, pietaujančių filosofų problemos (kada kyla, kaip spręsti,
trūkumai/privalumai)
▪ Vartotojo – gamintojo problema:
• Situacija kai viena gija turi perduoti informaciją kitai gijai, kuri šios informacijos laukia –
gijos susietos vartotojo ir gamintojo santykiais.
• Gamintojas – gija, kuri gaminą informaciją, vartotojas – gija, kuri ima šią informaciją ir
apdoroja (naudoja).
• Informacijos perdavimui tarp jų užtikrinti gali būti naudojamas buferis kaip tarpinė
saugykla
• Galima situacija, kai gamintojas gamins greičiau nei vartotojas spės ją vartoti, todėl gali
pritrūkti vietos informacijai įkelti.
• Galima situacija, kai vartotojas nori imti informaciją, o ji dar nėra pagaminta.
• Reikia padėjimo ir paėmimo veiksmus atkirti tarpusavyje, neleisti jiems vykti vienu metu.
Naudojamas neribotas buferis:

Naudojamas baigtinis buferis


▪ Pietaujančių filosofų problemos:
• Problemos, su kuriomis susiduria programos, kai reikalauja išskirtinės prieigos prie bendrai
naudojamų sistemos išteklių ar bendrai naudojamų duomenų.
• Parodoma, kad, konkuruojant procesams dėl bendrai naudojamų išteklių, atsiranda galimybė
mirties taško bei badavimo situacijai susidaryti.

Į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.

Galima mirties situacija:

• Visi sėdasi prie stalo vienu metu ir paima tik kairę šakutę.
• Susidaro ciklinio laukimo situacija

Galima badavimo 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ų.

▪ Skaitytojų – rašytojų problema:


Problemos, kylančios kai procesai(gijos) konkuruoja dėl bendrų išteklių.
Tarkim kad vienu duomenų objektu X nori dalintis keli konkuruojantys procesai.
Kai kurie nori tik skaityti – skaitytojų procesai.
Kiti keisti (skaityti ir rašyti).– rašytojų procesai.

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

Naudojami du semaforai: xLock, kuris kontroliuoja prieigą prie objekto X ir


rcMutex, kuris kontroliuoja prieigą prie kintamojo rc, nusakančio skaitytojų skaičių.
Abu semoforai mutex tipo

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.

You might also like