# C.2 Operatsioonisüsteemid

Selle teema materjale läbi töötades õpid tundma operatsioonisüsteemide tööpõhimõtteid.

# C.2.1 Põhimõtted

Selle alateema materjale läbi töötades õpid:

  • Kirjeldama operatsioonisüsteemi funktsioonid
  • Välja tooma erinevad operatsioonisüsteemide tüübid
  • Kirjeldama rakendusliidese otstarve
  • Kirjeldama kuidas tarkvara haldab ressursse.

# C.2.1.1 Personaalarvuti operatsioonisüsteemi funktsioonid

Õppekava

Kirjeldada operatsioonisüsteemi (OS) funktsioone, mida on vaja üldotstarbelisele arvutile.

Personaalarvuti koosneb riistvara- ja tarkvarakomponentidest. Viimase mõiste alla kuuluvad:

Operatsioonisüsteem (Operating System edaspidi OS) vahendab arvutikasutaja suhtlust arvuti riistvaraga. OS'i eesmärk on muuta arvuti kasutamine mugavaks, võimaldades käivitada kasutajarakendusi ja aidates lahendada veaolukordi.

Operatsioonisüsteem (Operating System edaspidi OS) vahendab arvutikasutaja suhtlust arvuti riistvaraga. OS'i eesmärk on muuta arvuti kasutamine mugavaks, võimaldades käivitada kasutajarakendusi ja aidates lahendada veaolukordi.

  • Rakendustarkvara – erinevad rakendusprogrammid, mis pakuvad kasutajale vajalikku funktsionaalsust tööülesannete täitmiseks arvutil.

OS vahendab rakendusprogrammide pöördumist riistvarakomponentide poole läbi spetsiaalsete liideste. See võimaldab rakendustele juurdepääsu süsteemi riistvararessurssidele jättes OS'i hooleks riistvara poole pöördumise spetsiifika, riistvararessursside halduse ning konfliktide välistamise.

Tüüpilise personaalarvuti OS'i funktsioonid on:

  • Kasutajakeskkond seadmetega töötamisel
  • Automaatne sisend-väljund (edaspidi S/V) seadmete konfimine
  • Rakenduste liides seadmete poole pöördumiseks
  • Keskkond rakenduste loomiseks
  • Ressursi (CPU, RAM, failisüsteem, jne) jagaja
  • Arvutivõrgu toetus (protokollid, veebilehitseja)
  • Turvavahendid (autentimine, tulemüür, failisüsteemi ACL, krüpteerimine, installi- ja kasutuspiirangute konfimine tavakasutajatele).

Kaasaegsete OS'ide arendusel tehakse tööd, et toetada uuemat riistvara, uusi rakendusi ja kaitsta OS'i turvaohtude eest. Riistvarakomponentide osas on arengut suunanud multiprotsessorsüsteemide kiire areng, kõrged taktsagedused, massmäluseadmete suurenenud andmemahud. Rakenduste osas on OS'i arengu mõjutajateks multimeediarakendused, internet ja võrgundus, klient/server lahendused ja virtualiseerimine.

Nende väljakutsete mõjul tehakse OS'ide arendamiseks tööd järgmistes kategooriates:

  • Mikrokernel-arhitektuur Microkernel architecture – kompaktne kernel, mida toetavad eraldi lisakomponendid
  • Hargtöötlus Multithreading – võimaldab protsessi käivitamise jagada lõimedeks, mida saab käivitada paralleelselt
  • Sümmeetriline multitöötlussüsteem Symmetric multiprocessing – protsessorid jagavad sama põhimälu ja S/V moodulit ning võivad käivitada võrdselt kõiki protsesse.
  • Objekt-orienteeritud disain – võimaldab lisada laiendusi kompaktsele kernelile, kohandada OS'i ja lihtsustab jagatud tööriistade arendamist.
  • Hüperviisor Hypervisor - virtualiseerimise haldur, mis paigaldub õhukese tarkvara kihina riistvara ja kerneli vahele ning võimaldab ära kasutada riistvaralise virtualiseerimise toetuse ja hallata nii mitmeid erinevaid operatsioonisüsteeme samas füüsilises masinas.

Operatsioonisüsteemi põhikomponendid on kokku võetud ainulaadsesse programmi, mida nimetatakse kerneliks ehk tuumaks. Kernel võib olla ehitatud kas suure monoliitse arhitektuuriga (monolithic architecture), mille puhul kernel sisaldab kõike vajaliku OS'i funktsioneerimiseks ja sealhulgas plaanuri, failisüsteemi, võrgunduse, seadmedraiverid, mäluhalduse jne. Mikrokernel-arhitektuuri puhul on kernelis ainult kõige põhilisemad funktsioonid nagu protsesside plaanur, protsessidevaheline kommunikatsioon, katkestuste ja erandite töötlus ja mitmeprotsessorsüsteemi sünkroniseerimine. Ka sisaldab mikrokernel alamprotseduure ja baasobjekte, mida kernelit ümbritsevad ja kernelirežiimis töötavad komponendid saavad kasutada.

Microsoft Windows OS'id on modulaarsed ja kasutavad mikrokernel-arhitektuurile sarnast lähenemist. Linux OS kasutab monoliitse kerneliga arhitektuuri. Windowsi kerneli ümber on koondatud muud kernelirežiimis töötavad komponendid, mis pakuvad kõiki OS'i teenuseid nagu mälu haldus, protsessi ja lõimede haldus, turvalisus, S/V, võrgundus, protsesside vaheline kommunikatsioon ja graafilise kasutajaliidese funktsioonid. Kernelirežiimis töötavad ka seadmete draiverid, mis muundavad S/V funktsioonide käske spetsiifilisteks riistvaraseadmete S/V päringuteks. Kernelirežiimis töötavad komponendid peavad olema väga hästi testitud ja draiverid OS'iga ühilduvad, sest häired nende töös muudavad ebastabiilseks kogu OS'i.

Selleks, et kaitsta OS'i kasutajarakenduste eest on OS'is kasutusel erinevad protsessori režiimid kernelile ehk kernelirežiim _kernel mode või supervisor mode ja kasutajarakendustele ehk kasutajarežiim user mode. Kasutajarakendused töötavad kasutajarežiimis ja OS'i rakendused (süsteemi teenused ja seadmete draiverid) töötavad kernelirežiimis. Selles režiimis rakendused jagavad ühtset virtuaalset aadressiruumi. Kernelirežiim käivitatakse protsessori privilegeeritud käivitusrežiimis, mis tagab juurdepääsu kõigile protsessori käskudele ja kogu süsteemimälule. Erinevate töörežiimide rakendamine võimaldab välistada, et vigane kasutajarakendus ohustaks süsteemi kui terviku stabiilsust.

# C.2.1.2 Operatsioonisüsteemide erinevad tüübid

Õppekava

Välja tuua erinevat OS-i tüübid nagu pakktöötlus, ajajaotuslik, reaalajaline.

Operatsioonisüsteemide jaotus töötluse liigi järgi:

  • Pakktöötlus batch – selle puhul on tegemist OS'iga, kus mingi ülesande täitmiseks peab olema ettevalmistatud valmis programm, mida siis järjest täidetakse. Kasutaja ei saa sekkuda programmi täitmisse ehk teisisõnu interaktiivsus sellise OS'i puhul puudub. Võimalik on tööde lisamine tööjärjekorda, mis siis järjest läbi protsessitakse.

  • Ajajaotuslik time-sharing – sellise OS'i puhul jagab OS protsessori aja erinevate rakendusprogrammide käivitamiseks kvantumiteks, mida jagatakse protsessidele vastavalt eelseadistatud reeglitele. Ajajaotuslikud OS'id võimaldavad käivitada mitmeid rakendusi samaaegselt (multitasking) ja võimaldavad mitmel kasutajal töötada samas arvutis samaaegselt. Ajajaotuslik OS on interaktiivne. Kaasaegsed opratsioonisüsteemid on ajajaotuslikult üles ehitatud.

  • Reaalajaline real-time – sellised OS'id on missioonikriitilistele rakendustele, kus on vajalik reageerimise ajaline täpsus. Näiteks kuuluvad selliste rakenduste alla meditsiinilise jälgimise rakendused, auto pidurdamisel rataste blokeerumist takistav rakendus, tuumaelektrijaama juhtimissüsteem, jne.

# C.2.1.3 Rakendusliides

Õppekava

Kirjeldada rakendusliidese (Application Programming Interface) ja tuua rakendusliidese näiteid nagu Java API, Windows.

Rakendusliides (API – Application Programming Interface) on liides, mis võimaldab luua ühenduse erinevate programmide vahel.

Rakendusliides võib olla kaasatud erinevat moodi:

  • Programmeerimiskeskkonda integreeritud näiteks C++ või Java API
  • Spetsiifiliseks otstarbeks näiteks Google Maps API või Java API XML veebiteenusele. Google Maps API abil saab veebiteenuse pakkuja oma veebilehel rakendada kaarditeenust asukohtade lokaliseerimiseks kaardil läbi Google'i poolt pakutava rakendusliidese.
  • OS'i rakendusliides on liides, mida kasutavad rakendused OS'i teenustele juurdepääsemiseks. Selline rakendusliides on näiteks Windows API. Viimane pakub rakendustele kõiki OS'i teenuseid ja igale OS'i teenusele vastab üks API protseduur.

Erinevad teenused, mis läbi Windows API rakendusliidese kättesaadavaks tehakse on järgmised:

  • Baasteenused Base Services, mille hulka kuuluvad protsessihaldus, mäluhaldus, S/V funktsioonid ja turvalisus.
  • Komponenditeenused Component Services – rakenduste omavaheliseks suhtlemiseks
  • Kasutajaliidese teenused User Interface Services – erinevate menüüde ja akendega suhtlemiseks
  • Graafika ja multimeedia teenused Multimedia and Graphics Services
  • Sõnumivahetus ja koostöö Messaging and Collaboration
  • Võrgundus Networking
  • Veebiteenused Web Services

Kaasaegsed OS'id on juhitavad katkestuste kaudu Interrupt driven. Sündmused käivituvad katkestuste või erandite poolt. Erandid Exceptions või Trap on tarkvara poolt genereeritud katkestused kas veaolukorra tekkimisel või kasutajarakenduse poolt OS'i teenuse nõudmiseks. Erinevate katkestuste täitmiseks on eraldi alamprogrammid OS'is. API poole pöördumine toimub kasutajarakendustel süsteemikutsete System Call abil. Turvakaalutlustel ei saa rakendused süsteemikutseid otse välja kutsuda, vaid vajavad selleks katkestuste mehhanismi, millega tekitatakse tarkvaraline katkestus protsessorile, mis omakorda põhjustab katsetuste halduri käivituse OS'i kernelirežiimis.

