Nazad | Maturski rad | Dalje |
|
- Kernel -
Kernel je deo sistema koji se izvršava u zaštićenom
(protected) modu hardvera i koji posreduje između korisničkih programa i hardvera.
Kernel pruža osnovne funkcije sistema; on kreira, izvršava i upravlja
procesima, pruža pristup fajl sistemu i mrežnim protokolima i dr. Ove funkcije
se nazivaju sistemski pozivi (system calls) i korisniku su dostupne kroz
biblioteku rutina koje može pozivati iz svojih programa. Sistemski pozivi su
jedini način na koji procesi mogu da pristupe ovim servisima.
Govoreći tradicionalnom terminologijom operativnih
sistema, kernel je malo jezgro softvera koje pruža minimalne servise koji su
neophodni za implementiranje dodatnih servisa operativnog sistema. U savremenim
istraživačkim operativnim sistemima kao što su Chorus, Mach,
Tunis i V Kernel, servisi kao što su fajl sistemi, mrežni protokoli i dr.
potpuno su izdvojeni iz kernela. No, UNIX kernel je od samog početka bio monolitni,
tj. nije bio podeljen u više procesa. Ovakva struktura kernela je odabrana zbog
jednostavnosti i performansi.
Najveći deo kernela implementira sistemske servise
kojima aplikacije pristupaju kroz sistemske pozive. U 4.4BSD (pa tako i u FreeBSD)
on obuhvata:
- osnovne servise kernela: manipulisanje
tajmerom i sistemskim satovima, deskriptorima i procesima
- upravljanje memorijom: straničenje (paging)
i zamena stranica (swapping)
- opšti sistemski interfejsi: I/O, kontrola
deskriptora
- fajl sistem: upravljanje fajlovima,
direktorijumima, prevođenje putanja fajlova
- manipulisanje terminalima: interfejs
terminala i discipline za procesovanje karaktera
- među-procesna komunikacija: pipe i socket
- mrežna komunikacija: komunikacioni
protokoli, routing
Većina ovih servisa su nezavisni od mašine i mogu se
portovati na druge arhitekture. Delovi kernela koji su zavisni od konkretne
mašine su izolovani od ovih delova. To su:
- startovanje sistema
- manipulisanje zamkama (trap handling) i
greškama (fault handling)
- manipulisanje radnog konteksa procesa
(run-time context) procesa
- konfigurisanje i inicijalizovanje hadrverskih
uređaja
- radna podrška za ulazno/izlazne (I/O)
uređaje
Granica između programa koji se izvršavaju u
kernel-modu i korisničkom modu se ostvaruje pomoću hardverske podrške
ovim servisima. Kernel se izvršava u adresnom prostoru koji je nedostupan
korisničkim programima. Privilegovane operacije, kao što su pokretanje
ulazno/izlazne operacije ili upravljanje procesorom (CPU) dostupne su samo kernelu.
Sistemske pozive koriste korisnički programi (aplikacije) kako bi pristupili ovim
operacijama. Sistemski poziv se izvršava sinhronizovano sa aplikacijom
koja ga je pozvala; program se ne izvršava dok kernel izvršava akciju koju mu
nalaze sistemski poziv. Ukoliko izvršavanje sistemskog pozva traje dugo
(npr. upisivanje podataka na disk), izvršavanje aplikacije se može nastaviti i pre
nego što se sistemski poziv završi (podaci će biti snimljeni u bafer, pa kasnije
snimljeni na disk).
Postoje tri vrste ulaza u kernel: hardverski interapt,
hardverska zamka (trap) i softverska zamka (softwer-initiated trap).
Hardverske interapte stvaraju spoljni događaji, kao što je ulazno/izlazni uređaj
ili sat koji prijavljuje prolazak vremena. Hardverski interapti se javljaju
asinhronizovano i nisu vezani za proces koji se trenutno izvršava.
Za manipulisanje hardverskim interaptom odgovoran je odgovarajući device-driver
interupt handler u kernelu.
Hardverska zamka je vezana za proces koji se
trenutno izvršava i može biti ili sinhronizovana ili asinhronizovana. Javljaju se usled
neke greške kao npr. deljenje nulom. Proces sazna za grešku ili tako što primi
signal, ili tako što bude ugašen.
Softverske zamke se koriste da zakažu
što skorije izvršavanje nekih događaja (mrežna komunikacija, vremensko planiranje
izvršavanja...) i javljaju se sinhronizovano. Za softverske i hardverske zamke
odgovoran je deo kernela pod imenom trap handler.
Sistemski pozivi su specijalni slučaj softverske zamke
i za njih je odgovoran deo kernela pod imenom syscall handler. Nakon
izvršavanja sistemskog poziva programu se šalje informacija o tome da li je
sistemski poziv uspešno izvršen i identifikator greške ukoliko se javila, posle
čega kernel odlučuje koji proces će nastaviti da izvršava.
Svaka aplikacija ima svoj sopstveni adresni prostor
koji se razlikuje od adresnog prostora kernela. Kernel određuje koje će procese kada
da izvršava, prekine sa izvršavanjem ili suspenduje radi izvršavanja drugog procesa.
Nazad | Početak | Dalje | |
PORTS&PACKAGES | PROCESI |