Kernel je računarski program koji je samo jezgro operativnog sistema, sa potpunom kontrolom nad svime u sistemu.[1] Na većini sistema, to je jedan od prvih programa koji se učitava prilikom pokretanja (nakon bootloadera). Kernel upravlja ostatkom pokretanja, kao i ulaznim/izlaznim zahtjevima iz softvera, pretvarajući ih u uputstva za obradu podataka za centralnu procesnu jedinicu. On upravlja memorijom i periferijom kao što su tastatura, monitor, štampač itd.
Kritični kod kernela se obično učitava u zasebnu oblast memorije, koja je zaštićena od pristupa aplikativnom softveru ili drugim, manje kritičnim dijelovima operativnog sistema. Kernel izvršava svoje zadatke, kao što su pokrenuti procesi, upravljanje hardverskim uređajima kao što je tvrdi disk i rukovanje prekidima, u zaštićenom prostoru kernela. Nasuprot tome, sve što korisnik radi je u korisničkom prostoru: pisanje u uređivaču teksta, pokretanje programa u GUI-u itd. Ovo razdvajanje sprječava miješanje podataka korisnika i kernel.[1] kao i sprječavanje neispravnih aplikativnih programa da ruše čitav operativni sistem.
Programski interfejs kernela je apstrakcijski sloj niskog nivoa. Kada proces pravi zahtjeve kernela, to se naziva sistemskim pozivom. Monolitni kernel pokreće sve instrukcije operativnog sistema u istom adresnom prostoru što je puno brže. Mikrokernel pokreće većinu procesa u korisničkom prostoru,[2] što je bolje za modularnost.[3]
Primarna funkcija kernela je da bude posrednik između korisnika i računarskih resursa, uključujući:[4]
Ključni stvar u upravljanju resursima je definicija adresnog prostora i mehanizam zaštite koji se koristi za posredovanje u pristupu resursima unutar domena.[4] Kernel također obezbjeđuje metode za sinhronizaciju i međuprocesnu komunikaciju (IPC).
Kernel ima potpuni pristup memoriji sistema i mora omogućiti procesima da sigurno pristupaju ovoj memoriji onako kako oni to zahtijevaju. Često je prvi korak u tome virtualno adresiranje, koje se obično postiže straničenjem i/ili segmentacijom.
Da bi se izvršavale funkcije, procesima je potreban pristup perifernim uređajima koji su povezani s računarom, a kojima upravlja kernel kroz upravljačke programe uređaja. Upravljački program uređaja je računarski program koji operativnom sistemu omogućava interakciju sa hardverskim uređajem.
1. Sa strane hardvera:
2. Sa strane softvera:
Sistemski pozivi su interfejsi koji omogućavaju korisničkim programima da traže određene usluge od jezgra (kernela) operativnog sistema. Kada korisnički program želi pristupiti funkcionalnostima koje su rezervisane za jezgro, koristi sistemski poziv kako bi prešao iz režima korisnika u režim jezgra i izvršio određenu operaciju koja zahteva privilegije jezgra.
Na primer, neki od uobičajenih sistemskih poziva uključuju:
open
: Otvaranje fajla.read
: Čitanje podataka iz fajla.write
: Pisanje podataka u fajl.fork
: Kreiranje novog procesa.exec
: Izvršavanje programa.exit
: Završetak procesa.malloc
: Alokacija dinamičke memorije.Sistemski pozivi pružaju korisničkim programima apstrakciju od hardverskih detalja i omogućavaju im da koriste funkcionalnosti jezgra. Kada se sistemski poziv izvrši, kontrola se prenosi u jezgro, gde se operacija sprovodi sa potrebnim privilegijama, a rezultati se vraćaju korisničkom programu.
Implementacija sistema za sistemski poziv može varirati između različitih operativnih sistema, ali suština ostaje ista: omogućavanje bezbednog i kontrolisanog pristupa funkcionalnostima jezgra iz korisničkog prostora.