Site hosted by Angelfire.com: Build your free website today!
Nazad Maturski rad Dalje

 

 
  DIZAJN  
 

 

 

- 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