Linux Kernel: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Jeerik (talk | contribs)
Jeerik (talk | contribs)
Line 11: Line 11:
Linux'i tuum on monoliitne, mis tähendab, et terve operatsioonisüsteem töötab eraldatult "tuuma keskkonnas" ehk kogu tegevus tuumas on rangelt reserveeritud tema operatsioonide jaoks ning kasutaja keskkond sellele ligi pääse. Selle tulemusena on süsteem turvalisem, kuna pakub kaitset nii mäluruumile kui riistvarale potentsiaalse sissetungi eest. Samuti töötavad tuuma keskkonnas riistvara draiverid. Lisaks tuumale endale asub tuuma keskkonnas ka GNU C teek, mis võimaldab süsteemi kutseid ja üleminekut kasutaja keskkonnast tuuma keskkonda. Kasutaja keskkonnas töötavad seevastu erinevad kasutaja rakendused, näiteks graafiline kasutajaliides ja muud kasutaja rakendused.
Linux'i tuum on monoliitne, mis tähendab, et terve operatsioonisüsteem töötab eraldatult "tuuma keskkonnas" ehk kogu tegevus tuumas on rangelt reserveeritud tema operatsioonide jaoks ning kasutaja keskkond sellele ligi pääse. Selle tulemusena on süsteem turvalisem, kuna pakub kaitset nii mäluruumile kui riistvarale potentsiaalse sissetungi eest. Samuti töötavad tuuma keskkonnas riistvara draiverid. Lisaks tuumale endale asub tuuma keskkonnas ka GNU C teek, mis võimaldab süsteemi kutseid ja üleminekut kasutaja keskkonnast tuuma keskkonda. Kasutaja keskkonnas töötavad seevastu erinevad kasutaja rakendused, näiteks graafiline kasutajaliides ja muud kasutaja rakendused.


[[File:fig1.jpg]]
[[File:Fig1.jpg]]


'''Skeem 1: GNU/Linux operatsioonisüsteemi arhitektuur'''
'''Skeem 1: GNU/Linux operatsioonisüsteemi arhitektuur'''

Revision as of 13:37, 5 January 2017

Linux Kernel

Linux kernel on Unix-tüüpi monoliitne operatsioonisüsteemi tuum, mis on välja arendatud Linus Torvalds'i poolt 1991. aastal. Nimi "Linux" tuleneb tema autori eesnimest ja tolleaegsest populaarsest operatsioonisüsteemist UNIX, millel Linux'i tuum põhineb. Linux'i tuum on vabavara ning põhineb GPL (Gnu Public Licence) litsensil.

Linux'i tuum sisaldab kõiki põhilisi omadusi, mis on iseloomulikud kaasaegsele operatsioonisüsteemile, muuhulgas multitegumtöötlust, virutaalmälu, jagatud teeke, mäluhaldust, mitmekihilist võrgusüsteemi (IPv4, IPv6).

Kuigi Linux'o tuum oli algselt välja arendatud 32-bitilise x86 tüüpi arhitektuuri jaoks, töötab Linux tänapäeval kõigi moodsate 32 ja 64-bitiliste masinate peal. Eriti levinud on Linux'i kasutamine serverites ning samuti domineerib mobiilsete seadmete turgu Android'i operatsioonisüsteem, mis põhineb omakorda Linux'il.

Arhitektuur

Linux'i tuum on monoliitne, mis tähendab, et terve operatsioonisüsteem töötab eraldatult "tuuma keskkonnas" ehk kogu tegevus tuumas on rangelt reserveeritud tema operatsioonide jaoks ning kasutaja keskkond sellele ligi pääse. Selle tulemusena on süsteem turvalisem, kuna pakub kaitset nii mäluruumile kui riistvarale potentsiaalse sissetungi eest. Samuti töötavad tuuma keskkonnas riistvara draiverid. Lisaks tuumale endale asub tuuma keskkonnas ka GNU C teek, mis võimaldab süsteemi kutseid ja üleminekut kasutaja keskkonnast tuuma keskkonda. Kasutaja keskkonnas töötavad seevastu erinevad kasutaja rakendused, näiteks graafiline kasutajaliides ja muud kasutaja rakendused.

Skeem 1: GNU/Linux operatsioonisüsteemi arhitektuur

Peamised Linux'i alamsüsteemid

