Kernel

**Kernel** je računarski program koji je samo jezgro operativnog sistema, sa potpunom kontrolom nad svime u sistemu. 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.
[mini| Kernel povezuje [aplikativni softver sa hardverom računara. ]]
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. što je bolje za modularnost.

## Funkcije 
Primarna funkcija kernela je da bude posrednik između korisnika i računarskih resursa, uključujući:

; Centralna procesorska jedinica (CPU)
: Ova komponenta računarskog sistema je odgovorna za *pokretanje* ili *izvršavanje* programa. Kernel preuzima odgovornost za odlučivanje u bilo kojem trenutku koji od mnogih pokrenutih programa treba biti dodijeljen procesoru ili procesorima.
; Memorija nasumičnog pristupa (RAM)
: Memorija nasumičnog pristupa koristi se za pohranjivanje programskih uputa i podataka. Kernel je odgovoran za odlučivanje koju i koliko memorije svaki proces može da koristi i za određivanje šta da uradi kada nema dovoljno memorije.
; Ulazno/izlazni uređaji
: U/I uređaji uključuju periferne uređaje kao što su tastature, miševi, diskovi, štampači, USB uređaji, mrežni adapteri i grafički izlazni uređaji. Kernel dodjeljuje zahtjeve od aplikacija za izvođenje U/I odgovarajućem uređaju i osigurava prikladne metode za korištenje uređaja

### Upravljanje resursima 
Ključni stvar u upravljanju resursima je definicija adresnog prostora i mehanizam zaštite koji se koristi za posredovanje u pristupu resursima unutar domena.  Kernel također obezbjeđuje metode za sinhronizaciju i međuprocesnu komunikaciju (IPC).

### Upravljanje memorijom 
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.

### Upravljanje uređajima 
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:

* Direktno povezivanje.
* Korištenje interfejsa visokog nivoa (Video BIOS).
* Korištenje upravljačkog programa uređaja nižeg nivoa
* Simulacija rada sa hardverom, dok se radi nešto sasvim drugo.

2. Sa strane softvera:

* Omogućavanje operativnom sistemu da direktno pristupa hardverskim resursima.
* Implementacija interfejsa za softver koji nije upravljački program (Primjer: TWAIN).
* Implementacija jezika, ponekad visokog nivoa (Primjer: PostScript).

### Sistemski pozivi 
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.

## Reference 
## Dalje čitanje 
* Andrew Tanenbaum, *Operativni sistemi - Dizajn i implementacija (Treće izdanje)* ;
* Andrew Tanenbaum, *Moderni operativni sistemi (drugo izdanje)* ;
* Daniel P. Bovet, Marco Cesati, *Linux kernel* ;
* David A. Peterson, Nitin Indurkhya, Patterson, *Organizacija i dizajn računara*, Morgan Koffman ( ) ;
* BS Chalk, *Organizacija računara i arhitektura*, Macmillan P. ( ).

Kategorija:Računarstvo
Kategorija:Operativni sistemi
Kategorija:Kerneli operativnih sistema