Raalprojekteerimine
Euroopa struktuurfondide logo
Automatiseerimise viide Mehhatroonikaseadmete viide Pneumoautomaatika viide Siemens LOGO! viide Siemens S7-1200 viide

OPERATSIOONISÜSTEEMID

Protsessid

Protsessi mõiste

Programm muutub protsessiks siis, kui ta käivitatakse: temast tekitatakse töötav ehk aktiivne koopia. Protsess vajab tavaliselt tööks mingi koguse protsessori tööaega, mäluruumi ning pöördub tavaliselt ka erinevate sisend- väljundseadmete poole.

Protsess on töötav programm ehk programmi aktiivne koopia

Toome lihtsa näite tekstiredaktori (tekstiredaktor on näiteks Microsoft Word, OpenOffice.org Writer jne.) baasil: kui me käivitame tekstiredaktori, siis selleks, et programm üldse käivituks peab protsessor tegema mingi hulga arvutusi (ehk tegevusi, mis on vajalikud juba ainuüksi protsessi loomiseks ning hilisemaks tööshoidmiseks). Kindlasti hõivab töötav protsess ka mingi koguse mälu: protsess on programmi aktiivne koopia ja seega peab seda kusagil ka hoidma. Samuti vajab rakendus mingisugust ligipääsu sisend-väljundseadmetele.

Tekstiredaktori puhul peavad protsessini jõudma näiteks klaviatuurilt tekstiredaktorisse sisestatud tähed. Tekstiredaktori poolt saadetav info peab omakorda kindlasti jõudma videokaartini ning sealt monitorile. Ilmselt peab tekstiredaktor sisaldama ka võimalust tehtud töö salvestada, seega vajab see protsess ka võimalust suhelda kõvaketta või mõne muu salvestusseadmega. Klaviatuur, videokaart, kõvaketas, need on ainult mõned näited sisend-väljundseadmetest.

Tänapäeva operatsioonisüsteemid võimaldavad töötada mitmel protsessil korraga. See tähendab aga seda, et operatsioonisüsteem peab tagama kõikidele protsessidele vajalikele ressurssidele juurdepääsu ning kuna ressursid arvutis on piiratud, siis tuleb ressursse erinevate protsesside vahel jagada. Samas tuleb tagada ka see, et töötavad protsessid üksteist segama ei hakkaks. Seepärast ongi üks operatsioonisüsteemi tähtsamaid ülesandeid protsessihaldus. Protsessihalduse käigus jälgitakse, et kõik protsessid töötaksid, et neil oleks ligipääs riistvararessurssidele (kui neile vastav ligipääs on lubatud), et protsessid üksteist ei segaks ning et kõik vajalikud protsessid saaksid omavahel suhelda.

Kaasaegsetes operatsioonisüsteemides on võimalik määrata protsesside olulisust ning õiguseid. Reegel on selline, et operatsioonisüsteemile olulisemad protsessid võivad hõivata suurema hulga erinevaid ressursse, kuid on ka erandeid. Näiteks: kui meil on arvuti kuhu on paigaldatud andmebaasiserver ja veebiserver ning andmebaasiserver on antud olukorras missioonikriitiline, sest seda kasutab hulk rakendusi teistes serverites. Seega võib serverihaldur määrata, et andmebaasisesrveriga seotud protsessid on olulisemad ning neile tuleb jagada kõige suurem hulk riistvaralisi ressursse. Kriitilistel hetkedel, kui serveril on suur koormus, antakse sellisel juhul valdav osa riistvara ressursist andmebaasiserveri käsutusse, see võib tähendada, et mingil hetkel ei ole veebiserver üldse kättesaadav, kuid samas on tõenäosus, et andmebaasiserver töötab, sellevõrra suurem. [4]

Üheaegsed- ja paralleelprotsessid

Kõik kaasaegsed operatsioonisüsteemid on multitegumi toega ehk võimaldavad erinevatel protsessidel töötada samaaegselt. Nagu juba ajajaotus operatsioonisüsteemides selgitatud võib see tähendada seda, et igast protsessist täidetakse korraga ainult osa ja vahetatakse töösolevat protsessi piisavalt sageli, et kõik protsessid saaksid mingi aja jooksul kasutada riistvara ressursse. Kõige lihtsamal juhul tehakse seda nii, et kõik töös olevad protsessid pannakse mingil viisil järjekorda ning seejärel määratakse ajahulk, mis igale protsessile korraga eraldatakse (ajaaken ehk time slice), kui aeg täis, siis vahetatakse töös olevat protsessi ning kui eelmine protsess ei lõpetanud talle eraldatud aja jooksul tööd, siis liigub see järjekorra lõppu, et oodata järgmist ajaakna eraldamist. [4]

[joonis]

Et selline protsesside vahetamine võimalik oleks sisaldab iga protsess lisaks töö kirjeldusele ka protsessile eraldatud numbrit, tema aktiivset hetkeseisu (ehk seisu, kuhu protsessi täitmisega ollakse jõutud ik programm counter), protsessori registrite hetkeseisu, ajutisi muutujaid (mis protsessoris on pinus) ja globaalseid muutujaid.