Linuxi tuum on väga kompleksne ja mitmekihiline süsteem, mis omakorda koosneb mitmetest alamsüsteemidest.

Skeem 2: Arhitektuuriline vaade Linux'i alamsüsteemidele

Süsteemi kutsungiliides (System Call Interface):

Süsteemi kutsungiliides on õhuke kiht tuumas, mis vahendab funktsiooni väljakutseid kasutaja keskkonnast tuuma keskkonda.

Protsessihaldus (Process Management):

Protsessihalduse ülesandeks on protsesside täideviimine. Protsesse tuumas nimetatakse lõimedeks (*threads*) ning esindavad iseseisvat protsessori virtuaalset osa (lõimekood, andmed, registrid jne). Kuigi kasutaja keskkonnas kasutatakse pigem terminit protsess (või toiming), siis Linuxi puhul neid kontseptsioone spetsiaalselt ei eristata. Protsessihaldus peab lisaks tegelema ka protsessori ressursside eraldamisega aktiivsete lõimede vahel. Tuum kasutab selleks spetsiaalset planeerimisalgoritmi, mis töötab konstantses ajas ja ei ole sõltuv aktiivsete lõimede arvust, mis protsessori ressursse parajasti nõuavad. Tänapäeval toetavad need algoritmid ka mitut protsessorit (*Symmetric Multiprocessing*).

Mäluhaldus (Memory Management):

Lisaks protsessihaldusele peab tuum tegelema ka mäluhaldusega. Enamikes arhitektuuritüüpides hallatakse mälu 4KB suuruste puhvritena (*pages*). Linux'i tuum võimaldab lisaks tekitada abstraktsioone jagades mälu ka puhvrisiseselt, jälgides millised puhvrid on täis, pooltäis või tühjad. See võimaldab mäluhaldusskeemil dünaamiliselt vastavalt vajadusele mälu ümber jagada. Kuna mälu on jagatud mitmete erinevate protsesside vahel, võib juhtuda, et vaba mälu saab otsa, mistõttu tuleb puhvrid kirjutada kõvakettale. Seda protsessi nimetatakse saalimiseks (*swapping*).

Virtuaalne failisüsteem (Virtual File System):

Virtuaalne failisüsteem pakub vahekihti süsteemi kutsungiliidese ja tuuma poolt toetatud failisüsteemide vahel.


Skeem 3: Virtuaalne failisüsteem vahendab infot kasutajate ning failisüsteemide vahel

Virtuaalse failisüsteemi ülemises otsas on realiseeritud tavapärane API abstraktsioon, mis sisaldab põhilisemaid funktsioone (*nt open, close, read, write*). Allpool asub failisüsteemi abstraktsioon, mis defineerib kuidas kõrgema kihi funktsioone rakendatakse. Failisüsteemi kihi all asub omakorda puhver, mis sisaldab universaalseid funktsioone, mis ei sõltu konkreetsest failisüsteemi tüübist. See kiht optimeerib ligipääsu füüsilistele seadmetele ja muudele riistvarakomponentidele hoides lühiajaliselt mälus järgmisena vajaminevat infot. Puhvri all asuvad omakorda draiverid, mis juhivad juba konkreetsete füüsilise seadme tööd.

Võrgukihid (Networking Stack):

Võrgu ülesehitus Linux'is järgib kihilist arhitektuurimudelit ning koosneb seega mitmetest eriotstarbelistest kihtidest.

Seadme draiverid (Device Drivers):

Suur enamus Linux'i tuuma lähtekoodist eksisteerib seadme draiveritena, mis käituvad kui juhtprogrammid või ohjurid mingi konkreetse seadme kasutamiseks. Linux'is on draiverid järjestatud puuna vastavalt toetatavatele seadmetüüpidele (nt Bluetooth, I2C, Serial jne).

Lisaks eelnevale põgusale ülevaatele Linux'i tuuma ülesehitusest pakub ta lisaks palju huvitavaid võimalusi. Kuna tegemist on vabavaralise süsteemiga, mille lähtekood on kõigile avatud ning kättesaadav, on Linuxi tuumaga võimalik katsetada uusi protokolle ning nende edasiarendusi.

Veel üks kasulik omadus on dünaamiliselt laetavad moodulid, mis võimaldavad käigu pealt lisada ja eemaldada tarkvarakomponente.

Viited

https://www.ibm.com/developerworks/library/l-linux-kernel/l-linux-kernel-pdf.pdf