Klijent-server model (client-server model)
U ovom modelu, procese delimo na dve vrste:
- klijent procesi (client process), predstavljaju procese korisnika,
- server procesi (server process) koji su zaduženi za obradu klijentskih procesa.
I klijentskii i serverski procesi rade u korisničkom režimu rada.
Kernel OS-a je zadužen za komunikaciju između klijentskih i serverskih procesa.
Server procesi su delovi OS-a i grupisani su prema tome koje funkcije obavljaju:
- proces serveri (zaduženi za procese),
- fajl serveri (zaduženi za fajl sistem),
- serveri memorije itd.
Svi serveri rade u korisničkom režimu, pa nemaju direktan pristup hardveru.
Prednosti ovog modela:
- OS je razbijen na manje delove (servere) koji se mogu održavati nezavisno
- ako dođe do greške u nekom serveru, ne mora pasti i ceo sistem
- pogodan je za pravljenje distribuiranog sistema: različiti serveri mogu se izvršavati na različitim računarima (koji su naravno povezani), kada neki klijent proces pošalje neku poruku nekom serverskom procesu, ne treba da vodi računa o tome, kako će stići poruka do servera, to je zadatak kernela. Isto tako, kernel će znati kako da vrati odgovor.
Postoji još jedna stvar kod ovog modela, o čemu treba voditi računa: neke funkcije OS-a ne mogu se ili se teško mogu realizovati u korisničkom režimu rada.
Imamo dve mogućnosti da rešimo ovaj problem:
- imamo neke kritične server procese koji se izvršavaju u sistemskom režimu rada i imaju direktan pristup hardveru, ali sa ostalim procesima komuniciraju kao što se to radi u ovom modelu.
- neke kritične mehanizme ugrađujemo u sam kernel, a pravimo server u korisničkom režimu koji sadrži samo interfejs tih operacija.
klijentski proces 1 | klijentski proces 2 | server procesa | fajl server | ……… | server memorije |
KERNEL |