Arhitekture operativnih sistema
Postoje različiti pristupi pri projektovanju operativnih sistema. Razlike se najčešće ogledaju u skupu funkcija koje će se nalaziti u jezgru i njihovoj organizaciji (strukturi). U odnosu na tip jezgra postoje:
– Monolitni sistemi;
– Slojeviti sistemi
– Sistemi zasnovani na mikrojezgru;
– Hibridni sistemi;
– Sistemi zasnovani na egzojezgru
Monolitni sistemi
Za arhitekturu operativnog sistema kaže se da je monolitna, tj. da ima monolitno jezgro (monolithic kernel), ukoliko se u jezgru nalaze svi servisi operativnog sistema zajedno sa drajverima integrisani u jedan program (slika 1.10.). Pri tome, svi delovi se pokreću u istom trenutku, izvršavaju u sistemskom režimu i u istom delu memorije. Prilikom pokretanja ovakvog operativnog sistema jezgro se u memoriju ucitava u celosti kao jedan izvrsni program. Funkcije jezgra mogu jedna drugu pozivati bez ograničenja. lako se čini da su ovakvi sistemi jednostavni, oni mogu biti vrlo složeni.
Veoma velika povezanost funkcija na niskom nivou obično doprinosi brzini i efikasnosti ovakvih jezgara. Monolitno jezgro predstavlja jedinu apstrakciju nad hardverom tako da se aplikativnim programima na raspolaganje stavljaju sistemski pozivi kroz koje su implementirane usluge operativnog sistema.
slika 1.10
Jedna od najvećih mana monolitnih jezgara je loša otpornost na greške.
U slučaju da dođe do greške u nekom od podsistema, dolazi do problema koji mogu uticati na ceo sistem i najčešće je jedino rešenje njegovo ponovno podizanje. Neki od najpoznatijih sistema koji imaju monolitna jezgra su: MS-DOS, BSD, AIX, Windows 98 i GNU/Linux. Na slici 1.10. ilustrovan je primer monolitnog operativnog sistema.
Slojeviti sistemi
Slojevita arhitektura podrazumeva da je operativni sistem izgrađen od zasebnih slojeva (celina) koji se nadograđuju jedan na drugi. Pri tome, svaki sloj ima određene funkcije koje su opisane kroz njegov interfejs ka višem sloju. Slojevi se implementiraju tako da mogu da koriste isključivo usluge prvog sloja ispod sebe. Iz tog razloga projektovanje slojeva je veoma zahtevan posao jer se mora voditi računa o raspodeli funkcija.
Najveći problem ovakvih sistema je neefikasnost. Naime, sistemski poziv prolazi kroz više slojeva a pri svakom prolazu se prosleđuju podaci, menjaju parametri itd. što dovodi do usporenja.
slika 1.11
Pri tome, slojevi ne moraju biti u jezgru operativnog sistema već, zavisno od implementacije, određeni slojevi mogu funkcionisati u korisničkom režimu (slika 1.11.). Najnizi sloj čini hardver ili njegova apstrakcija, na
najvišem sloju je podrška za aplikativne programe a između može biti proizvoljan broj slojeva. U najpoznatije operativne sisteme sa slojevitom arhitekturom spadaju: THE, Multics itd.
Sistemi zasnovani na mikrojezgru
Za razliku od monolitnih sistema, a u većini implementacija i od slojevitih sistema, arhitektura koja se zasniva na mikrojezgru (microkernel) podrazumeva minimalno jezgro u kojem se nalaze samo najosnovnije
funkcije. Deo funkcija koje bi u prethodnim slučajevima bile deo jezgra se izmestaju u korisnički prostor i to u zasebne prostore u memoriji tako da sa bezbednijeg nivoa pristupaju jezgru. Na ovaj način se rešavaju problemi koji nastaju kada dođe do greške pri primeni neke od ovih funkcija, tako da se to ne odražava na funkcionisanje jezgra. Usluge operativnog sistema koje su izmeštene iz jezgra se njemu obraćaju kako bi ostvarile svoje ciljeve (prvenstveno pristup hardveru), a preko njega i komuniciraju sa drugim uslugama. Usluge koje obavijaju slične zadatke u okviru operativnih sistema se grupišu u procese koji se nazivaju serverski
procesi, a često i samo serveri. Drajveri se često ne nalaze u mikrojezgru, već pripadaju odgovarajućim serverima. Takode, server za upravljanje memorijom, server procesa, server za upravljanje mrežama, server za upravljanje ulazno-izlaznim uređajima itd. neki su od najvažnijih servera koji se mogu implementirati pri ovakvom pristupu (slika 1.12.).
Arhitekturu mikrojezgra odlikuje veći stepen sigurnosti u odnosu na monolitne sisteme, ali su oni obično sporiji. Naime, promene memorijskog prostora dovode do kašnjenja i manje propusnosti u poređenju sa sistemima sa monolitnim jezgrom. One su neophodne jer se serveri i jezgro ne nalaze u istom adresnom prostoru i ne izvršavaju u istom režimu. Često prosleđivanje poruka između malog jezgra i servera takode dovodi do kašnjenja. Imajući u vidu navedene razloge, može se zaključiti da arhitektura zasnovana na mikrojezgru pruža veći stepen sigurnosti u odnosu na slojevite sisteme, ali da brzina nije odlika ni jednog ni drugog pristupa.
Slika 1.12
Primeri sistema koji su dizajnirani na principima mikrojezgra su: Mach, Minix, QNX i L4.
Hibridni sistemi
Hibridna arhitektura sistema, odnosno hibridna jezgra (hybrid kernel) predstavljaju kompromis između monolitne i arhitekture koja se zasniva na mikrojezgru (slika 1.13.). Neke veoma bitne, kao i funkcije koje se često izvršavaju, spuštaju se u jezgro kako bi se povećala brzina i efikasnost, ali se dobar deo funkcija zadržava u nivoima iznad jezgra. Kod ovakvog pristupa najvažnije je precizno odrediti koje funkcije treba spustiti u jezgro, a koje ostaviti van, jer će u suprotnom hibridni pristup ličiti na sistem sa monolitnim (u slučaju da se previše funkcija implementira u jezgro) ili mikrojezgrom (ako dosta važznih funkcija ostane van jezgra).
Slika 1.13
Hibridna jezgra se koriste u većini komercijalnih operativnih sistema: Apple Mac OS X, Microsoft Windows NT3.1, NT 3.5, NT 3.51, NT 4.0, 2000,
XP, Vista, 7, 8, 8.1 i sl.
Sistemi zasnovani na egzojezgru
Tradicionalni pristup pri dizajniranju operativnih sistema podrazumeva da hardverske komponente ne budu vidljive korisničkim aplikacijama, odnosno da programi komuniciraju sa hardverom isključivo preko jezgra operativnog sistema. Na ovaj način olakšava se programiranje, ali se, sa druge strane, ograničavaju performanse. Suprotni pristup bi podrazumevao da se dozvoli da aplikacije direktno pristupaju hardveru, tj. da se jezgro potpuno zaobiđe. U tom slučaju bi funkcionisanje sistema zavisilo od aplikacija koje pišu programeri i aplikacije bi zavisile jedne od drugih.
Koncept egzo jezgra (exokernel) predstavija kompromis između ova dva suprotna pristupa (slika 1.14.). Ideja je da jezgro obezbedi osnovne resurse i da aplikacijama prepusti rad sa njima. Ovo se postiže premeštanjem apstrakcije iznad hardvera u posebne biblioteke koje obezbeđuju minimalne apstrakcije uređaja. Na taj način se programeri mogu osloniti na odgovarajuću biblioteku ali im se ostavlja i mogućnost da implementiraju svoje biblioteke. Drugim rečima, programeri imaju slobodu u izboru nivoa apstrakcije kada je pristup hardveru u pitanju.
Ovakav način rada može da doprinese znatnom ubrzanju i poboljšanju performansi. Sa druge strane, dodatna fleksibilnost za korisničke aplikacije može da dovede do smanjenja konzistentnosti i neurednosti koda.
Pošto je veći deo funkcija izmešten iz egzojezgra, ono je obično manje od prethodno pomenutih tipova jezgara. Primeri sistema koji imaju arhitekturu zasnovanu na egzojezgru su: XOK, ExOSitd
slika 1.14