Što je jezgra

Upload: jaija-tiiti

Post on 11-Oct-2015

8 views

Category:

Documents


0 download

DESCRIPTION

ISO OSI

TRANSCRIPT

to je jezgra

Operacijski sistem je specijalan program ili skupina programa koji upravlja raunarm u smislu sklopovlja (engl. hardware) i programske podrke (engl. software). Operacijski sistem tvori osnovnu podrku za razliite dodatne programe odnosno softver, pruajui razliite usluge. Takve usluge su na primjer upravljanje procesima, upravljanje memorijom, upravljanje datotenim sistemima, mrena podrka, upravljanje sigurnou, grafiko ili tekstualno suelje, upravljaki programi za specifino sklopovlje i sl. Operacijski sistemi se razlikuju po namjeni (osobna raunara, ugraeni sistemi, mainframe raunara), filozofiji rada i izvedbe (DOS, Unix, Windows, OS X), programskom jeziku u kojem je implementiran, itd. Kao rezultat takvih razliitih kriterija namjene i izvedbe danas postoje stotine razliitih operacijskih sistema.

Jezgra operacijskog sistema je centralni dio modernog operacijskog sistema. Njena zadaa je upravljanje sklopovljem na najniem moguem nivou kao i pruanje razliitih ve navedenih usluga aplikacijama. Jezgra upravlja raunalnim resursima i predstavlja sloj izmeu samih korisnikih programa odnosno korisnike okoline (engl. user land) i fizikog raunalnog sklopovlja. Takav sloj nazivamo i jezgrinom okolinom (engl. kernel land) i on moe biti "deblji" ili "tanji" u ovisnosti o koliini usluga koje jezgra prua korisnikoj okolini. Razlog postojanja takvog sloja je u dizajnu veine modernih operacijskih sistema koji podrazumijeva niz apstrakcija koje se oslanjanju jedna na drugu. Takav dizajn se najee promatra kao piramida apstrakcija ili kao niz krunih slojeva pri emu je jezgra najdublje i predstavlja sloj najblii samom sklopovlju raunara. Kao posljedica ovakvog naina izvedbe operacijskog sistema dobivamo pojednostavljenje korisnikih aplikacija budui da one ne moraju znati specifinosti za pojedino raunar odnosno sklopovlje ije usluge koriste. Aplikacije se mogu izvravati na razliitom sklopovlju i dobivaju uniformnu apstrakciju, a jezgra se brine o razliitim internim aspektima.

Tipina jezgra modernog operacijskog sistema se tipino izvrava u tzv. nadglednom nainu rada (engl. supervisor mode) to praktino znai da ima vrne ovlasti nad svim sklopovljem raunara (npr. moe mijenjati sadraje registara pojedinog ureaja ili samog centralnog procesora, upravljati prekidima, izvravati privilegirane naredbe na centralnom procesoru, pristupati ovlatenim adresnim prostorima i sl). Za svaki program koji ima takve ovlasti (odnosno postavljenu takvu zastavicu) se smatra da ne smije nikada doi u nedefinirano odnosno neispravno stanje, budui da time najee dovodi do pada cijelog operacijskog sistema i svih korisnikih aplikacija. Ovakva podjela naina rada ima hardversku podlogu, pa veina modernih procesora ima nekoliko naina rada. Specifino, popularni x86 procesori iz PC raunara imaju etiri naina rada koji se zovu prstenovi (engl. ring). Jezgra (odnosno aplikacije sa jezgrinim ovlastima) se tipino izvrava u ring0, dok se korisnike aplikacije izvravaju u ring3.

Kada i kako se uitava jezgra

