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

OPERATSIOONISÜSTEEMID

Mäluhaldus

Muutmälu ehk operatiivmälu ehk põhimälu ehk suvapöördusmälu (ka: RAM (inglisekeelne lühend sõnadest random access memory) on digitaalseadmetel mälu, kust saab andmeid lugeda, kustutada ja kuhu saab andmeid juurde kirjutada. Operatiivmälu sisu on reeglina ajutise iseloomuga, see tähendab, et kui seadmel vool välja lülitada, siis läheb kogu info kaotsi. Muutmälu meediavormingutena on näiteks arvutis muutmälu plokid.
[Wikipedia.org]

Kuna arvutis on piiratud hulk operatiivmälu, tingimustes kus töötavaid protsesse on rohkem kui üks ja kus kõik protsessid vajavad töötamiseks mingit hulka operatiivmälu tuleb operatiivmälu erinevate protsesside vahel jagada. Mäluhaldusega tuleb tagada, et iga töötav protsess saab oma kasutusse vajaliku hulga mäluruumi ning vajadusel suunab mäluhaldur vähemkasutatavad protsessid operatiivmälu asemel kasutama saalemälu.

Saalemälu ehk virtuaalmälu on võimalus, kus operatiivmälu laiendusena kasutatakse ära osa kõvakettaruumist. Sellisel juhul jäetakse protsessile mulje, et vajalik info asub operatiivmälus, tegelikult kirjutatakse ja loetakse seda hoopis kõvakettalt. Erinevates operatsioonisüsteemides on see funktsioon realiseeritud erinevalt: UNIXi laadsetes operatsioonisüsteemides kasutatakse selleks reeglina spetsiaalselt selleks otstarbeks eraldatud kõvaketta loogilist osa ehk partitsiooni. Microsoft Windows operatsioonides samal otstarbel kasutuses eraldi fail või failid. [4]

Ressursside haldamist teostatakse tihti kasutades riistvaralisi vahendeid: näiteks on riistvaras realiseeritud võimalus kaitsta erinevate protsesside poolt hõivatud mäluruumi nii, et teised protsessid sinna ligipääsu (või kirjutamisõigust) ei oma, samuti on saalemälu tugi riistvaraline jne. Lihtsustatult võib seega öelda, et kasutaja andmed on tihti operatsioonisüsteemi poolt kaitstud kasutades riistvaralisi vahendeid. [4]

Programmi võib vaadelda kui käskude ja andmete jada, mis tavaliselt asub mõnel andmekandjal (tüüpiliselt siis kõvakettal). Kui nüüd programm käivitada, siis loetakse see hulk infot mällu ning protsessor hakkab mälust käske ja andmeid lugedes protsessi täitma. Igale protsessile eraldatud mälu jagatakse lehekülgedeks (pages), nii et iga lehekülg on tavaliselt 4kB. Lehekülgedel pannakse vastavusse loogilised aadressid (mäluaadressid, mida näeb ja saab kasutada protsess) ning füüsilised aadressid (mäluaadressid, mida mäluseade tegelikult näeb ja kasutab). Tegelikult on sellise tegevuse jaoks olemas lausa riistavaline seade MMU (Memory Management Unit), mis tegelebki riistvara tasemel loogiliste ja füüsiliste aadresside ühendamisega. MMU on näiteks Inteli protsessoritel sisseehitatud alates protsessorist 80386.

Virtuaalmälu abil on võimalik protsessile anda virtuaalselt järjestikust mäluruumi, ilma, et see info tegelikult üldse järjestikuliset mälus asetseks.

Sellised leheküljed moodustavad omakorda segmente ning ühe protsessiga seotud mälu lehekülgi nimetatakse töökomplektiks (working set). Tegelikult võivad erinevad leheküljed kuuluda veel lisaks ka erinevate protsesside töökomplektide hulka. Lehekülgede kasutamine lisab omamoodi ka turvalisust, nimelt on igal lehekülje suhtes võimalik protsessile anda kolme liiki õiguseid: lugemis-, kirjutamis- ja käivitusõigus. Nii võib juhtuda, et ühel protsessil on võimalik küll lehekülge kasutada, kuid samas ei ole võimalik protsessil teada saada, mis andmed sellel leheküljel on. Protsessid otse füüsiliste aadresside poole üldjuhul pöörduda ei tohi ning seepärast peab neid õiguseid järgima.

Mälulehekülgede saalimine

Lisaks sellele, et mälu leheküljel kirjeldatud füüsilised mäluaadressid võivad asuda muutmälus, on kaasaegsel riistvaral ja operatsioonisüsteemidel võimalik kirjutada ka osa lehekülgi tegelikult hoopis kõvakettale. Seeläbi saab protsessidele jagada rohkem mäluruumi, kui arvutisüsteemil tegelikult füüsilist muutmälu üldse on. Sellist tegevust nimetatakse mälulehekülgede saalimiseks (SWAP).

Kui lehekülgede saalimist kasutatakse koos virtuaalmäluga, siis peab operatsioonisüsteem järge pidama kasutusel olevatel lehekülgedel ja neil lehekülgedel, mida enam ei kasutata või mis ei ole mõnda aega kasutuses olnud. Kui opsüsteemil läheb lehekülge vaja või kui mõni programm nõuab saalealale kirjutatud lehekülge, siis kirjutab OS mingi lehekülje saalealale ja toob teise lehekülje mällu. (Sellest, kuidas opsüsteem otsustab, milliseid lehekülgi sisse või välja saalida, räägib lehekülgede asenduspoliitika.) Sel moel saab kasutada rohkem operatiivmälu, kui 17 arvutil tegelikult on. [Wikipedia.org]

Tehnoloogia tööpõhimõte on tegelikult lihtne: kuna protsess ei tea nii kui nii kus füüsiliselt leheküljed asuvad, siis võib operatsioonisüsteem vähemkasutatavad (või kõige vanemad, oleneb kasutatavast algoritmist) leheküljed mälust kõvakettale kirjutada ning kasutada vabanenud mäluosa mingite muude andmete jaoks. Kui nüüd protsessil tekib vajadus mälust väljakirjutatud lehekülje järgi, siis tekib leheküljepöördusviga (page fault), seejärel otsustab operatsioonisüsteem kas selline lehekülg on olemas ning kui on tuleb leida vaba mäluruum (vajadusel mõni teine lehekülg mälust välja saalida) ning vajalik lehekülg mällu tagasi tuua. Kui vajalik lehekülg on mällu tagasi toodud, siis käivitatakse viimane käsk uuesti ning protsess saab täitmiseks vajalikud andmed.

Pukslemise mõiste

Kui protsessile vajalik mälulehekülg ei asu mälus, siis juhul kui protsess selle mälulehekülje poole pöördub tekib leheküljepöördusviga (page fault). Leheküljepöördusvea tekkimisel jääb protsessi täitmine ootele ning vajalik mälulehekülg tuuakse mällu. Kui mälus asuvate lehekülgede arv pole piisavalt suur, siis muutub leheküljepöördusvigade väga suureks, ning protsessori efektiivne tööaeg väheneb. Operatsioonisüsteem võib aga seda olukorda tõlgendada selliselt, et kuna protsessori aega on üle, siis võib protsesse juurde anda, see omakorda tekitab aga veel suurema leheküljepöördusvigade arvu. See võib lõppeda halvimal juhul sellega, et protsess tegeleb ainult saalimisega.

Olukorda, kus protsess tegeleb peaasjalikult mälulehekülgede saalimisega, nimetatakse pukslemiseks (thrashing) [Wikipedia.org]

Mäluhierarhia mõiste [4]

Mälu- ja varundusseadmete jaotust arvutisüsteemis nimetatakse mäluhierarhiaks (memory hierarchy). Mõte seisneb selles, et erinevatel mälutüüpidel on erinev pöördusaeg, kiirus ja hind. Mida suurem on kiirus ja väiksem pöördusaeg, seda suurem on ka mäluseadme hind ühe mäluühiku kohta (ning seda väiksem on ka sellise mälu kogus arvutisüsteemis).

Mäluhierarhia jagab mälu- ja varundusseadmed nii, et kõrgemates kihtides on seadmed mille pöördusaeg ja kiirus on suurem ning mille kogus arvutisüsteemis on väiksem.

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