Käsk, millega süsteemiteenus välja kutsutakse sõltub protsessorist. Näiteks kaasaegsetel Inteli protsessoritel on see käsk sysenter ja selle väljakutse kasutamiseks salvestab OS kerneli süsteemihalduri alamprogrammi aadressi spetsiaalses registris MSR (Machine Specific Register), mis on seotud selle käsuga. Käsu käivitamine tekitab lülituse kernelirežiimi ja süsteemiteenuse haldurprogrammi käivituse. Süsteemiteenuse number loetakse läbi protsessori EAX registri ja läbi EDX registri antakse edasi väljakutse argumendid. Kasutajarežiimi naasmine toimub protsessori sysexit või iretd käsu abil. Süsteemiteenuste teenindusprogrammide aadressid on spetsiaalses tabelis, kust süsteemiteenuste haldur soovitud teenuse tuvastab.

# C.2.1.4 Protsess

Õppekava

Kirjeldada kuidas tarkvara haldab ressursse.

OS'i ülesanne on protsesside haldus ehk OS peab jagama protsessidele ressursse, võimaldama protsessidel vahetada informatsiooni teiste protsessidega ja võimaldama sünkroniseerimist protsesside seas. Protsess on kasutajarakenduse töötav koopia ja protsesside haldamiseks ning neile ressursside jagamiseks peab OS haldama iga protsessi jaoks andmestruktuuri, mis kirjeldab protsessi identiteeti, staatust, seotud ressursse, jne, et rakendada kontrolli protsessi üle.

Protsessi iseloomustavad järgmised omadused:

  • Identifikaator: unikaalne number, mis eristab protsessi teistest protsessidest
  • Staatus: näitab protsessi jooksvat seisundit (näiteks käivitatud)
  • Prioriteet: prioriteet võrreldes teiste protsessidega
  • Programmiloendur: järgmise käsu aadress, mis tuleb käivitada
  • Mälulokaator: mäluaadressid programmi koodi ja andmete asukohta
  • Kontekstandmed: protsessori registrite seis protsessi käivitamisel
  • S/V staatuse info: info täitmisel S/V päringutest, protsessiga seotud S/V seadmed, protsessi poolt avatud failide loetelu, jne.
  • Aruandlusinfo: kasutatud protsessori aeg, ajapiirangud, jne.

Seda infot talletatakse andmestruktuuris, mida nimetatakse protsessi juhtplokiks Process Control Block, mida haldab OS. Protsessi juhtplokk sisaldab piisavalt infot, et protsessi saab vajadusel katkestada ja hiljem jätkata, nagu oleks vahepeal juhtunud katkestus. Kui protsess katkestatakse siis jooksvad väärtused nagu programmiloendur ja protsessori registrite seis salvestatakse vastavates protsessi juhtploki väljades ja protsessi seisund muudetakse täitmisel Execution staatusest kas blokeerituks Blocked või täitmiseks valmis Ready staatusesse.

Joonis 2‑4. Protsesside staatuse ümberlülitumise võimalused (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat))

  • Täitmiseks valmis staatus tähendab, et protsess on ajastatud tööjärjekorda ja ootab protsessoriressursi vabanemist, et oma tööga edasi minna
  • Täitmisel protsess kasutab parajasti talle määratud protsessoriressurssi.
  • Blokeeritud seisu seatakse süsteemikutse käivitanud protsess, mis ootab mingi S/V operatsiooni täitmist oma töö jätkamiseks.

# Ressursside haldus protsessidele

Riistvara ressursse kasutavad nii OS kui kasutajarakendused. Aktiivsed rakendused saavad kasutada protsessori ressurssi protsessidena. Aktiivseid protsesse on korraga töös palju ja ressursid on piiratud. OS vastutab arvuti riistvararessursside halduse eest, kasutades enda käivitamiseks neidsamu ressursse. Ta peab jagama protsessoriressurssi protsesside tarbeks ja mitmeprotsessorilise süsteemi puhul jagama protsesside käivitamise üle kõigi protsessorite. Teine oluline ressurss, mida OS koos protsessori mäluhaldusriistvaraga jagab on põhimälu. OS otsustab ka millal mingi rakendus saab juurdepääsu S/V seadmele ja kontrollib failidele juurdepääsu ja failide kasutust.

Ressursside jagamise ja planeerimise poliitika peab arvestama järgmisi faktoreid:

  • Erapooletus: kõikidele protsessidele, mis soovivad juurdepääsu samale ressursile, tuleb jagada võrdselt ja õiglaselt vastavat ressurssi.
  • Prioriteetide seadmise võime: eri töödel võivad olla erinevad prioriteedid ja OS peab suutma teha ressursijagamise ja planeerimise otsused kõikidest nõuetest lähtuvalt ning suutma teha neid otsuseid dünaamiliselt vastavalt asjaolude muutumisele.
  • Efektiivsus: OS peab püüdma maksimeerida tulemuslikkust ja minimeerida viivitusi.

OS haldab järjekorda protsessidest, mis ootavad mingit ressursi. Üldine strateegia on anda igale protsessile järjekorras võrdne aeg ressurssi kasutada. Seda nimetatakse ringiratast (Round-robin) tehnikaks. Täiendavate prioriteetide seadmisega on võimalik protsessidele ressursijagamist ühes või teises suunas mõjutada.

S/V ressursside kasutamiseks on igal S/V seadmel oma järjekord. OS otsustab, milline protsess saab õiguse esimeses järjekorras seadet kasutada. Teatud seadme puhul võib olla põhjendatud ressursside jagamise järjekorda korrigeerida, et seadme andmevahetusoperatsiooni viivitused oleksid minimaalsed. Näiteks kõvaketta poole pöördumisel on mõttekas järjestada päringud nii, et seadmelt andmete lugemine oleks korraldatud võimalikult järjest, kuna kõvaketta pea ümberpaigutamine sisaldab olulisi viivitusi andmevahetusel.

Seadmete draiverid on need liidesprogrammid, mille kaudu OS saab juurdepääsu konkreetse seadmega töötamiseks. Seadmete draiverid töötavad kernelirežiimis ja muundavad S/V funktsioonide käske spetsiifilisteks riistvaraseadmete S/V päringuteks.

Protsessid saavad kasutada OS'i teenuseid nagu näiteks pöörduda S/V seadme poole kasutades süsteemikutset. Kui katkestust teenindav programm on täidetud naaseb OS uuesti protsessi käivituse juurde.

Allpool on loetletud sammud rakenduse pöördumisel S/V seadme poole:

  • Rakendus saadab päringu S/V poole pöördumiseks kasutades süsteemikutset kernelile
  • Kerneli S/V haldur võtab päringu vastu ja saadab päringu edasi seadme draiverile
  • Seadme draiver eraldab mälupuhvri andmete lugemiseks ja annab käsu edasi seadme kontrollerile selle juhtregistri mäluaadressi kaudu
  • Seadme kontroller suhtleb konkreetse seadmega, et täita andmevahetusoperatsioon
  • Draiveri poolt saab määrata kuidas andmevahetusoperatsioon läbi viiakse ja kas draiver jälgib selle kulgu või on andmevahetusoperatsioon hallatud DMA kontrolleri poolt, mis kutsub esile katkestuse protsessorile kui andmevahetus on täidetud
  • Protsessor võtab katkestuse vastu ja suunab selle täitmise katkestust teenindavale alamprogrammile, mis salvestab andmed seadme draiveri puhvris ja teavitab sellest seadme draiverit ning naaseb katkestuse täitmisest
  • Seadme draiver saadab andmevahetuse info edasi kerneli S/V haldurile
  • Kerneli S/V haldur edastab andmed päringu alustanud protsessile ja vabastab protsessi blokeeritud staatusest
  • Järgmisel protsessi täitmisel protsessori poolt jätkab protsess töötamist süsteemikutse režiimist tagasipöördumisega.

Microsoft Windows OS'is on seadmete S/Voperatsioonid hallatud kasutades järgmisi komponente:

  • S/V haldur (I/O Manager) on keskne komponent S/V operatsioonidele, mis ühendab rakendused ja süsteemikomponendid virtuaalseteks, loogilisteks ja füüsilisteks seadmeteks ja defineerib infrastuktuuri, et toetada seadmete draivereid.
  • Seadme draiver (Device Driver) on S/V liides konkreetsele seadmele. Seadme draiver saab käske S/V haldurilt ja seadmedraiverid informeerivad S/V haldurit käsu täitmisest.
  • PnP (Plug and Play) haldur töötab koos S/V halduriga, et jagada riistvararessursse ning tuvastada ja reageerida seadmete lisamisele ja eemaldamisele
  • Võimsuse haldur (Power Manager) töötab koos S/V halduriga ja seadmete draiveritega, et hallata süsteemi ja seadmete võimsussäästurežiime
  • Registri andmebaas (Registry) salvestab riistavaraseadmete kirjeldust ja draiverite initsialiseerimise- ja konfiguratsiooniseadeid.
  • INF failid, draiverite installifailid, sisaldavad seadet kirjeldavat spetsiifilist infot ja draiverifailide asukohti.

Riistavara abstraktsioonikiht (HAL – Hardware Abstraction Layer), isoleerib draiverid protsessori ja katkestuste kontrolleri spetsiifikast läbi rakendusliideste, mis peidavad platvormidevahelised erinevused.

# C.2.1 Kordamisküsimused

  1. Milline ei ole operatsioonisüsteemi funktsioon?
  • Võimaldada mugava kasutajaliidese abil käivitada kasutajarakendusi
  • Pakkuda arenduskeskkonda rakenduste loomiseks
  • Võimaldab kasutajarakendustel suhelda riistvaraga
  1. Kuidas suhtleb OS riistvaraga:
  • Otse
  • Läbi draiverite
  • Läbi rakendusliideste
  1. Kernelirežiimis töötavad:
  • Kõik protsessid
  • Süsteemi teenused
  • Kasutajarakendused
  1. Mis on draiveri funktsioon?
  • Draiver vahendab käske riistvara seadmele
  • Draiver vahendab rakendusliidese infot kerneliga
  • Draiver vastab kasutajarakenduse süsteemikutsele
  1. Millised on võimalused protsessi ressursikasutuse mõjutamiseks?
  • Muuta prioriteeti
  • Muuta kontekstiinfot
  • Käivitada protsess kernelirežiimis

# 2.2 Samaaegsed ja paralleelprotsessid

Selle alateema materjale läbi töötades õpid:

  • Tooma välja samaaegsuse põhjused operatsioonisüsteemis
  • Määratlema vastastikuse välistamise probleem
  • Määratlema töötlus ja multitöötlus
  • Määratlema lõimelisus
  • Kirjeldama kontetstkommutatsiooni operatsioon.

# C.2.2.1 Samaaegsuse põhjused

Õppekava

Tuua välja samaaegsuse põhjused OS-i sees.

Kaasaegsed OS'id peavad võimaldama mitmete kasutajarakenduste samaaegset töötamist ja selle saavutamiseks jagatakse protsessori aeg kvantumiteks, mida OS siis omakorda jagab erinevatele kasutajarakendustele. Kasutajarakendused omakorda on jagatud üheks või mitmeks protsessiks. Niimoodi protsesse järjest vahetades tekitatakse kasutajas illusioon, et mitu rakendust töötab samaaegselt.

Joonis 2‑5. Protsessori tööaja jagamine protsessidele (P1 – protsess 1; P2 – protsess 2; P3 – protsess 3) (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat))

