Operacinė sistema (OS) tapo tokia įprasta kompiuterio dalimi, kad vartotojai net nesusimąsto, kokia ji svarbi. OS šiais laikais neturi tik kai kurie žaidimų kompiuteriai ir integruotosios sistemos, kurių įkrovos programa automatiškai sužadina taikomąją programą.
Operacinė sistema yra atsakinga už visus kompiuterio aparatinius ir programinius išteklius, todėl naudotis įrenginiui ar kurti jo programas daug paprasčiau. Nuo OS darbo efektyvumo priklauso viso kompiuterio darbo sparta, stabilumas ir patogumas. Daugybės operacinių sistemų pagrindą sudaro branduolys.
Hierarchija – stabilaus darbo pagrindas
Svarbiausia OS dalis – branduolys (kernel, core), paskirstantis kompiuterio išteklius ir palaikantis ryšius tarp programinių procesų ar aparatinės įrangos. Jis sukuria žemiausią aparatinės įrangos (ypač procesoriaus, atmintinės ir įvesties bei išvesties įrenginių) abstrakcijos lygmenį. Pasitelkusios branduolio funkcijas, programos gali naudotis kompiuterio įranga neatsižvelgiant į jos modelį.
Kiekviena kompiuteryje veikianti programa yra vadinama procesu, kuris priklauso tam tikram prioriteto lygmeniui (protection ring): svarbiausi sistemos procesai (branduolys) – žemiausiam (nuliniam) lygmeniui (ring 0), mažiau svarbūs yra aukščiau. Tiesa, dauguma mums įprastų OS („Windows“, „Linux“) naudojasi tik dviem – branduolio arba priežiūros (ring 0, supervisor mode) ir vartotojo (ring 3, user mode) lygmenimis, nors x86 procesoriuose jų yra daugiau.
Priežiūros režimu vykstantis procesas gali atlikti visas procesoriaus instrukcijas ir adresuoti visą atmintinę, tuo tarpu vartotojo procesas dalies instrukcijų ir kitų procesų atmintinės nepasieks. Taip branduolys apsisaugo nuo blogai veikiančio vartotojo proceso ir išsaugo visos OS stabilumą. Privilegijuotu režimu veikianti vartotojo programa (taip būdavo, pavyzdžiui, DOS sistemų laikais) gali sutrikdyti viso kompiuterio darbą.
x86 procesoriuose yra papildomos instrukcijos, valdančios ring 0 procesų prieigą prie įrangos. Hiperpriežiūros (hypervisor) procesas, veikiantis „-1“ lygmeniu, leidžia sukurti keletą nepriklausomų virtualių mašinų (pavyzdžiui, teikiant virtualių serverių nuomos paslaugas) ir prižiūrėti jų OS darbą. Deja, tokia galimybe gali pasinaudoti ir kompiuterių kenkėjai.
Barbė devyndarbė
Kraunantis kompiuteriui, įkrovos tvarkyklė sužadina OS branduolį (paprastai priežiūros režimu), kuris parengia save darbui ir pradeda pirmąjį OS procesą. Paprastai nuo šio momento branduolio procesas vyksta netiesiogiai. Įprasta, kad branduolys taip pat sužadina vadinamąjį nieko neveikimo procesą (idle loop), prasidedantį tada, kai kompiuteris neužimtas.
Sužadindamas procesą, branduolys sukuria programos adresų erdvę, įkrauna programos instrukcijų failą į atmintinę, sudaro seką ir nukreipia procesoriaus instrukcijos rodyklę į programos instrukcijų sekos pradžią. Programai skirta atmintinės adresų erdvė nebūtinai turi priklausyti operatyviajai atmintinei.
Jei tam tikru metu programa nenaudojama, OS branduolys gali perkelti ją ir jos atmintinės sritį iš operatyviosios atmintinės į diską (virtualiąją atmintinę). Tokiu būdu OS gali efektyviau vykdyti daugiau atmintinės reikalaujančius procesus. Virtualioji atmintinė veiksmingai išnaudojama tada, kai bendras programų atmintinės poreikis neviršija triskart didesnio operatyviosios atmintinės kiekio. Toliau darbo sparta pradeda mažėti. Žinoma, geriausia į kompiuterį įdiegti papildomus atmintinės modulius.
Paprastai viename procesoriuje (branduolyje) gali vykti tik vienas procesas, išskyrus tuo atveju, jei procesorius suderinamas su keleto programinių gijų (simultaneous multithreading) vykdymo technologija. Tačiau daugelio užduočių (multitask) OS branduoliai geba taip paskirstyti procesoriaus laiką, kad vartotojui susidaro įspūdis, jog keletas procesų vyksta vienu metu. Procesoriaus laikas gali būti dalijamas pagal tam tikrą grafiką (pre-emptive multitasking) ar pagal poreikį (co-operative multitasking).
Deja, ne visos programos nori „kooperuotis“, jose dažnai pasitaiko klaidų, todėl griežtai procesoriaus laiko neskirstančių sistemų (pavyzdžiui, „Mac OS“, „Windows“ 9x) darbas neretai sutrinka, kuriai nors programai „pamiršus“ pranešti branduoliui, kad jau galima vykdyti kitą procesą. Griežtai dalijant procesoriaus laiką, šios problemos ne taip pastebimos, todėl „Linux“, „Mac OS X“, BSD ir „Windows NT“ šeimos OS geriau susidoroja su keletu užduočių.
Mikrobranduolys ar monolitas?
Pavestas užduotis branduoliai atlieka skirtingai, mat skiriasi jų struktūra. Daugelio UNIX šeimos operacinių sistemų, senų MAC OS, MS-DOS (ir jos pagrindu veikiančios „Windows“ 9x sistemos) branduoliai yra vientisos programos, vykdomos privilegijuotu režimu, todėl monolitiniai branduoliai dirba labai sparčiai ir veiksmingai išnaudoja kompiuterio išteklius.
Tačiau didelė integracija turi ir trūkumų: dėl vieno modulio klaidos gali sutrikti viso branduolio darbas. Praėjusio amžiaus aštuntajame ir devintajame dešimtmečiuose UNIX sistemų branduolio kodą sudarė apie 100 tūkst. eilučių, tuo tarpu dabartinių Linux sistemų branduolio tekstus – daugiau nei 4,5 mln. eilučių.
Atsižvelgus į tai, kad būtina įvertinti kiekvieno komponento įtaką kitiems, labai padidėja klaidos tikimybė. Kita anksčiau buvusi labai aktuali monolitinio branduolio problema – didelis atmintinės poreikis, todėl buvo nuspręsta įkrauti tik būtinas branduolio funkcijas (modulius) ir taip sumažinti privilegijuotu režimu vykdomo kodo kiekį iki minimumo. Tokiu principu veikia daugelis dabartinių „Linux“ ar BSD sistemų, pagal poreikį įkraunančių ar pašalinančių iš atmintinės branduolio modulius.
OS inžinieriai nusprendė dar labiau sumažinti branduolį. Mikrobranduolio architektūra pagrįsta tuo, kad privilegijuotu režimu veikiantis branduolys pateikia tik minimalų funkcijų rinkinį, o visas kitas OS funkcijas vartotojo režimu atlieka branduolio tarnybos. Paprastai mikrobranduolyje paliekamos tik procesų, atmintinės ir tarpprocesinių ryšių valdymo funkcijos. Taip gerokai paprasčiau užtikrinti stabilų branduolio darbą, nes, sutrumpėjus branduolio kodui, mažėja tikimybė padaryti klaidą, o sutrikusią tarnybą bet kada galima perkrauti. Tokią sistemą paprasčiau tobulinti, nes į OS įtraukus naują tarnybą nereikia keisti branduolio kodo.
Šiuo atveju procesų duomenų mainai ilgiau trunka, mikrobranduolio architektūra kenčia nuo perteklinių konteksto keitimo (context switch) operacijų: procesoriui reikia vykdyti privilegijuotą ir paprastą kodus. Problemų gali kilti ir įkraunant kompiuterį, mat mikrobranduolys paprasčiausiai neturės tvarkyklių kompiuteriui valdyti.
Nepaisant kai kurių trūkumų, mikrobranduoliai sėkmingai įsitvirtino ir komercinėse sistemose. „Amiga“ OS, „Morph“ OS, realiojo laiko OS QNX ir daugelyje mobiliųjų telefonų įrengta „Symbian“ OS yra mikrobranduolio sistemos. Nuo 2003 metų „Microsoft“ tyrimų skyrius kuria patikimą operacinę sistemą „Singularity“ mikrobranduolio pagrindu. Dabartinės „Microsoft“ OS naudoja mišrius branduolius, nors oponentai juos tapatina su paprastais monolitiniais.
Hibridinės sistemos
Hibridiniai branduoliai savo struktūra primena mikrobranduolius, tačiau kai kurios dalys ar visos jų tarnybos vykdomos privilegijuotu režimu. Taip išvengiama papildomų konteksto keitimo operacijų, tačiau netenkama saugumo ir stabilumo privalumų.
Dabartinių „Windows“ sistemų branduolys buvo kuriamas remiantis „Mach“ mikrobranduoliu. Tačiau, kitaip nei „Mach“, NT branduolio įvesties ir išvesties, energijos valdymo, grafinės aplinkos, „Plug and Play“ ir daugelis kitų tarnybų veikia branduolio režimu. Dėl to, sutrikus vaizdo posistemio darbui Windows sistemoje, dažniausiai perkraunamas kompiuteris. „Mac OS X“ taip pat naudoja hibridinį XNU branduolį, sukurtą bendrovės „NeXT“. Pastarąją „Apple“ įsigijo kurdama senos „Mac OS“ pakaitalą. Kitas svarstomas „Apple“ pasirinkimas buvo tuo metu perspektyvi „BeOS“ sistema, kurioje buvo naudojamas labai spartus ir šiuolaikiškas mišrus branduolys.
Tačiau liūdnas „BeOS“ likimas rodo, kad, nepaisant svarbos, branduolys negali užtikrinti sklandaus OS darbo. Net ir būdamas efektyvus, „Linux“ branduolys galėjo likti studento Linuso Torvaldso laboratoriniu darbu, jei ne funkcionali GNU funkcijų biblioteka ir kitos GNU projekto programos, reikalingos visavertei OS sukurti. Apie tai, ko reikia, kad OS branduolys taptų visaverte OS, skaitykite kitąkart.
Interneto nuorodos
„Wikipedia“ internetinės enciklopedijos puslapis, skirtas OS branduoliui.