Nakon paljenja raunara i nakon izvravanja inicijalnog testiranja sklopovlja raunara odnosno obavljanja POST (engl. power-on self-test) procedura, potrebno je uitati jezgru sistema. Jezgra nije u stanju sama sebe uitati ve to obavlja minijaturni pomoni program odnosno punilac (engl. boot loader). Njegova je zadaa dohvat jezgre bilo sa vrstog medija ili mree, uitavanje u radnu memoriju i predavanje kontrole jezgri. U nekim sluajevima je reeni punilac toliko rudimentaran da nije u stanju sam uitati jezgru, ve predaje kontrolu sekundarnom puniocu (engl. second-stage boot loader) koji je u stanju prepoznati vie tipova fizikih ureaja (mekih diskova, tvrdih diskova, mrenih ureaja, USB kljueva, CD/DVD ureaja i sl.) i dohvatiti jezgru s njih. Naposljetku se zapoinje izvravati jezgra u nadglednom nainu rada, inicijalizira (postavlja razliite varijable na neke pretpostavljene standardne vrijednosti) i pokree prvi korisniki proces. U veini sluajeva jezgra nakon toga ulazi u "praznu" petlju (engl. idle loop odnosno idle process) u kojem samo reagira na razliite vanjske podraaje. Takvi podraaji su npr. prekidi (engl. interrupts) koji potiu od fizikih ureaja ili pak reakcije na usluge koje zatrae korisnike aplikacije.Osnovne zadae

Osnovni dijelovi svakog raunara bi bili centralni procesor, memorija i ulazno/izlazne jedinice. Upravo se jezgra sistema brine o ispravnoj raspodjeli reenih resursa meu korisnikim aplikacijama, ma koliko ih god bilo. Takoer je oito da jezgra mora moi omoguiti izvravanje vie aplikacija odnosno procesa pri emu su takoer potrebne i usluge sinkronizacije procesa, meusobne komunikacije procesa, dijeljene memorije meu procesima i sl. Jezgra se mora pobrinuti da svaka aplikacija dobije vlastiti adresni prostor i da se moe izvravati konkurentno sa ostalim aplikacijama. Moderni operacijski sistemi su u stanju izvravati aplikacije istovremeno zbog vie fizikih procesora, ali i prividno istovremeno kad je broj aktivnih aplikacija vei od broja procesora. Takva jezgra je viezadana (engl. multitasking), a uglavnom funkcionira na takav nain da svaka aplikacija odnosno proces dobiva odreeni vremenski odsjeak u kojem je procesor izvrava, te se zatim se stanje takvog procesa pohranjuje odnosno deava se izmjena konteksta (engl. context switch) i sljedei proces dolazi na svoj red. Kakav e biti redoslijed posluivanja procesa odreuje politika posluivanja (engl. process scheduling policy), a postoje razliiti tipovi posluivanja: kruno, stepeniasto, proporcionalno, teinsko i prioritetno, itd.

Osim sa procesima, jezgra sistema mora upravljati i memorijom i to na siguran nain. Procesi za adresni prostor koji koriste najee dobivaju virtualne adrese koje mogu i ne moraju biti u stvarnoj fizikoj memoriji. Pri tome imamo najee dva stroga odijeljena prostora: jedan koji je namijenjen korisnikim aplikacijama (engl. user space) i jedan koji je za jezgru i njene potrebe (engl. kernel space). Korisnikim aplikacijama nije nikad dozvoljeno ni itanje ni pisanje u jezgrin prostor, da ne bi dovele u pitanje sigurnost i pouzdanost sistema. Virtualne adrese takoer omoguavaju i uniformnu raspodjelu razliitih adresnih prostora aplikacijama kao i to da se oni ne preklapaju za pojedine aplikacije. Naravno, tu je takoer prisutna apstrakcija pa se same aplikacije ne moraju brinuti o kakvoj je memoriji rije i gdje se ona nalazi. Takoer smo spomenuli i razliite fizike ureaje o kojima se jezgra mora brinuti. Jezgra u svakom trenutku mora znati stanje ureaja i njegovu fiziku smjetenost (sabirnica, adresa, itd). Jezgra najee sadri niz upravljakih programa (engl. drivers) za pojedine ureaje koji omoguavaju detekciju i inicijalizaciju ureaja, ulazno/izlazne operacije nad istima i sl. Takvi jezgrini programi su u stanju prepoznati neispravan rad ureaja, pojavu novog ureaja na sistemu i ostala razna stanja pojedinog ureaja. Naposljetku, jezgra i aplikacije moraju imati neki zajedniki jezik odnosno jezgra mora pruati neko uniformno suelje prema aplikacijama kako bi aplikacije mogle pozivati i dobivati njene usluge. Takvo suelje moe biti npr. u formi C biblioteke koja s jedne strane prua suelje u visokom jeziku a s druge strane interno obavlja jezgrine pozive (engl. system calls).