Eri protsesside samaaegset teostamist haldab OS'i plaanur. Plaanur valib järgmise protsessi, mida protsessor hakkab täitma. OS laseb protsessoril täita iga protsessi mingi ajaperioodi jooksul ja seejärel võtab uuesti enda kätte kontrolli süsteemi üle, et valida järgmine täitmisele kuuluv protsess. Plaanimise reeglid sõltuvad OS'i liigist. Ringiratast (Round-robin) on plaanuri algoritm, mida kasutatakse interaktiivsetes süsteemides. See teostab protsesse tsükliliselt, määrates igale protsessile ajahulga ehk kvantumi.

Joonis 2‑6. Ringiratast planeerimine (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat))

Sel viisil saab mitu protsessi kasutada protsessorit samal ajal ja igaühele neist antakse samal tasemel teenust.

Pakktöötlusega süsteemides on enimkasutatavaks reegliks lühim töö enne (SJF-Shortest Job First), mis annab prioriteedi kõige lühematele tegevustele.

# C.2.2.2 Vastastikune välistamine

Õppekava

Määratleda vastastikuse Välistamise probleem.

Vastastikuse välistamise probleem on kriitilise tähtsusega operatsioonisüsteemide arendamises. See tagab, et korraga saab ainult üks protsess mingit spetsiifilist ressurssi kasutada. Vastastikuse välistamise vajadus on hädavajalik sellistel ressurssidel, mida ei saa kasutada jagatud juurdepääsuga või kui ressursi samaaegne kasutus toob kaasa ettearvamatuid tagajärgi. Näiteks kui üks protsess loeb mingilt mäluaadressilt andmeid samal ajal kui teine sinna aadressile andmeid kirjutab, siis esimene protsess võib saada vigased andmed. Üldiselt ei saa kirjutatavad ressursid olla jagatud ilma piiranguteta.

Protsessid, mis töötavad jagunevad:

  • Sõltumatud protsessid: ressursside kasutamisel võistlevad protsessid, mis ei ole teadlikud üksteisest ja nende vahel puudub infovahetus ning OS peab reguleerima nende juurdepääsu ressurssidele
  • Seotud protsessid: koopereeruvad protsessid, mis on disainitud koos töötama ja kommunikeerivad omavahel infot protsessi ID kaudu. Koopereeruvad protsessid suhtlevad andmete vahetamiseks (protsessisisene kommunikatsioon) ja toimingute õiges järjekorras teostamiseks (sünkronisatsioon).

Ressurss, mida mitu protsessi soovivad kasutada on kriitiline ressurss ja programmikood, mis kasutust nõuab on kriitiline sektsioon. Vastastikune välistamine tagab, et erinevate protsesside kriitiliste sektsioonide samaaegset käivitust ei toimuks.

Joonis 2‑7. Protsesside vastastikune välistamine (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat))

Ressursijagamise probleemi lahendamiseks kasutatakse jagatud ressursside haldamist semaforiga (Semaphor) ehk OS'i poolt rakendatud andmestruktuuriga, mis koordineerib seadmele juurdepääsu spetsiaalse API kaudu.

Kui protsess nõuab juurdepääsu ressursile kutsutakse välja semafori funktsioon:

  • Kui ressurss on vaba („roheline semafor"), siis OS muudab selle värvi keelavaks („punane semafor") ja laseb protsessil ressurssi kasutada
  • Kui ressurss on hõivatud siis OS paneb protsessi semafori järjekorda ja seab protsessi ooteseisundisse

Kui ressurss vabaneb, kontrollitakse semafori funktsiooniga kas seadme järjekorras on teisi protsesse:

  • Kui on siis seatakse järjekorras programm täitmiseks valmis staatusesse, jättes semafori oleku hõivatuks
  • Kui järjekord on tühi seatakse semafori olek roheliseks.

Olukorda, kui mitu protsessi ootavad vastastikku teineteise kasutuses oleva ressursi vabanemist, et lõpetada enda toiming, nimetatakse ummikuks (Deadlock).

# C.2.2.3 Töötlus ja multitöötlus

Õppekava

Määratleda töötlus ja multitöötlus.

Arvuti protsess on rakenduse töötav koopia ja erinevate protsesside samaaegne käivitamine võib toimuda nii ühe protsessoriga kui ka mitme protsessoriga arvutis. Mitmetegumilisus (Multitasking) on OS'i tehnika, et jagada ühe protsessori ressurssi erinevate protsesside vahel. Kerneli töö on tagada mehanismid, et sünkroniseerida eri protsesside töö ja tagada ressursside eksklusiivne kasutus. Kui arvuti sisaldab rohkem kui ühte protsessorit on võimalik eri protsesside käivitamine samaaegselt erinevatel protsessoritel või mitmetuumalise protsessori puhul erinevatel tuumadel. Mitmetegumilisel OS'il paistab nagu töötaksid mitu rakendust korraga aga multitöötlusega (Multiprocessing) operatsioonisüsteemil see nii käibki, käivitades erinevad protsessid erinevatel protsessoritel.

Multitöötlusega süsteem võib olla:

  • Sümmeetriline (SMP – Symmetric Multiprocessing), mispuhul kõik arvutis töötavad protsessorid on võrdsed ja nendel saab käivitada võrdselt kõiki rakendusi. Kõik protsessorid on omavahel ühenduses ühise siini kaudu ja jagavad sama põhimälu ja S/V ressursse.
  • Asümmeetriline (AMP – Asymmetric Multiprocessing), mille puhul on eraldi protsessor OS'i kerneli jaoks ja ülejäänud protsessorid kasutajarakenduste käivitamiseks.

Multitöötlussüsteemi tehnoloogia erivariant on hüper-hargtöötlus (Hyper-Threading). Selle tehnoloogia loojaks on Intel ja see võimaldab jagada füüsilise protsessori mitmeks loogiliseks protsessoriks. Loogilistel protsessoritel on eraldi registrid aga nad jagavad sama töötlusmoodulit ja vahemälu.

OS, mis toetab SMP opereerimist, peab kasutajale paistma nagu mitmetegumiline ühe protsessoriga süsteem. Arendajad võivad luua rakendusi teadmata, kas need töötavad ühel protsessoril või mitmel. Seega peab multitöötlusega OS pakkuma kõiki funktsioone, mida pakub mitmetegumiline OS ja lisaks täiendusi mitme protsessori rakendamiseks.

Disaini eripärad on järgmised:

  • Samaaegsete paralleelsete protsesside toetus: kerneli rakendused peavad võimaldama käivitada kerneli programmikoodi samaaegselt eri protsessoritel. Kerneli tabelid ja andmestruktuurid peavad olema õieti hallatud, et ära hoida ummikuid või vigaseid operatsioone.
  • Plaanur: tuleb ära hoida konfliktid juhtudel kui sama protsessi eri osad käivitatakse samal ajal eri protsessoritel.
  • Sünkroniseerimine: jagatud ressurssidele juurdepääsu juhtimine nii, et oleks tagatud vastastikune välistamine.
  • Mäluhaldus: vaja koordineerida erinevate protsessorite mäluhaldus
  • Tõrkekindlus: OS peab võimaldama ühe protsessori tõrke korral töö jätkamist.

# C.2.2.4 Lõimelisus

Õppekava

Määratleda lõimelisus.

Hargtöötlus (Multithreading) on OS'i võime toetada mitmeid samaaegseid käivitusharusid ühe protsessi sees. Iga protsess koosneb vähemalt ühest lõimest. Protsess ja tema lõimed moodustavad tegumi (task). Kui protsess töötab ühelõimelisena siis on see protsess esitatud protsessi juhtploki, kasutaja aadressiruumi ja pinumälu aadressidega. Töötamise ajal kontrollib protsess protsessori registreid ja registrite seis salvestatakse kui protsess ei tööta.

Hargtöötlusega keskkonnas on samuti protsessiga seotud ainult üks protsessi juhtplokk ja kasutaja aadressiruum aga lisaks on eraldi pinumälu iga lõime jaoks ja eraldi juhplokid igale lõimele, mis sisaldavad registrite väärtuseid, prioriteeti ja muud lõime seisundiga seotud infot. Seega kõik ühe protsessiga seotud lõimed jagavad selle protsessi ressursse, nad asuvad samas aadressiruumis ja omavad juurdepääsu samadele andmetele. Kui üks lõim muudab mälus andmeid siis saavad teised lõimed muudetud andmeid lugeda ja kui üks lõim avab faili lugemiseks siis saavad ka teised sama protsessi lõimed seda faili lugeda.

Eelised, mida annab lõimede kasutamine:

  • Lõime loomine on oluliselt kiirem kui protsessi loomine
  • Lõime lõpetamine (Terminate) võtab vähem aega kui protsessi lõpetamine
  • Kahe sama protsessi lõime vahel ümberlülitumine on kiirem kui erinevate protsesside ümberlülitamine
  • Sama protsessi lõimede vahel on kommunikatsioon kiirem, kuna nad jagavad sama mälu ja faile ning ei vaja kernelit ühenduse pidamiseks.

Lõimede kasutamisel on oluline tagada koordineerimise mehanismid protsessi lõimede jaoks, et oleks tagatud õige tegevuste järjekord.

Joonis 2‑8. Protsess võib koosneda mitmest lõimest (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat))

# C.2.2.5 Kontekstkommutatsioon

Õppekava

Määratleda kontektst- kommutatsiooni operatsioon.

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

Tüüpilise ringiratast algoritmi puhul teeb OS plaanur protsessi seisundi muutmisel käivitusstaatusesse kaks operatsiooni:

  • Alglähtestab süsteemi taimeri, et tekitada katkestus protsessi käivitamiseks määratud ajakvantumi möödumisel
  • Viib läbi kontekstivahetuse

Kontekstkommutatsioonil keelatakse katkestused, salvestatakse parajasti töös olnud protsessi jooksvad väärtused nagu programmiloendur ja protsessori registrite seis vastavates protsessi juhtploki väljades ja protsessi seisund muudetakse täitmisel (Execution) kas blokeerituks (Blocked) või täitmiseks valmis (Ready) staatusesse. OS'i plaanur valib seejärel uue protsessi käivitamiseks ja kasutab selle protsessi juhtplokki, et anda käivitusjärjekord üle uuele protsessile, mille programmiloendur ja kontekstandmed laadidakse protsessori registritesse, süsteemi katkestused lubatakse ja seejärel protsess käivitatakse.

# C.2.2 Kordamisküsimused

  1. Mis on kvantum:
  • Ajaühik
  • Protsessori ajajaotus
  • Protsessi ajajaotus
  1. Vastastikune välistamine tagab:
  • Rakenduste käivitamise ajastamise
  • Ressursside poole pöördumise võimalikkuse
  • Seotud protsessidele ressursside jagamise
  • Sõltumatutele protsessidele ressursside jagamise
  1. Milline operatsioonisüsteemi omadus on väldib protsesside samaaegset ressursi poole pöördumist?
  • Mitmetegumilisus
  • Multitöötlus
  • Samaaegsus
  • Vastastikune välistamine
  1. Mis eristab protsessi lõimest?
  • Protsessi loomine on kiirem kui lõime loomine
  • Protsessil on lõimega sama mäluruum
  • Lõimed on protsessi osad
  1. Kontekstkommutatsiooni abil ei saa:
  • Rakendada mitmetegumilisust
  • Rakendada multitöötlust
  • Muuta protsessi staatust

