Osnovne zadaće

Osnovni dijelovi svakog računala bi bili centralni procesor, memorija i ulazno/izlazne jedinice. Upravo se jezgra sustava brine o ispravnoj raspodjeli rečenih resursa među korisničkim aplikacijama, ma koliko ih god bilo. Također je očito da jezgra mora moći omogućiti izvršavanje više aplikacija odnosno procesa pri čemu su također potrebne i usluge sinkronizacije procesa, međusobne komunikacije procesa, dijeljene memorije među procesima i sl. Jezgra se mora pobrinuti da svaka aplikacija dobije vlastiti adresni prostor i da se može izvršavati konkurentno sa ostalim aplikacijama. Moderni operacijski sustavi su u stanju izvršavati aplikacije istovremeno zbog više fizičkih procesora, ali i prividno istovremeno kad je broj aktivnih aplikacija veći od broja procesora. Takva jezgra je višezadaćna (engl. multitasking), a uglavnom funkcionira na takav način da svaka aplikacija odnosno proces dobiva određeni vremenski odsječak u kojem je procesor izvršava, te se zatim se stanje takvog procesa pohranjuje odnosno dešava se izmjena konteksta (engl. context switch) i sljedeći proces dolazi na svoj red. Kakav će biti redoslijed posluživanja procesa određuje politika posluživanja (engl. process scheduling policy), a postoje različiti tipovi posluživanja: kružno, stepeničasto, proporcionalno, težinsko i prioritetno, itd.

Osim sa procesima, jezgra sustava mora upravljati i memorijom i to na siguran način. Procesi za adresni prostor koji koriste najčešće dobivaju virtualne adrese koje mogu i ne moraju biti u stvarnoj fizičkoj memoriji. Pri tome imamo najčešće dva stroga odijeljena prostora: jedan koji je namijenjen korisničkim aplikacijama (engl. user space) i jedan koji je za jezgru i njene potrebe (engl. kernel space). Korisničkim aplikacijama nije nikad dozvoljeno ni čitanje ni pisanje u jezgrin prostor, da ne bi dovele u pitanje sigurnost i pouzdanost sustava. Virtualne adrese također omogućavaju i uniformnu raspodjelu različitih adresnih prostora aplikacijama kao i to da se oni ne preklapaju za pojedine aplikacije. Naravno, tu je također prisutna apstrakcija pa se same aplikacije ne moraju brinuti o kakvoj je memoriji riječ i gdje se ona nalazi. Također smo spomenuli i različite fizičke uređaje o kojima se jezgra mora brinuti. Jezgra u svakom trenutku mora znati stanje uređaja i njegovu fizičku smještenost (sabirnica, adresa, itd). Jezgra najčešće sadrži niz upravljačkih programa (engl. drivers) za pojedine uređaje koji omogućavaju detekciju i inicijalizaciju uređaja, ulazno/izlazne operacije nad istima i sl. Takvi jezgrini programi su u stanju prepoznati neispravan rad uređaja, pojavu novog uređaja na sustavu i ostala razna stanja pojedinog uređaja. Naposljetku, jezgra i aplikacije moraju imati neki zajednički jezik odnosno jezgra mora pružati neko uniformno sučelje prema aplikacijama kako bi aplikacije mogle pozivati i dobivati njene usluge. Takvo sučelje može biti npr. u formi C biblioteke koja s jedne strane pruža sučelje u visokom jeziku a s druge strane interno obavlja jezgrine pozive (engl. system calls).