Tipovi jezgre

to se samog dizajna i naravno same implementacije jezgre tie, postoji par osnovnih tipova. Dva najinteresantnija i ujedno najvie suprotstavljena tipa su monolitna jezgra (engl. monolithic kernel) i mikrojezgra (engl. microkernel).

Kod monolitne jezgre se cijela jezgra izvrava u jezgrinom prostoru i to upravo u nadglednom nainu rada. Za takvu jezgru je karakteristina vrlo snana apstrakcija nad sklopovljem kao i suelje prema aplikacijama sa vrlo bogatim skupom sistemskih poziva i inih primitiva. Unato injenici da su razne funkcionalnosti najee implementirane u razliitim dijelovima jezgre, stvarno odvajanje takvih dijelova je u praksi nemogue zbog vrlo visoke razine isprepletenosti samog izvornog koda i podatkovnih struktura. Takva visoka razina meusobne integracije svih dijelova utie na dobre performanse zbog minimalnih nivoa apstrakcije izmeu samih dijelova kao i visoke efikasnosti koja je posljedica takvog dizajna. Glavna mana ovakvog pristupa je prvenstveno problem da greka u bilo kojem dijelu ovakve jezgre najee utie na pad cijelog sistema, budui da sve komponente nuno vjeruju jedna drugoj. Poznatiji primjeri monolitnih jezgri su: Linux (postojanje modula ne mijenja injenicu da je rije o monolitnom dizajnu jezgre), BSD jezgre, Solaris, DOS, veina Unix jezgri kao i Windows jezgra (hibridnog dizajna budui da je dio jezgrinih modula implementiran u vidu korisnikih aplikacija, no smatra se u osnovi monolitnom jezgrom).

Mikrojezgra je sa druge strane jezgra minimalistikog dizajna: aplikacijama se pruaju tek najosnovnije nune usluge (odnosno sistemski pozivi), a to su ve spomenuto upravljanje adresnim prostorom, vremenskim prekidima, dretvama (engl. threads) pojedinog procesa te komunikacijom meu procesima. Sve ostale dodatne usluge poput grafikih suelja, mrenog stoga i sl. su implementirane u korisnikom prostoru u vidu posebnih servisa (engl. servers). Zbog pojave takvih servisa izvan jezgrinog prostora, kod mikrojezgri dodatno dolazi do izraaja potreba za vrlo efikasnom komunikacijom meu procesima (engl. inter-process communication) kako je prenoenje poruka jedan od glavnih aspekata rada. Zbog toga to se daleko vie poruka prenosi iz jezgrinog prostora u korisniki prostor i obrnuto, mikrojezgre obino imaju neto loije performanse od monolitnih jezgri. Spomenuti dodatni servisi su u praksi obine korisnike aplikacije koje se mogu pokretati i gasiti bez loih posljedica za ostatak sistema: jedina njihova privilegiranost je da mogu pisati i itati neke dijelove memorije koji su nedostupni ostalim procesima. Glavni problem takvog pristupa gdje se neki sistemski servisi mogu gasiti i paliti po potrebi je nestanak strogo definiranog stanja kao kod monolitnih jezgri. Dakle, sasvim je mogue da e u nekom trenutku nestati kakav servis poput mrenog stoga i da e sve korisnike aplikacije koje su ovisile o mrenom stogu jednostavno doi u nedefinirano stanje. Iz takvog razloga veina operacijskih sistema koji su bazirani oko mikrojezgri vodi rauna o stanju pa omoguava pauziranje aplikacija koje ekaju da se povrati odreena usluga i sl. Primjeri mikrojezgri su takoer prisutni u modernim operacijskim sistemima: Minix, AmigaOS, Mach (GNU Hurd, XNU odnosno Mac OS X), QNX, L4 obitelj, Symbian OS, Singularity.