# 2.3 Põhimälu ja massmälu haldamine

Selle alateema materjale läbi töötades õpid:

  • Kirjeldama virtuaalmälu mõistet ja virtuaalmälu haldust
  • Määratlema failisüsteemi funktsioonid.

# C.2.3.1 Virtuaalmälu

Õppekava

Kirjeldada virtuaalmälu mõistet.

Arvuti põhimälu maht on piiratud ja kui OS peab kasutama kõigi rakenduste käivitamiseks ainult põhimälu siis on piiratud ka OS'i võimalused erinevaid rakendusi laadida või pakkuda kasutajatele nende rakenduste täisfunktsionaalsust. Virtuaalmälu idee on tekitada lineaarne aadressiruum mis laiendab põhimälu kasutades massmäluseadmeid ja niimoodi võimaldades igal protsessil saada enda kasutusse suur privaatne aadressiruum. Virtuaalne mälu on mälu loogiline esitus ja ei vasta mälulehekülgede füüsilisele paiknemisele.

Kuna protsessid kasutavad süsteemis enamasti oluliselt vähem füüsilist mälu kui on neil kasutada virtuaalset aadressiruumi siis mäluhaldur saalib osa mälulehekülgi massmäluseadmele. Lehekülgede saalimisel jagatakse nii füüsiline kui virtuaalmälu fikseeritud suurusega osadeks, mida nimetatakse lehekülgedeks (Page). x86 protsessor jagab füüsilise aadressiruumi 4kB lehekülgedeks, kasutades mäluhaldusmoodulit MMU (Memory Management Unit). Kui protsessi täidetakse, siis on füüsilisse mällu laetud ainult kasutuses olevad leheküljed ehk mäluplokid ja ülejäänud lehekülgi hoitakse massmäluseadmel.

Joonis 2‑9. Virtuaalmälu kasutab protsessile mälu eraldamisel nii põhimälu kui massmälu (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat))

Kui protsess pöördub virtuaalse aadressi poole, mis on saalitud massmäluseadmele, siis virtuaalmälu haldur laeb vajaliku lehekülje põhimällu. Rakendused ei pea arvestama lehekülgede saalimisega, kuna riistvara tugi võimaldab mäluhalduril saalida lehekülgi ilma, et protsessid sellest teadlikud oleksid. Virtuaalmälu aadressiruum erineb sõltuvalt riistavara platvormist. 32-bitise x86 süsteemi totaalne virtuaalne aadressiruum on teoreetiliselt 4 GB.

# C.2.3.2 Virtuaalmälu haldus

Õppekava

Kirjeldada kuidas OS haldab virtuaalmälu massmäluseadme ja põhimälu riistvara abil.

Protsessidele jagatakse lineaarne loogiline aadressiruum kasutamiseks. Protsessori mäluhaldusriistvara arvutab loogilised aadressid ümber füüsilisteks aadressideks. Kui jagada 4 GB mälu 4 kB lehekülgedeks saame kokku 1 miljon lehekülge. Protsessor kasutab kaheastmelist struktuuri nende miljoni lehekülje poole pöördumiseks. Seda võib ette kujutada kui 1024×1024 maatriksit. Esimene dimensioon on nimetatud lehekülje kataloog Page Directory ja teine lehekülje tabel Page Table. Sellise struktuuriga on võimalik luua lehekülje kataloog, millel on 1024 kirjet ja iga kirje viitab ühele lehekülje tabelile. Iga lehekülje tabel sisaldab omakorda 1024 kirjet, millest iga kirje viitab 4 kB lehekülje füüsilisele mäluaadressile. Iga lehekülje kataloogi kirje ja lehekülje tabeli kirje on suur 4 baiti. Kokku on vaja seega 4×1024×1024 baiti ehk 4 MB, et jagada 4 GB aadressiruum 4 kB lehekülgedeks. Mäluaadressid on 32 bitised ja sellest 20 bitti (10 bitti lehekülje kataloog + 10 bitti lehekülje tabel) on füüsiline mälu aadress, kus asub otsitav lehekülg ja viimased 12 bitti on indeks valitud lehekülje sees.

Windowsi keskkonnas on igal protsessil isiklik lehekülje kataloog ja lehekülje tabelid. Selleks eraldab OS 4MB protsessi kohta. Kui protsess luuakse siis sisaldab iga lehekülje kataloogi kirje lehekülje tabeli füüsilist aadressi. Lehekülje tabeli kirjed on kas kehtivad või kehtetud. Kehtivad kirjed sisaldavad 4 kB lehekülje füüsilist aadressi. Protsess ei tea midagi füüsilistest aadressidest ja pöördub ainult loogiliste aadresside poole. Detailid missugune loogiline aadress vastab millisele füüsilisele aadressile on hallatud Windowsi mäluhalduri ja protsessori poolt. Aadress, kus protsessi lehekülje kataloog füüsilises mälus paikneb on lehekülje kataloogi baasaadress (Page Directory Base Address). See aadress salvestatakse spetsiaalses protsessori registris CR3 (x86 protsessoril). Kontekstivahetusel laeb Windows uue väärtuse CR3 registrisse, et suunata käivitamine uue protsessi lehekülje kataloogi aadressile. ).

Selle tehnoloogia abil saab protsess kasutada enda isiklikku 4 GB loogilist (või virtuaalset) aadressiruumi. Protsesside loogilised aadressiruumid on eraldatud ja ühe protsessi loogiline aadress ei saa viidata teise protsessi füüsilisele aadressile. Seda nimetatakse virtuaalseks aadressiruumiks, sest kuigi protsessil on 4 GB virtuaalset aadressiruumi, saab ta kasutada ainult niipalju mälu kui talle on eraldatud.

Totaalne mälu, mis korraga on eraldatud kõigile süsteemi protsessidele, ei saa ületada põhimälu + saalefaili (Pagefile) maht. Seda nimetatakse kinnitatud mälu piiriks (Commit limit). Kui protsess nõuab kasutuseks mälu juurde (Commit) siis kontrollib OS, kas vaba mälu on saadaval ja kui on, siis eraldab mälu protsessile. Sellega garanteerib OS, et protsessil on reaalselt kasutada eraldatud mälu, olgu see siis füüsilise mälu alas või massmäluseadmel. Kõigi protseside poolt kokku kasutusel olevat virtuaalset mälu nimetatakse jooksvaks kinnitatud mäluks (Current Commit Charge). Et arvutada optimaalne saalefaili suurus (Pagefile size) on vaja teada kui palju virtuaalset mälu protsessid arvutis reaalselt kasutavad. Selleks on vaja leida kinnitatud mälu tipptase (Peak Commit Charge). Üks võimalus selle tuvastamiseks on jälgida kinnitatud mälu tipptaset kõigi vajalike rakenduste samaaegsel töötamisel ja lahutada loetud väärtusest maha arvuti füüsiline mälu ning saadud jääk määrata saalefaili suuruseks.

Tööriist, millega seda mõõta on näiteks Protsess Explorer: http://technet.microsoft.com/en-us/sysinternals/default.aspx

_Joonis 2‑10. Virtuaalmälu adresseerimise põhimõte (Allikas: http://en.wikipedia.org/wiki/File:X86_Paging_4K.svg)

Windowsi keskkonnas (32-bit) ei saa protsess reaalselt enda kasutada 4GB aadressiruumi vaid Windowsi mäluhaldus jagab 4GB aadressiruumi kaheks, millest poolt saab kasutada protsess ja teine pool on reserveeritud OS enda tarbeks.

Joonis 2‑11. Virtuaalmälu jaotus protsessile Windows'i keskkonnas

# C.2.3.3 Häired mälu jagamisel

:::

Kirjeldada pukslemise mõistet ja selle mõju ning võimalusi selle vältimiseks ja halduseks.

:::

Füüsilist mälu peab arvutis piisama, et kõik kasutaja töö jaoks vajalikud rakendused saaksid oma jooksvad plokid põhimällu laadida. Kui põhimälu ei jätku siis kukub arvuti jõudlus järsult lehekülje tõrgete ja pideva lehekülgede saalimisega seoses . Lehekülje tõrge (Page fault) on olukord kui protsess pöördub loogilise mäluaadressi poole, mida ei ole laetud põhimällu. Kui esineb lehekülje tõrge, käivitab OS lehekülje tõrke haldamise protseduuri, mis blokeerib mäluaadressi poole pöördunud protsessi, leiab madalama astme mäluseadmelt nõutud lehekülje ning laeb selle põhimällu. Seejärel värskendab lehekülje tõrke haldur lehekülje kirje füüsilise mäluaadressiga ning käivitab blokeeritud protsessi, nii et see protsess saab jätkata oma täitmist.

Kui põhimälus ei ole uue lehekülje laadimiseks vaba ruumi, siis kasutab OS lehekülje asendamise algoritmi, mis valib välja lehekülje, mida on võimalik mälu vabastamiseks massmäluseadmele tõsta. Lehekülje valimine mälust eemaldamiseks on üpris kriitiline. Kui valitakse selline lehekülg, mida varsti uuesti vaja läheb siis tuleb OS'il peagi uuesti tegeleda lehekülje tõrkega ja OS peab äsjaeemaldatud lehekülje taas põhimällu laadima. Sellist olukorda, kus protsessid viitavad lehekülgedele, mis ei ole mällu laetud ning süsteemis tekib suurel hulgal lehekülgede tõrkeid ja OS tegeleb järjest lehekülgede saalimisega nimetatakse pukslemiseks thrashing. See on patoloogiline olukord, kus OS kasutab enamuse andmetöötluse aega jätkuvate lehekülgede tõrgetega tegelemiseks, nii et protsessid ei suuda oluliselt oma ülesannete täitmisega edeneda. Sellise olukorra lahendamiseks peaks süsteem vähendama lahendatavate protsesside arvu. Seda saab teha protsessi blokeerimisega ja ajutise eemaldamisega kõvakettale, et vabastada mõne plokid põhimälus.

# C.2.3.4 Mälu hierarhia

Õppekava

Kirjeldada kuidas mälu hierarhia mõiste mõjutab programmeerimist nagu töömälu eraldamine failidest.

Süsteemi mälud (vahemälud, RAM, kõvakettad ja optilised kettad) on erinevate omadustega - hind, maht ja kiirus. Üldiselt on kiiremad mälud väiksemad ja kallimad. OS'i tehnika on laadida kiirematesse mäludesse need koodi osad, mida enam kasutatakse. Andmete ja koodi otsing aeglasemates mäludes ja nende kopeerimine kiirematesse on kasutaja ja rakenduste jaoks läbipaistev. Sel viisil jätab OS kasutajale mulje suurest, kiirest ja odavast mälust. Sellist süsteemi mälude ülesehitust nimetatakse mälude hierarhiaks.

Joonis 2‑12. Mälu hierarhia

# C.2.3.5 Failisüsteemi funktsioonid

Õppekava

Määratleda failisüsteemi funktsioonid.

Failisüsteem on OS'i komponent, mis vastutab andmete salvestamise eest massmäluseadmetes (kõvakettad, välkmälud, optilised kettad, jne.).

Failisüsteemi peamised ülesanded on:

  • Info talletamine
  • Failide struktureerimine
  • Andmetele õigustekohase ligipääsu tagamine
  • Andmete kaitse
  • Erinevatest andmekandjatest ühetaolise keskkonna loomine.

Failisüsteemi objektid on failid ja kaustad.

Fail talletab infot ja on mugav objekt kasutamiseks programmeerija poolt ning ka üksus, millele saab OS'i poolt määrata juurdepääsuõiguseid.

Kataloogid on kaustad, mis sisaldavad faile ja alamkatalooge ning nende ülesandeks on võimaldada OS'il ja kasutajatel efektiivselt faile hierarhilistesse struktuuridesse paigutada.

Kataloog on tabel, mis sisaldab ühe kande iga selles kataloogis oleva faili või alamkataloogi kohta. Kataloogi kande struktuur sõltub failisüsteemist. Üldiselt sisaldab see faili nime (või kataloogi nime) ja failiga seotud informatsiooni, nagu näiteks selle atribuudid, või andmeid, mis on vajalikud massmäluseadmelt faili sisu lugemiseks. Kataloogid on üldiselt korraldatud puukujulisse struktuuri. Puul on juurkataloog (mis Unix-süsteemides on tähistatud sümboliga "/") ja teised kataloogid on juurkataloogi harud (kui need sisalduvad otseselt juurkataloogis) või juurkataloogist lähtuvad. Seega peale ainsa erandi juurkataloogi, on igal failil või kataloogil vanem, st. kataloog, kuhu ta kuulub.

Joonis 2‑13. Failisüsteemi puu (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat))