Tegelikkuses on protsessidele protsessoriaja jagamiseks olemas mitmeid erinevaid loogikaid:

  • Lihtjärjekord (First Come First Served) – protsesse täidetakse nende saabumise järjekorras kuni töö valmimiseni, kui mõni protsess blokeerub, siis võetakse järgmine
  • Alates lühemast (shortest first) – iga protsessiga seotakse järgmise protsessoriaja küsitav pikkus ning esimesena võetakse täitmisse lühiajalisema sooviga protsess
  • Prioriteedi järgi planeerimine – iga protsessiga seotakse prioriteet, suurema prioriteediga protsess täidetakse esimesena, võrdsete prioriteetide korral võetakse täitmisse esimesena täitmisele saabunud protsess
  • Ringiratast (round robin) planeerimine – igale protsessile eraldatakse korraga kindel hulk protsessori aega ja selle aja möödudes tõrjutakse täitmisest protsess välja ja pannakse järjekorra lõppu

Kopereeruvad protsessid

Üheaegseid protsesse on kahte liiki: sõltumatud (independent) ja koopereeruvad (cooperating) protsessid. Sõltumatud protsessid on sellised protsessid, mis üksteist kuidagi ei mõjuta. Sellised protsessid on seetõttu täitmisel täiesti iseseisvalt ning ei mõjuta (ega ole ka mõjutatud) teiste protsesside töö tulemustest. Sõltumatuid protsesse nimetatakse tihti ka paralleelseteks protsessideks: sõltumatuid protsesse on võimalik täita paralleelselt. Koopereeruvad protsessid on protsessid, mis võivad üksteise tööd mõjutada ning mis seepärast peavad arvestama kõigi sellest tulenevate mõjutustega. Kui paralleelsete protsesside täitmisel ei teki erilisi probleeme, siis koopereeruvate protsessidega on olukord mõnevõrra keerulisem: need protsessid peavad küll saama omavahel suheldud, kuid endiselt peab olema tagatud erinevate protsesside andmete kaitstus teiste protsesside lubamatu pöördumise eest. Kuna arvutis on mitmeid ressursse, mille poole tohib pöörduda ainult üks protsess korraga, siis üks peamisi probleeme on vastastikuse välistuse probleem. Nimelt tihti määratakse ära kord, kus ühe protsessi poolt hõivatud ressurss ei ole kättesaadav teiste protsesside poolt. Toome siinkohal lihtsa näite, kui üks protsess kirjutab midagi mõnda faili, siis lukustatakse see fail kuni töö lõppemiseni ning ükski teine protsess sinna vahepeal kirjutada ei saa, selleks on operatsioonisüsteemis realiseeritud võimalus lukustada fail ühele protsessile. Samalaadse näite võib tuua ka klaviatuuri puhul: kui kaks või enam protsessi töötavad samaaegselt, siis klaviatuuri katkestuse saabumise puhul peab olema kindlaksmääratud, milline protsess reageerib saabunud infole. [4]

Lõime mõiste

Iga protsess koosneb vähemalt ühest lõimest (ik thread), see on peaprogramm, samas võib protsess täitmise käigus luua uusi lõimi.

Iga protsess koosneb vähemalt ühest lõimest, lõim (thread) on lihtsam (kergekaaluline) protsess. Protsess ja tema lõimed moodustavad tegumi (task)

Riistvaratootjad on muuhulgas mõelnud välja mitmeid tehnoloogiaid lõimede töötlemise lihtsustamiseks, tuntum neist on kindlasti Inteli tehnoloogia Hyper-Threading. See on tehnoloogia, mis üht füüsilist protsessorit võimaldab operatsioonisüsteemil virtuaalselt tõlgendada kahe eraldi protsessorina ning seeläbi ühel ajahetkel võtta operatsioonisüsteemilt täitmiseks kaks erinevat lõime üheaegselt. Nii saavutatakse kuni 30% jõudluse kasv.
[Wikipedia.org]

Kontekstivahetuse mõiste

Täitmisel olevat protsessi vahetades peab kindlasti salvestama eelmise protsessi hetkeseis ja laadima järgmise protsessi eelnevalt salvestatud oleku, et tööd jätkata.

Täitmisel oleva protsessi vahetust koos sinna juurde kuuluvate tegevustega nimetatakse kontekstivahetuseks.

See on reeglina üsna ajamahukas tegevus ning täpne aeg, mis kontekstivahetuseks kulub sõltub paljuski tarkvarast. Sellest tulenevalt tuleb kontekstivahetusi planeerida piisavalt harva, sest muidu võib tekkida olukord, kus operatsioonisüsteem kulutab täitmisel olevate protsesside vahetamisega samas suurusjärgus aega (või rohkemgi), kui protsesside täitmisega tegelemiseks. [4]

Creative Commons Licence
"Raalprojekteerimine" by Eduard Brindfeldt and Urmo Lepiksoo is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Estonia License .