Failisüsteem haldab vastavust failide ja kataloogide abstraktse mudeli ja nende tegeliku kettal oleva paigutuse vahel, hoides kettal vastavat infostruktuuri. Need struktuurid sisaldavad informatsiooni, mis on vajalik failide ja kataloogide leidmiseks kettalt. Info on massmäluseadmetel salvestatud sektoritena , mis sisaldavad teatud hulga andmeid ja failisüsteemi roll on organiseerida need sektorid failideks ja kataloogideks ning hallata millised sektorid kuuluvad mingite failide juurde ning millised sektorid on vabad kasutamiseks. Uuemates suuremahulistes massmäluseadmetes on infoühikud, mida kasutatakse failide salvestuseks veelgi suuremad. Moodsad failisüsteemid adresseerivad andmeid läbi fikseeritud suurusega andmeühikute nagu plokk Block või klaster Cluster. Selline andmeühik võib talletada kordades rohkem infot kui sektor ja on kõige väiksemaks info talletamise ühikuks failisüsteemis. Kui faili suurus on väiksem andmeühiku suurusest siis kulub ikka terve andmeühik selle faili salvestamiseks. Samas on andmete lugemine suurte plokkidena kiirem ja selline lahendus annab juurde andmevahetuse jõudluses.

Levinud failisüsteemid, mida kasutatakse massmäluseadmetes andmete talletamiseks on loetletud allpool:

  • FAT / File Allocation Table on Microsofti OS'is toetatud. Turvalisuse puudumine ja piiratus failinimede määramisel ning maksimaalse salvestatava faili mahu piirangud on selle failisüsteemi suuremad puudused ja tänapäeval leiab FAT kasutust peamiselt eemaldatavate (Removable) seadmete puhul. Selleks tarbeks on failisüsteemist ka uuem versioon *exFAT / *extended FAT, mis on FAT32 failisüsteemi järglane. Kui FAT32 failisüsteemi maksimaalne faili suurus oli piiratud 32-bitiga siis exFAT võimaldab faili suurust kirjeldada 64-bitisena. FAT32 massmäluseadme maksimaalne köide Volume sai olla 2 TB, exFAT'i puhul on see 512 TB.

  • NTFS / New Technology File System on Microsofti OS'is toetatud kaasaegne failisüsteem. Andmeühikuks failide talletamisel on klaster vaikimisi mahuga 4 kB. NTFS salvestab kõik failisüsteemi objektid andmebaasilaadsesse struktuuri - Master File Table (MFT). NTFS failisüsteem kasutab transaktsioonide logimist iga köite jaoks. Sel kujul ei toimu failisüsteemi muutuste salvestamine kohe andmebaasi vaid logitud muutused salvestatakse järk-järgult. Logi hoidmine võimaldab taastada failisüsteemi peale arvutisüsteemi tõrkeid. Lisaks saavad muutuste logi kasutada erinevad rakendused, näiteks failisüsteemi indekseerimine, andmete replikeerimise rakendused, varundamisrakendused, viiruseskaneerijad, jne.

  • EXT4 / Fourth Extended File System on Linux OS'i all tuntud failisüsteem, mis on eelmiste versioonide edasiarendus ja toetab transaktsioonide logimist. EXT4 toetab suuri köiteid ja parandatud on jõudlusnäitajaid.

# C.2.3 Kordamisküsimused

  1. Virtuaalmälu võimaldab:
  • Salvestada protsesse muutmälus
  • Salvestada faile muutmälus
  • Jagada protsessidele oma mäluruum X
  1. Virtuaalmälu on:
  • Sama mis muutmälu
  • Maksimaalselt sama suur kui protsessori adresseeritav mäluruum X
  • Sama mis põhimälu
  1. Kui suur saalefail on soovitatav konfigureerida Windows operatsioonisüsteemiga arvutile?
  • 2 korda põhimälu suurus
  • 1,5 korda põhimälu suurus
  • Tuvastada reaalselt kasutuses oleva virtuaalmälu maht ja arvutada sellest maha füüsilise mälu maht X
  1. Millest võivad tekkida lehekülje tõrked?
  • Vähesest muutmälu mahust X
  • Vähesest püsimälu mahust
  • Pukslemisest
  1. Mis mahuga on failisüsteemi väikseim ühik?
  • Sektor **
  • Bitt
  • Bait

# C.2.4 Turvalisus ja kaitse

Selle alateema materjale läbi töötades õpid:

  • Määratlema operatsioonisüsteemi kaitsemehhanismid
  • Kirjeldama pahavaraga seotud ohte
  • Määratlema erinevused isiku identifitseerimisel ja autentimisel
  • Kirjeldama autentimistehnikaid
  • Määratlema juurdepääsukontrolli põhimõtted
  • Mõistma varunduse ja taastamise vajadust.

# C.2.4.1 Turvalisuse ja kaitse vajadus

Õppekava

Mõista kaitse ja turvalisuse vajadust (konfidentsiaalsuse, puutumatuse ja käideldavuse terminates) arvutisüsteemis.

Arvutis talletatud informatsioon on kasutaja intellektuaalne omand ja vajab kaitset nagu iga teine vara. Kaitse hõlmab erinevaid kihte:

  • Hoone: arvuti on kaitstud füüsilise juurdepääsu eest (lukud, räkikapid, jne.)
  • Võrk: arvuti on kaitstud avalikust võrgust tulevate võimalike rünnete eest (tulemüür)
  • Arvuti: arvuti kaitsemeetodid riistvara tasemel (dubleeritud riistvarakomponendid, riistvara tasemel autentimine, riistvaraline krüpteerimine)
  • Operatsioonisüsteem: arvuti kaitsemeetodid OS'i tasemel (kasutaja- ja kerneli töörežiim, kasutajate autentimine ja autoriseerimine, failisüsteemi kaitse, rühmapoliitika, krüpteerimine, tulemüür, sisseehitatud kaitsevahendid soovimatute süsteemimuudatuste vastu, jne.)
  • Rakendus: rakenduse tasemel andmekaitse ja rakendused andmete kaitseks (viirusetõrje, varundamine, jne.)
  • Kasutaja: kasutajate koolitus, juurdepääsuõiguste määramine ja monitooring
  • Andmed: konkreetse andmeobjekti kaitse juurdepääsunimekirjadega või krüpteeringuga.

Üldiselt on turvalisusel kolm eesmärki: konfidentsiaalsus, puutumatus ja käideldavus.

Andmete konfidentsiaalsus Confidentiality on andmete legaalse omaniku võimalus valikuliselt anda või keelata teatud kasutajatel juurdepääs andmetele. See hõlmab süsteemi võimet tuvastada kasutaja identiteet ja määrata andmeobjektide kasutusõigused. Samuti on konfidentsiaalsuse ohustajateks erinevad võrguründed või pahavara, mille vastu aitab erineva tulemüüride ja viirusetõrje rakenduste kasutamine arvutis.

Andmete puutumatus Integrity tähendab seda, et süsteemi tõrked või autoriseerimata kasutajad ei saa andmeid märkamatult muuta, kahjustada või kustutada. Reeglina on puutumatuse probleemid seotud arvutisüsteemi tõrgetega ja selle vastu aitab kui selgitada välja arvutisüsteemi riistvara nõrgad kohad (Single Point of Failure) ja täiendada nende veakindlust. Näiteks kõvaketta vea tõttu andmete hävimise vastu RAID (Redundant Array of Independent Disks) kettasüsteemi rakendamine või andmetest regulaarne varukoopiate tegemine.

Andmete käideldavus Availability tähendab seda, et süsteem tagab andmete seaduslikule omanikule juurdepääsu andmetele ka rikete või pahatahtlike väliste jõudude rünnakute korral. Teiste sõnadega - pahatahtlik kasutaja või rike ei saa takistada andmetele juurdepääsu. Rünnakut, millega üritatakse takistada legaalse omaniku liigipääsu andmetele, nimetatakse teenuste tõkestamiseks Denial of Service. Andmete kättesaadavust mõjutavad sageli elektrisüsteemi probleemid, mille vastu aitab katkematu toiteallika UPS / Uninterruptable Power Supply kasutamine. Nagu andmete puutumatuse puhul võivad andmete kättesaadavust mõjutada riistvarakomponentide probleemid ja dubleeritud komponentide kasutamine aitab seda lahendada. Andmete käideldavust võib takistava ka tarkvara või OS'i tõrge.

# C.2.4.2 Operatsioonisüsteemis kasutatavad kaitsemehanismid

Õppekava

Määratleda OS-i kaitsemehanismid.

Mitmetegumiline OS peab tagama protsesside omavahelise isoleerituse ja eraldama kasutaja protsessid kerneli omadest, et tagada eri protsesside konfidentsiaalsus ja süsteemi stabiilne töö. Selleks on kasutusel erinevad protsessori töörežiimid kernelile ehk kernelirežiim kernel mode ja kasutajarakendustele ehk kasutajarežiim user mode. Kernelirežiim käivitatakse protsessori priviligeeritud käivitusrežiimis, mis tagab juurdepääsu kõigile protsessori käskudele ja kogu süsteemimälule.

Kasutaja protsesside isoleerimiseks ja mäluruumi kaitseks peab saama neile seada piiranguid. Virtuaalmälu kasutus lubab kasutaja protsessidel kasutada ainult neile määratud mälu osa. Täiendavalt saab kaitsta programmi koodi sisaldavat mäluala kirjutamisoperatsioonide eest. Mälu, mis antakse OS'i poolt kasutada protsessile peab olema tühjendatud eelmise protsessi andmetest.

Mitmekasutaja OS'i kaitsemehhanism algab kasutajate loomisest, kellel on juurdepääs süsteemi kasutamiseks ja sellele järgneb ressurssidele juurdepääsuõiguste määramine kasutajatele.

OS tasemel kaitsemehhanismid on pidevalt täiustunud ja hõlmavad krüpteerimisvahendeid, mida kasutatakse üle erinevate OS'i toimimise mehhanismide nagu kasutaja autentimisel, võrguühenduste loomisel, massmäluseadmetel ja eemaldatavatel mäluseadmetel andmete kaitseks jne.

Krüptograafia mõiste hõlmab sõnumi teisendamist krüpteeritud sõnumiks, kasutades salastatud võtit. Krüptograafiline mehhanism toetub võtmete salastatusele, tagamaks krüpteeritud sõnumite salastatuse, samas kui krüpteerimise ja dekrüpteerimise algoritmid on üldiselt avalikud. Krüptograafilise süsteemi puhul on krüpteerimis- ja dekrüpteerimisvõtmed seotud matemaatilise valemiga. Kui andmete turvamisel kasutatakse andmete krüpteerimiseks ja hilisemal dekrüpteerimisel sama võtit nimetatakse sellist krüptograafilist süsteemi sümmeetrilisek s. Sümmeetrilise krüpteerimise algoritmid on näiteks DES (Data Encryption Standard), AES (Advanced Encryption Standard). Sellist krüpteerimist kasutatakse suurte andmehulkade krüpteerimiseks, sest algoritmid on suhteliselt lihtsamad võrreldes asümmeetrilise krüpteerimisega ja krüpteerimisprotseduurid võtavad vähem arvutiressurssi ja aega. Sümmeetrilise krüpteerimise puhul on oluline hoida salajas krüpteerimisvõtit.

Asümmeetrilise krüpteerimise puhul on kasutusel võtmepaarid (salajane, avalik) ja avaliku võtmega krüpteeritud andmete dekrüpteerimiseks on vaja kasutada salajast võtit ning vastupidi. Kuna asümmeetriline krüpteerimine on väga ressursinõudlik siis ei krüpteerita sellega suuri andmehulki vaid tavapraktikas krüpteeritakse andmed sümmeetrilise võtmega ja sümmeetrilise krüpteerimise võti edastatakse asümmeetriliselt krüpteerituna info vastuvõtja avaliku võtmega, millest tuleb lähemalt juttu edaspidi.

# C.2.4.3 Kaitse arvutiviiruste eest

Õppekava

Kirjeldada pahavaraga seotud ohte nagu tagauksed, Trooja hobused, arvutiviirused. Määratleda peamised kaitsemeetodid nende vastu.

Pahavara hõlmab programme, mis on tahtlikult loodud süsteemi ohustamiseks. Sellised programmid levivad arvutist arvutisse kas interneti teel või eemaldatavate mäluseadmete kaudu. Kõige levinumateks pahavara näideteks on tagauksed, Trooja hobused, viirused ja ussviirused.

Tagauks on programm, mis võimaldab juurdepääsu arvutisüsteemile, minnes mööda tavalistest autentimise kontrollidest. Sageli on tagauks varjatud kasutajanimi, mis ei ole seotud parooliga, nii et igaüks saab ühenduda süsteemiga ning kasutada seda kasutajanime. Tagaukse võib tekitada pahavara, mis käivitatakse süsteemis.

Trooja hobune on programmi osa, mis on peidetud peremeesprogrammi sisse. Sageli on peremeesprogramm väliselt kahjutu ja ligitõmbav. Kui see käivitatakse kasutaja poolt, siis Trooja hobune võib teha kõike seda, mis on lubatud kasutajal: kustutada või muuta andmeid või tekitada tagaukse. Trooja hobused on internetis laialt levinud, peidetud allalaetavasse tarkvarasse või e-kirjade manustesse, maskeeritud dokumentideks või piltideks.

Viirus on programm, mis võib kahjustada või hävitada kasutajate või süsteemi andmeid ning on suuteline ise ennast paljundama, nakatades oma programmiga teisi süsteemis olevaid programme. Nakkus on kasutajale nähtav siis, kui kasutaja käivitab nakatunud programme, siis ta käivitab ka tahtmatult viiruse. Viiruse nakkus levib, sest kasutajad jagavad programme ketaste, USB-mälupulkade või e-kirjade kaudu. Mõned viirused nakatavad pigem dokumente kui programme. Need viirused (tuntud makroviirustena) kasutavad ära seika, et mõned tekstitöötlusprogrammid kasutavad väikseid programme (makrod), mis lisatakse dokumentidesse. Muud viirused nakatavad OS'i. Näiteks on olemas viirused, mis nakatavad kõvaketta käivitussektori.

Ussviirused on üks viiruste eriliik. Erinevalt tavalisest viirustest suudavad ussviirused leida ja rünnata interneti kaudu haavatavaid arvuteid.

Nuhkvara on kasutaja privaatsust ohustav pahavara liik, mis üritab kasutaja teadmata salvestada infot kasutaja käitumisest, et seda kuidagi ära kasutada – näiteks turunduse eesmärkidel. Süsteemi nuhkvaraga nakatumine juhtub tüüpiliselt siis kui kasutaja installeerib arvutisse mingi vabavara rakenduse või külastab mõnda kahtlast veebilehte ja veebilehitseja turvaseaded on liialt madalale kaitsetasemele reguleeritud. Nuhkvara võib jälgida veebilehti, mida kasutaja külastab või harvematel juhtudel edastada arvutikasutaja klahvivajutusi kolmandale osapoolele. Kindlasti põhjustab nuhkvara süsteemi jõudluse langust, kasutades süsteemi ressursse oma otstarbel.

Reklaamvara on sarnane nuhkvarale ja installeerub kasutaja arvutisse analoogseid teid pidi. Reklaamvara eesmärk on näidata kasutajale soovimatut reklaami.

Rootkit nakatab operatsioonisüsteemi kerneli tasemel ja võib muuta OS'i baasfunktsionaalsust või käivitada enda sõltumatu OS'i, mis on nähtamatu kasutajale ja enamikule viirusetõrjetarkvaradest. Võimalik on ka rootkit'i toimimine BIOS'i tasemel. Tüüpiline rootkit'i eesmärk on avada tagauks süsteemi sissetungimiseks.

Süsteemi kaitseks pahavara eest peab olema kasutajana teadlik ohtudest ja proaktiivselt kaitsma süsteemi nakatumise eest.

Olulised tegevused pahavarast hoidumiseks on järgmised:

  • Viirusetõrjetarkvara kasutamine – see on programm, mis on pidevalt aktiivne ja otsib süsteemist pahavara ning on võimeline seda eemaldama ükskõik millisest failist ja käivitatavast programmist. Hea viirusetõrjeprogrammi omaduseks on OS'i reaalajas kaitsemehhanismid failide ja e-posti manuste avamisel ning pidev automaatne uuenduste süsteem, mis kaitseb arvutit pidevalt uuenevate pahavara versioonide eest.
  • Operatsioonisüsteemi turvaparanduste regulaarne installeerimine eemaldab OS'i turvaaugud, mida pahavara loojad saavad ära kasutada, et enda tooteid süsteemi süstida.
  • Tulemüüri kasutamine – tulemüür võimaldab blokeerida sissetulevad ja väljaminevad võrgupordid, mida arvutikasutaja rakendused ei kasuta ning kaitsta nii võimalike võrgurünnete eest.
  • Veebilehitseja turvaseadete kasutamine võimalikult kõrgel kaitsetasemel – kuna kaasajal tuleb enamus viiruseid interneti teel ja veebilehitseja on aken internetti siis tuleb seda maksimaalselt turvata tundmatute veebilehekülgede ja veebirakenduste eest.
  • Operatsioonisüsteemi kaitsemehhanismide rakendamine – kaasaegsed operatsioonisüsteemid sisaldavad sisseehitatud kaitsemehhanisme, mis kaitsevad OS'i süsteemseid katalooge ja faile ning takistavad soovimatute rakenduste iseenesliku installeerumise eest ja nõuavad sellistel juhtudel arvutikasutaja sekkumist. OS'i sisseehitatud rakenduste hulka võivad kuuluda ka tulemüür ja viirusetõrjerakendused.
  • Kasutaja teadlikkuse tõstmine – kasutaja peab omama teadlikkust ja mõistma ohte, mis teda varitsevad ja hoidma enda töökeskkonna ohutust. Tuleb hoiduda vabavara ja muude kahtlaste rakenduste installeerimisest arvutisse, mitte avada e-kirja manuseid kui kiri on saabunud tundmatult saatjalt, mitte sisestama oma kasutajanime ja parooli ootamatult avanenud veebilehe või sõnumivahetusrakenduse aknas.

# C.2.4.4 Identifitseerimine ja autentimine

Õppekava

Määratleda erinevused isiku identifitseerimisel ja autentimisel.

Kasutaja identifitseerimine ja autentimine on kaks erinevat toimingut.

Esimene operatsioon, mille teostab kasutaja end arvutiga ühendades, on kasutaja identifitseerimine. Sellel eesmärgil peab kasutaja sisestama süsteemi oma kasutajanime, isikukoodi, vmt. Ja see identiteet peab olema registreeritud OS'i kasutajate andmebaasis.

Seejärel kontrollib süsteem, kas kasutaja on see, kellena ta ennast süsteemile esitab. See on kasutaja identiteedi kontroll ehk kasutaja autentimine.

# C.2.4.5 Autentimistehnikad

Õppekava

Kirjeldada autentimistehnikaid ja defineerida tugeva autentimise mõiste.

Kasutaja autentimisel nõutakse kasutajalt enda identiteedi tõestamist ja selle puhul on aluseks järgmised põhimõtted:

  • Midagi, mida kasutaja teab
  • Midagi, mis kasutajal on
  • Miski, mis kasutaja on.

Esimene autentimise viis koosneb üldiselt kasutajalt parooli küsimisest. Sisestatud parooli võrreldakse salvestatud parooliga ja kui need kattuvad, siis on kasutaja autenditud.

Teisel juhul toimub autentimine näiteks kasutaja omanduses oleva kiipkaardi abil, mille kasutaja peab sisestama vastavasse kiipkaardilugejasse.

Kolmandal juhul toimub autentimine kasutaja füüsikaliste parameetrite (biomeetria), näiteks sõrmejälje alusel.

Paroolipõhine autentimine on tänu oma lihtsusele kõige enam levinud viis. Selle peamine nõrkus on selles, et mõnel juhul on raske parooli saladuses hoida. Hea parool (näiteks juhuslik tähekombinatsioon) on piisavalt turvaline, kuid sageli eelistavad kasutajad paroole, mida on lihtsam meelde jätta (nagu näiteks tähtsad kuupäevad). Neid paroole on lihtne aimata ja on olemas andmebaasid levinumatest paroolidest ning programme, mis kasutavad neid andmebaase interneti kaudu ebaseaduslikeks sissetungides arvutisüsteemidesse. Parooli võib paljastada visuaalse või elektroonilise jälgimise abil: töökaaslane võib näha parooli selle sisestamisel klaviatuurilt või võidakse kasutada programmi, mis meenutab autentimise protseduuri nii, et kasutaja paljastab oma parooli tahtmatult ise.

Et kaitsta paroole pealtkuulamise eest rakendatakse paroolidele ühesuunalist krüpteerimist ehk räsialgoritmiga krüpteerimist. Räsialgoritm on ühesuunalise krüpteerimise algoritm, kus mingist andmefailist arvutatakse kontrollarv, mis on alati sama kui faili ei ole muudetud (näiteks SH1). Süsteemis salvestatakse paroolid räsialgoritmiga krüpteeritud kujul ja neid ei ole võimalik algkujule tagasi lahti krüpteerida. Kasutaja poolt sisestatud parooli kontrollimiseks krüpteeritakse sisestatud salasõna sama räsialgoritmiga ja võrreldakse süsteemis salvestatud salasõnaga. Kui kasutaja autentimine toimub üle terminali, siis ei saadeta serverisse krüpteerimata parooli vaid sellise olukorra kaitseks rakendatakse väljakutse-vastus challenge-response meetodit koos krüpteerimistehnikatega.

Sümmeetrilised krüptograafilised süsteemid ei sobi tõhusaks autentimiseks.Näiteks olgu siinkohal toote ostmine internetist krediitkaardi abil: kui ostja ja müüa on eelnevalt kokku leppinud kasutada sümmeetrilist võtit, siis sõnumit, mis sisaldab kaardi koodi, on võimalik avada kokkulepitud võtmega. Kuid kuidas vahetada sümmeetrilise krüpteerimise võti kahe partneri vahel turvaliselt? Võtit ei ole võimalik lihtsalt saata, sest suvaline kolmas isik saab võtme vahelt haarata ja seejärel dekrüpteerida selles saadetud krediitkaardi koodi. Seetõttu kasutavad kaasaegsed turvalise side kanalid autentimisel asümmeetrilist krüpteerimist.

Asümmeetrilise krüpteerimise puhul on krüpteerimisvõtmeid kaks, mis seotud omavahel keeruka krüpteerimisalgoritmi kaudu (näiteks RSA), mis välistab ühe võtme tuletamise teisest. Ühe võtmega krüpteeritud andmed on võimalik lahti krüpteerida teise võtmega ja vastupidi. Ühte võtit nimetatakse avalikuks , kuna see on kättesaadav kõigile ja teist privaatseks , mis on kättesaadav vaid kasutajale. Niimoodi on võimalik ühel kasutajal, kes teab teise avalikku võtit edastada talle kaitstud andmed, mida lahti krüpteerida saab ainult kasutaja ise oma privaatse võtmega. Kasutaja tuvastamisel digitaalset allkirja kasutades krüpteerib kasutaja edastatud info räsi enda privaatse võtmega ja kasutaja autentsust saab kontrollida kui dekrüpteerida edastatud räsi kasutaja avaliku võtmega ja võrrelda samast dokumendist genereeritud räsiga. Asümmeetriline krüpteerimine on aluseks avaliku võtme infrastruktuuril, mida loetakse kaasaja kõige turvalisemaks andmekaitse ja autentimise vahendiks.

_Joonis 2‑14. Digitaalse allkirja rakendamine (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat)))

Tugeva autentimise protseduur peab sisaldama mitut eelpoolkirjeldatud autentimismehhanismi. Näiteks on tugevaks autentimismeetodiks digitaalse allkirja abil autentimine, mille puhul kasutaja esitab autentimiseks enda privaatse võtme kiipkaardi abil, millele juurdepääs on omakorda kaitstud parooliga.

# C.2.4.6 Juurdepääsukontroll

Õppekava

Määratleda juurdepääsukontrolli põhimõtted.

Autentimisele järgneb süsteemis juurdepääsukontroll.

Juurdepääsukontroll määrab ära kas ja millistele spetsiifilistele süsteemiressurssidele on kasutajal juurdepääsuõigus ja mis tasemel on juurdepääsuõigus subjektile lubatud. Arvutisüsteem sisaldab erinevaid objekte, mis vajavad kaitset. Need objektid võivad olla riistvara nagu protsessor, põhimälu, massmäluseadmed, printerid, või võib see olla ka tarkvara nagu protsess, fail, andmebaas või semafor.

Igal objektil on unikaalne nimi, mille kaudu temale viidatakse ja komplekt operatsioone, mida protsessid saavad objektiga teostada. Näiteks failil on lugemis- ja kirjutamisõigused.

Arusaadavalt on vaja vahendit, millega keelata protsesside juurdepääs objektidele, millele juurdepääsuks neil õiguseid pole. Peale selle peab see mehhanism võimaldama piirata protsesside õigused objektil mingi operatsioonide komplektiga, mida antud objektil saab teostada.

Kaitsemehhanismidega seoses tuleb selgitada mõistet kaitsedomeen. See on struktuur mis määratleb igale protsessile (või üldiselt igale aktiivsele üksusele, kelleks võib olla ka kasutaja) komplekti kaitseõigusi. Iga kaitse õigus on esindatud paariga (ressurss, õiguste komplekt) ja sisaldab ressurssi, millele protsessil on ligipääs ja komplekti lubatud operatsioone, mida protsess võib täita sellel ressursil.

Oluline küsimus on kuidas süsteemis kajastada, millisesse kaitsedomeeni mingi objekt kuulub. Põhimõtteliselt saab kaitsedomeeni rakendada kaitsemaatriksit kasutades. Selle maatriksi read esindavad kaitsedomeene ja veerud esindavad ressursse. Igas lahtris on komplekt õiguseid, mida antud kaitsedomeen võib konkreetse objektiga teostada.

Domeen Fail A Fail B Fail C Printer D Dom. 1 Dom. 2 Dom. 3
1 Lugemine Lugemine Käivitamine Kirjutamine Ümber-lülitu-mine
2 Lugemine Ümberlülitumine
3 Lugemine Kirjutamine Kirjutamine

Joonis 2‑15. Kaitsemaatriks (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat))

Kaitsedomeen võib ka ise olla kaitsemaatriksi objekt, millega tehakse võimalikuks muuta protsessil enda õiguseid ja lülituda ümber teise kaitsedomeeni. Toodud näites võib protsess, mis kuulub kaitsedomeeni 1, lülituda kaitsedomeeni 2.

Reaalses süsteemis ei kasutata kaitsemaatriksit sellisel kujul, kuna see on praktikas tohutult suur. Enamus kaitsedomeene ei oma mingeid õiguseid enamikule objektidele. Seega oleks mõttetu salvestada väga suurt ja enamasti tühja kaitsemaatriksit. Praktikas salvestatakse kaitsemaatriks kas ridade või veergude järgi ja salvestatakse vaid infot sisaldavad elemendid. Kui salvestada veergude järgi siis saame iga objekti kohta nimekirja, mis sisaldab kõiki kaitsedomeene, millel on õigus selle objektiga seoses ja õiguste liigi. Seda nimekirja nimetatakse juurdepääsunimekirjaksACL / Access Control List. See sisaldab loetelu protsessidest (või üldisemalt aktiivsetest üksustest), millel on lubatud juurdepääs ressursile ja iga protsessi puhul loetelu operatsioonidest, mida sellel protsessil on lubatud teostada.

Joonis 2‑16. Juurdepääsunimekirja rakendamine ressursidele (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat))

Joonisel on toodud 3 protsessi, mis kuuluvad erinevatesse kaitsedomeenidesse. Igal ressursil on oma juurdepääsunimekiri. Ressurss R1 juurdepääsunimekiri ütleb, et protsess P1 võib seda ressurssi lugeda ja kirjutada ja protsess P2'l on vaid lugemisõigus, jne.

Kui salvestada kaitsemaatriks ridade järgi saame nimekirja protsessidest koos objektide loeteluga, millele neil on juurdepääs ja millised operatsioonid on lubatud. Seda nimekirja nimetatakse võimekuste loetelu capability list ja selle loetelu kirjed on võimekused capabilities.

Joonis 2‑17. Võimekuste loetelu rakendamine protsessidele (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat))

Võimekuste loetelu on seotud protsessiga (või üldisemalt aktiivse üksusega). Loetelu sisaldab nimekirja ressurssidest, millele protsessil on lubatud ligipääs, ning iga ressurssi juures on loetelu operatsioonidest, mida sellel protsessil on lubatud teostada.

Tuleb märkida, et pääsuloendid või võimekuste loend on hallatud operatsioonisüsteemi kernelirežiimis.

Erinevad tuntud poliitikad juurdepääsuõiguste määramisel on järgmised:

  • Valikuline juurdepääsukontroll Discretionary Access Control – baseerub juurdepääsu nõudva subjekti tuvastamisel ja juurdepääsunimekirjade kasutamisel. See võimaldab subjektil määrata mingile ressursile ise juurdepääsuõiguseid enda valitud identiteetidele.
  • Kohustuslik pääsukontroll Mandatory Access Control – OS'i poolt kehtestatud juurdepääsuõiguste komplekt subjektile, milleks on praktikas enamasti portsess või lõim. Subjekt ei saa õiguseid edasi määrata.
  • Rolli-baasil juurdepääsukontroll Role-Based Access Control – kasutajale tema rolli järgi määratud juurdepääsuõigused süsteemis.

# C.2.4.7 Andmete varundamine

Õppekava

Määratleda varunduse ja taastamise vajadus.

Juhuslik andmete kaotsiminek on väga levinud, sest seda võivad põhjustada riistvara rikked (näiteks kõvaketta rike), tarkvara rikked (näiteks programmis olev viga võib kahjustada dokumenti), inimlikud vead (nagu kogemata faili kustutamine) või äärmuslikes tingimustes suuremad õnnetused, mis füüsiliselt lõhuvad arvutit või selle püsimäluseadmeid. Kõigi selliste juhtumite tulemusel võivad andmed muutuda kas ekslikeks või üldse kaotsi minna.

Juhusliku andmete kaotsimineku kaitsmiseks tehakse perioodiliselt varukoopiaid massmäluseadmel olevatest failidest mingile teisele mäluseadmele, näiteks teisele massmäluseadmele, võrgukataloogile, magnetlindile või optilisele meediale. Tavaliselt lisatakse igale andmetest tehtud varukoopiale selle tegemise kuupäev ja kellaaeg, nii et seda saab taastada, st. vajadusel välja kutsuda ja ennistada. Varundamisel kasutatakse failide spetsiaalset atribuuti, arhiivibitti, mille staatuse järgi on võimalik vahet teha, kas faili on peale eelmist varundamist muudetud või mitte.

Varundamise erinevad variandid on:

  • Täielik Full – kõigi failide varundamine sõltumata arhiivibiti seisust ja arhiivibitt seatakse varundatud staatusesse.
  • Kasvav Incremental – ainult viimasest varundusest muutunud failide varundamine, arhiivibitt seatakse varundatud staatusesse. Taastamise jaoks on vaja viimast täielikku varundust ja kõiki vahepealseid kasvavaid varundusi.
  • Vahe Differential – varundatakse kõik peale viimast täielikku varundust ja arhiivibitt jäetakse muutmata. See on kiirem kuna taastamiseks on vaja viimast täielikku varundust ja vahevarundust.

Varundamise puhul on vaja lahendada probleem avatud failidega. Korrektse varunduse jaoks peaksid kõik failid olema suletud ja seega peaksid olema peatatud staatuses ka rakendused, mis neid faile kasutavad. Reeglina ei ole selline varundamine võimalik.

Tänapäeval kasutatakse varundamisel spetsiaalset failisüsteemi teenust, millega on võimalik fikseerida failisüsteemi hetkeseis varundamise alghetkel. Sellise teenuse nimetus Windows keskkonnas on VSS / Volume Shadow Copy Service. See teenus võimaldab varundamise rakendusel luua failisüsteemi hetkeseisu pildi VSS Snapshot, mille puhul kõik VSS toetatud rakendused peatuvad hetkeks ja salvestavad enda mälus olevad tööandmed massmäluseadmele. Kui andmed süsteemis peale „pildi" loomist muutuvad siis salvestuvad muudetud andmeplokid spetsiaalses massmäluseadme VSS süsteemialas ja sealt saab varundamise rakendus lugeda korrektsed andmeplokid nii nagu need olid fikseeritud varundamise alghetkel ja nii luua korrektne varukoopia kõigist failidest.

Selline varundamine on hea veel ka teisel põhjusel – nimelt on VSS mehhanismi võimalik kasutada varundusmeedial kui viimane varundab andmeid plokkide kaupa (näiteks teisele kõvakettale varundades). Sel juhul saab fikseerida failisüsteemi pildi ka varundusmeedial ja kui toimub järgmine varundamine siis salvestatakse muutunud plokid automaatselt varundusmeedia VSS süsteemialas ning nii tekib igal varundamisel eelmisest varundusest muutunud plokke sisaldav failisüsteemi ala, mida saab kasutada konkreetse päeva muutunud failide taastamiseks.

# C.2.4 Kordamisküsimused

  1. OS kaitsemehhanismid on:
  • Konfidentsiaalsus
  • Puutumatus
  • Kasutajate autentimine X
  1. Milline allpooltoodud võimalustest ei kaitse arvutit viiruste eest?
  • Süsteemiuuenduste keelamine X
  • Lubada kasutajatel ainult valitud rakenduste installeerimine
  • Keelata eemaldatavate seadmete ühendamine süsteemi
  • Viirusetõrjerakenduse paigaldamine
  1. Kuidas salvestatakse kasutajate paroolid süsteemis?
  • Krüpteerimata
  • Sümmeetriliselt krüpteerituna
  • Räsialgoritmiga krüpteerituna X
  1. Kuidas varundada töötavate rakenduste andmed?
  • Ei saa varundada
  • Saab varundada kui OS ja rakendused toetavad failisüsteemi vastavat teenust, mis võimaldab salvestada jooksva failisüsteemi seisu X
  • Saab varundada alati
  1. Juurdepääsunimekiri on:
  • Nimekiri ressurssidele määratud õigustest
  • Nimekiri protsessidele määratud õigustest
  • Nimekiri lõimedele määratud õigustest

# 2.5 Levinud operatsioonisüsteemid

Selle alateema materjale läbi töötades õpid:

  • Kirjeldama peamisi Linux'i operatsioonisüsteemi omadusi
  • Kirjeldama Microsoft Windows operatsioonisüsteemide peamised omadused.

# C.2.5.1 Linux

Õppekava

Kirjeldada peamisi Unix’i, Linux’i ja Mac’i perekonda kuuluvate OS’ide omadusi nagu installatsioon, kasutajaliides, turvalisus, jõudlus, peamised kasutusalad, stabiilsus.

Linux on mitme kasutajaga Unix'i kloon ning avatud lähtekoodiga operatsioonisüsteem, mille lõi Soome üliõpilane Linus Torvalds. Tänapäeval on Linux laialdaselt kasutatav süsteem suure arvu kasutajatega.

Linux koosneb kolmest põhiplokist vastavalt monoliitsele struktuurile:

  • Kernel: rakendab protsessori, mälu ja seadmete ning failisüsteemi haldurit.
  • Süsteemiteegid: määravad standardfunktsioonid, mida saavad kasutada rakendused suhtlemisel kerneliga.
  • Süsteemi utiliidid: sisaldavad programme nagu kasutajaliides (kest), mis tõlgib kasutaja käske, kompilaatoreid ja teisi süsteemihalduse programme.

Linux kasutab protsessi malle, mis on sarnased Unix'ile. Kernelis on võimalik kaks süsteemikutset: fork ja exec. Fork võimaldab luua (tütar) protsessi, mis on identne selle loonud protsessiga (ema), ainsa erinevusega selles, et tütar on seotud erineva protsessori identifikaatoriga (PID) kui emaprogramm. Kasutades exec süsteemikutset võib tütar seejärel muuta oma koodi, käivitades teise programmi käivitatavas failis. Linux pakub töötlemiseks hulga kommunikatsioonivahendeid nagu liinid, soklid, signaalid jne.

Linux'i failisüsteem on otsustava tähtsusega ressursside nagu failid ja seadmed haldamisel ning samuti süsteemi turvalisuse seisukohast. Tegelikult failisüsteem kasutab spetsiaalseid faile kataloogide ja seadmete jaoks ning määratleb kaitse atribuudid iga faili jaoks (nii tavalised kui spetsiaalsed). Iga Linux'i kasutaja on eraldi seotud kasutaja identifikaatoriga UID ja grupi identifikaatoriga GID ning kõik protsessid, failid ja kataloogid on tähistatud nende omaniku UID ja GID-ga. UID ja GID paarid määravad ära kõigi kasutajale kuuluvate protsesside kaitsedomeeni.

Iga faili või kataloogi puhul on võimalik määrata, millised operatsioonid on lubatud selle omanikule, omanikuga samas grupis olevatele kasutajatele ja kõigile ülejäänud kasutajatele.

Faili nimi Omaniku õigused Omaniku grupi õigused Teiste kasutajate õigused
Fail 2 RWE RW– R––
Fail 3 R–E R–– R–E
Fail 4 –W– ––– –––

Joonis 2‑19. Failisüsteemi õiguste loetelu (R-lugemisõigus, W-kirjutamisõigus, E-käivitamisõigus) (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat))

# C.2.5.2 Microsoft Windows'i operatsioonisüsteemide parameetrid

Õppekava

Kirjeldada Microsoft Windows perekonna OS-ide peamised omadused nagu installatsioon, kasutajaliides, turvalisus, jõudlus, peamised kasutusalad, stabiilsus.

Windows on mitmetegumiline ja mitmekasutaja OS, mille kernelikomponendid on mitmekihilise ülesehitusega. Alumine kiht (HAL) on ainus riistvarast sõltuv süsteemi osa ja see loob ülemistele kihtidele standardse liidese riistvara kasutamiseks. HAL'i kohal olev kiht (kernel) sisaldab OS'i peamist funktsionaalsust tagavaid mehhanisme (plaanur, katkestuste haldur, jne) ja suhtlemiseks riistvaraga on kerneli ning HAL'i vahel riistvara draiverid. Ülemine kiht on Executive, mis sisaldab protsessori, mälu ja seadmete haldureid, failisüsteemi, turvaseadete haldurit ning graafilist kasutajaliidest.

Joonis 2‑20. Windows'i arhitektuur (Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat))

Windows'i kernelist väljapoole jääv osa sisaldab Win32 API, mis pakub (kasutajasõbralikku) liidest süsteemikutsete edastamiseks rakendustele.

Windows'is on protsess seotud unikaalse numbrilise identifikaatori, virtuaalmälu ja kaitseatribuutidega Windows pakub unikaalse süsteemikutse protsesside loomiseks (kannab nime createprocess), mis teeb ära sama töö nagu kaks Linuxi kutset fork ja exec. Protsess sisaldab algselt ühtainust haru, kuid see saab luua uusi harusid kasutades süsteemikutset createthread. Protsesse saab rühmitada protsesside komplektiks, millel on mõned ühised omadused, näiteks kasutatav kettakvoot.

Windows pakub arendatud kaitsemehhanisme, mida võib kasutada failidele, kataloogidele ja mis tahes muule kernelis olevale objektile nagu protsess või harudeskriptorile, mäluhaldustabelitele, failisüsteemi poolt kasutatavatele andmestruktuuridele, jne. juurdepääsu kontrollimiseks.

Iga süsteemi objekt (k.a. failid ja kataloogid) on seotud andmestruktuuriga, mis sisaldab tema kohta käivaid kaitseatribuute. Objekti kaitseatribuudid on määratud vastavalt pääsuloendite mudelile, seega sisaldavad need protsesside hula, millel on lubatud ligipääs objektile, ning operatsioonide hulka, mida iga protsess võib objektil sooritada.

Executive on kerneli komponent, mis vastutab süsteemi turvameetmete jõustamise eest, sel eesmärgil kontrollib see kõigi protsesside poolt teostatavaid kõiki operatsioone.

# C.2.5 Kordamisküsimused

  1. Monoliitne kernel on iseloomulik
  • Windows OS'ile
  • Linux OS'ile X
  • Mõlemale OS'ile
  1. Mis on süsteemikutse fork ülesanne?
  • Uue lõime loomine
  • Uue protsessi loomine X
  1. Windows'i kernelikomponendid on:
  • Mitmekihilise ülesehitusega X
  • Monoliitse ülesehitusega
  • Rakendusliides

# Soovitatavad praktilised harjutused

  • Installeerida võimaluse korral virtuaalne testimiskeskkond (näiteks Hyper-V, Virtual PC, Virtualbox, VMware) ja luua virtuaalmasinad, kus installeeritud erinevad operatsioonisüsteemid (Linux, Windows)
  • Tuvastada erinevate operatsioonisüsteemide töötavate protsesside staatus, kasutades OS'i vahendeid
  • Tuvastada erinevate OS'ide kasutatav failisüsteem ja väikseim andmeühik selles
  • Tuvastada failide juurdepääsunimekirjad ja seal sisalduvad õigused
  • Tuvastada kasutusel virtuaalmälu maht

# Lisamaterjalid

  • EUCIP programmi materjal: Learning Materials for Information Technology Professionals (EUCIP-Mat)

  • Operating Systems: Internals and Design Principles (7th Edition) by William Stallings, 2011

  • Modern Operating Systems (3rd Edition) by Andrew S. Tanenbaum

  • Microsoft Press: Windows Internals (5th Edition) by Mark E. Russinovich and David A. Solomon

  • Terminid: http://vallaste.ee/, http://en.wikipedia.org