3. Struktura operacijskog sustava - Računarstvo 550. semestar/Operacijski... · Operacijski sustav...
Transcript of 3. Struktura operacijskog sustava - Računarstvo 550. semestar/Operacijski... · Operacijski sustav...
3. Struktura operacijskog sustava
Kako je već u uvodu napomenuto operacijski sustav osigurava okolinu za izvoĎenje korisničkih
programa. Kao i u svakom postupku projektiranja tako i kod projektiranja operacijskog sustava
važno je dobro odrediti ciljeve koje je potrebno ostvariti. Računarski sustav za koji se
operacijsku sustav izraĎuje predstavlja polazište projektiranju operacijskog sustava.
Postoji više važnih točaka koje je potrebno sagledati prilikom projektiranja operacijskog
sustava. Prva od značajki je ispitivanje koje sve usluge operacijski sustav mora osiguravati.
Sljedeća je odrediti veze sustava s korisnicima i programerima. Treća je razlaganje sustava na
sastavnice i odreĎivanje njihovih meĎuveza.
3.1. Sastavnice operacijskog sustava
Ovako složen programski paket kao što je operacijski sustav može se ostvariti samo
razgradnjom problema na sastavnice i nezavisnim rješavanjem i ispitivanjem svake od
sastavnica. Svaku sastavnicu potrebno je dobro odrediti, tj. odrediti o kojem se dijelu
računarskog sustava radi, koje su mu funkcije i koji su mu ulazi i izlazi. Naravno svi računarski
sustavi nemaju jednaku strukturu i zahtjeve, pa se i primijenjeni operacijski sustavi razlikuju po
veličini i svojim funkcijama.
Na osnovi dosadašnjih razmatranja vezanih uz arhitekturu i strukturu računarskih sustava mogu
se izdvojiti sljedeći zadaci operacijskog sustava:
1. upravljanje procesima,
2. upravljanje radnom memorijom,
3. upravljanje sekundarnom memorijom,
4. upravljanje ulazom/izlazom,
5. upravljanje datotekama,
6. zaštita dijelova sustava,
7. otkrivanje pogrešaka u radu sustava,
8. tumačenje upravljačkih naredbi,
9. upravljanje mrežom računala.
Upravljanje procesima
Pod pojmom proces u računarskom sustavu podrazumijeva se program koji se izvodi. Tako se
proces definira kao program u izvoĎenju. Program sam za sebe je pasivan entitet, zapisan kao
datoteka na disku dok je proces niz naredbi koje procesor izvodi aktivan entitet.
Za svoje izvoĎenje proces zahtjeva odreĎene resurse računarskog sustava, procesor, memoriju,
sekundarnu memoriju, datoteke, ulazno/izlazne jedinice. Ovi resursi dodjeljuju se procesu ili
prije nego što je on započet ili tijekom izvoĎenja. Tako npr. jedan editor kao ulazne podatke
ima izgled izbornika, ali kada se učitava neka datoteka na obradu, s tipkovnice ili mišem se
odabire datoteka koju ovaj proces uzima u obradu. Datoteka s izbornikom predstavlja resurs
koji se dodjeljuje procesu prije njegovog izvoĎenja, a datoteka s podacima je resurs koji ovaj
proces zahtjeva tijekom izvoĎenja. Nakon što proces više ne koristi neki resurs on ga oslobaĎa.
Taj resurs sada može stajati na raspolaganju nekom drugom procesu.
Program se izvodi slijedno naredbu po naredbu. Prema tome i proces se izvodi slijedno, pa u
svakom vremenskom trenutku postoji naredba koja se izvodi za neki proces. Program koji se
izvodi može se dijeliti u više procesa. Tako npr. program može zahtijevati upis na disk kao
jedan proces i nastaviti s obradom nekih drugih nezavisnih podataka kao drugi proces. Tako je
uobičajeno da program tijekom izvoĎenja generira veći broj različitih procesa.
Prema navedenom proces je radna jedinica u sustavu za obradu. U takvom se sustavu nalazi
skup procesa, neki su sistemski procesi ili procesi operacijskog sustava, a drug korisnički
procesi odnosno procesi koji su dio korisničkih programa. Svi ovi procesi mogu se izvoditi
istovremeno vremenski dijeleći procesor.
Operacijski sustav mora vezano uz upravljanje procesima obavljati sljedeće:
stvaranje i poništavanje korisničkih i sistemskih procesa,
odgaĎanje odnosno prekidanje i ponovno aktiviranje procesa,
sinkronizacija meĎu procesima,
komunikacija meĎu procesima,
razrješavanje potpunog zastoja (deadlock).
Upravljanje radnom memorijom
Radna memorija je veliko polje riječi koje iz kojeg procesor dohvaća naredbe i podatke preko
adresa dodijeljene svakoj pojedinoj lokaciji. Kako bi se program izvodio moraju mu biti
dodijeljene apsolutne adrese te mora biti unesen u radnu memoriju. Tijekom izvoĎenja
programa, naredbe i podaci dohvaćaju se postavljajući memoriji njihove apsolutne adrese. Po
završetku programa oslobaĎa se memorijsko područje zauzeto programom i podacima.
U cilju povećanja iskoristivosti računarskog sustava kao i skraćenja vremena odziva, više
korisničkih i sistemskih programa istovremeno je pohranjeno u memoriji.
Zadaci operacijskog sustava vezani uz upravljanje memorijom mogu se sažeti na:
praćenje koji memorijski dijelovi su trenutno zauzeti i od koga,
odlučivanje kada se oslobodi dio memorijskog prostora kojem procesu ga dodijeliti,
odnosno koji proces unijeti u tom trenutku u radnu memoriju
dodjela i oslobaĎanje memorijskog prostora po potrebi
Upravljanje sekundarnom memorijom
Radna memorija može biti nedovoljno velika da prihvati cjelovit program i podatke, te
predstavlja medij samo za privremeno skladištenje programa i podataka jer nestankom
napajanja sadržaj memorije se briše. Ovi problemi rješavaju se dodavanjem računarskom
sustavu sekundarne memorije. Ona je znatno većeg kapaciteta od radne memorije, a podaci su
sačuvani i bez prisustva napajanja.
Tako su programi i podaci spremljeni na sekundarnoj memoriji, obično magnetskom disku, a za
obradu se unose u radnu memoriju. TakoĎer programi tijekom izvoĎenja učestalo očitavaju
podatke s diska, i rezultate ponovo unose na disk. Zbog ovakve učestale uporabe diska
efikasnost računarskog sustava direktno je vezana uz samu brzinu ovog ureĎaja kao i uz
efikasnost njegove uporabe.
Operacijski sustav prilikom upravljanja sekundarnom memorijom mora rješavati sljedeće:
upravljanje slobodnim memorijskim prostorom,
dodjela memorije,
upravljanje zahtjevima za pristup sekundarnoj memoriji.
Upravljanje ulazom/izlazom
Upravljanje ulazom/izlazom takoĎer je jedna od značajki operacijskog sustava koja je dobrim
dijelom već razmatrana u prethodnom poglavlju, pa će ovdje biti samo rezimirani osnovni
zadaci operacijskog sustava vezanog uz obavljanje ulazno/izlaznih operacija, a to su:
upravljanje ulazno/izlaznim meĎuspremnicima i brzom meĎumemorijom,
ostvarivanje veze izmeĎu korisničkog programa i pogonskih programa tzv. (general device-
driver interface)
pogonski programi za odreĎene ulazno/izlazne ureĎaje (device driver).
Upravljanje datotekama
Zbog jednostavnosti uporabe računarskog sustava, operacijski sustav omogućava jedinstven
logički prikaz uskladištenih podataka ili programa. Bez obzira na fizička svojstva medija na
kojeg se podaci ili programi skladište, operacijski sustav definira datoteku kao jedinstvenu
jedinicu kojoj se pristupa na sekundarnoj memoriji. Operacijski sustav oslobaĎa korisnika
složenog zadatka upravljanja procesom fizičkog zapisa na ili očitanja datoteke sa sekundarne
memorije.
Tako se datoteka definira kao skupina povezanih podataka čije značenje odreĎuje stvaralac
datoteke. Datoteka može biti program i podaci bilo u izvornom ili izvedbenom obliku, ili samo
podaci. Datoteka može biti slobodnog formata npr. tekstualne datoteke ili može biti u
odreĎenom formatu. Tako se datoteka sastoji od niza bita, okteta, linija ili zapisa čije značenje
odreĎuje tvorac datoteke.
Operacijski sustav primjenjuje apstraktan pristup datotekama, upravljajući sekundarnom. Na
logičkoj razini datoteke se organiziraju u sustav direktorija kako bi olakšalo njihovo korištenja.
Kako datotekama mogu pristupati korisnici na različite načine (stvaranje, pisanje, čitanje,
brisanje, pomicanje) tako operacijski sustav mora imati nadzor tko i na koji način koristi
odreĎenu datoteku.
Operacijski sustav zadužen je u osnovi za sljedeće aktivnosti s datotekama:
stvaranje i uništavanje datoteka,
stvaranje i uništavanje direktorija,
osnovne operacije s datotekama,
fizičko smještanje datoteka na sekundarnu memoriju,
sigurnosno spremanje datoteka na neizbrisive medije (backup).
Zaštita dijelova računarskog sustava
Kako računarski sustavi dozvoljavaju istovremeno izvoĎenje više procesa potrebno je ostvariti
zaštitu svakog procesa od nenamjernog ili namjernog neovlaštenog djelovanja drugog procesa.
U tu svrhu ostvareni su različiti mehanizmi zaštite dijelova memorije, spremnika procesora,
datoteka i drugih resursa računarskog sustava koje koriste procesi. Tako svakom pojedinom
korisničkom procesu operacijski sustav dodjeljuje odreĎena prava na korištenje resursa
računarskog sustava te nadzire proces tijekom izvoĎenja kako ne bi povrijedio dodijeljena mu
prava.
Tako npr. korisnički program može zahtijevati zapis na neku od memorijskih lokacija u kojoj je
upisana naredba ili čak cijeli dio operacijskog sustava. Ukoliko se dozvoli takva operacija,
operacijski sustav više ne bi mogao ispravno djelovati.. Slično se može desiti sa sistemskim
datotekama na disku koje korisnik može neovlašteno izbrisati ili izmijeniti. I ovakve slučajeve
nadzire operacijski sustav. Moglo bi se navesti još mnoštvo sličnih primjera koji ukazuju na
značaj dijela operacijskog sustava koji je zadužen za zaštitu.
Otkrivanje pogrešaka
Operacijski sustav mora stalno nadzirati sklopovlje računala u cilju otkrivanja pogrešaka u
njihovom radu kao i mogućih kvarova. Tako npr. pogreške će nastupiti ako se otkrije da ne
odgovara paritet pročitanog podatka iz memorije, ili podatka prenesenog s diska, ako se
ustanovi da je izgubljena veza s mrežom, ako je pisač ostao bez papira ili je odspojen, ako je
obavljena aritmetička operacija s nedozvoljenim operandima ili se pristupa nedozvoljenoj ili
nepostojećoj memorijskoj lokaciji. Za svaki tip pogreške operacijski sustav mora poduzeti
odreĎene radnje kako bi osigurao ispravan nastavak rada računarskog sustava.
Tumačenje upravljačkih naredbi
Jedna od značajki operacijskog sustava je da ostvaruje vezu izmeĎu korisnika i računala.
Korisni unosi naredbe računalu, koje operacijski sustav interpretira i poduzima odreĎene
aktivnosti. Zaseban dio operacijskog sustav (Command interpreter) zadužen je za tumačenje
naredbi te pokretanje odgovarajućih aktivnosti.
Način na koji korisnik zadaje naredbe razlikuje se od sustava do sustava. Tako npr. MS DOS
koristio je linijski tumač naredbi, (command-line interpreter) gdje se naredna učitavala s
tipkovnice. Korisnički orijentirani sustavi razvili su grafička sučelja kako bi korisniku olakšali
proces zadavanja naredbi računalu, pa korisnik komunicira s računalom preko niza ikona,
prozora, izbornika.
Upravljačke naredbe koje korisnik zadaje računalu odnose se na stvaranje i upravljanje
procesima, obavljanje ulazno/izlaznih poslova, upravljanje glavnom i sekundarnom
memorijom, pristup datotekama, zaštita i mrežni rad.
Umrežavanje (Networking)
Distribuirani sustavi se sastoje od više procesora (računala) koji ne dijele zajedničku memoriju
ili zajednički takt. Nasuprot, svaki procesor ima svoju lokalnu memoriju i meĎusobno
komuniciraju preko različitih komunikacijskih kanala (Ethernet, modemski i sl.). Ovakva
računala znatno se razlikuju u karakteristikama i namjeni. Mogu biti osobna računala, radne
stanice ili velika računala (mainframe).
Računala (procesori) u ovakvim sustavima povezani su komunikacijskom mrežom koja može
biti konfigurirana na različite načine. Projektant mreže projektira različite mrežne konfiguracije,
strategije usmjeravanja informacija (routing), zaštite informacija i sl.
Distribuirani sustavi objedinjuju fizički odvojene i po svojstvima različite računarske sustave u
jedinstven sustav, osiguravajući korisniku pristup raznovrsnim resursima i informacijama.
Pristup zajedničkim resursima ne samo da povećava procesnu moć koja stoji korisniku na
raspolaganju, nego osigurava pristup i obradu neizmjerno većeg broja podataka. Operacijski
sustav obično osigurava pristup mreži u obliku pristupa datotekama (file access), kao i detalje
vezane uz umrežavanje u vidu programa za upravljanje mrežnim meĎusklopovima (network
interface’s device driver).
3.2. Usluge operacijskog sustava (servisi)
Operacijski sustav osigurava okolinu za izvoĎenje programa. TakoĎer, pruža programu i
korisniku programa i odreĎene usluge. Spektar i vrsta usluga razlikuje se od sustava do sustava
ali postoje odreĎene skupine usluga koje su svima zajedničke. Usluge operacijskog sustava su
namijenjene s ciljem povećanja udobnosti rada programera. One znatno olakšavaju proces
izrade i izvoĎenja programa. Mogu se podijeliti u sljedeće skupine:
Izvođenje programa: Računalni sustav mora imati mogućnost upisa programa u radnu
memoriju te startanja njegovog izvoĎenja. Program koji je započeo s izvoĎenjem mora biti
u mogućnosti i završiti izvoĎenje bilo normalno ili prisilno (kao posljedica neke greške ili
posebnog stanja)
U/I operacije: Program koji se izvodi obavezno zahtjeva odreĎene ulazno/izlazne
operacije. Tu npr. spada čitanje podataka s diska, upis rezultata na disk, prikaz na ekranu ili
unos znakova s tipkovnice. U ovisnosti o kakvom se U/I ureĎaju radi potrebno je
poduzimati i odgovarajuće aktivnosti (npr. pomak glave diska na odreĎeni cilindar, čekanje
da se disk zakrene tako da se glava nalazi iznad sektora nad kojim je potrebno izvršiti
operaciju, itd.). Zbog jednostavnosti korištenja ovih ureĎaja, a i zbog sigurnosnih razloga
nije prikladno da korisnik sam upravlja U/I ureĎajem. Ovu funkciju preuzima operacijski
sustav.
Upravljanje sustavom datoteka: Datoteka (file) je skup informacija, program ili podaci,
zapisanih u sekundarnoj memoriji, obično disku. Zbog svoje važnosti upravljanje
datotekama zasebna je funkcija operacijskog sustava. Datoteci korisnik mora pristupati na
jednostavan način preko njenog jedinstvenog imena, a operacije podrazumijevaju stvaranje,
upis, čitanje i brisanje datoteke.
Komunikacije među procesima: Čitav je niz slučajeva u kojima procesi (programi koji se
izvode) moraju meĎusobno razmjenjivati informacije. U osnovi mogu se razlučiti dva
slučaja: prvi kada komuniciraju procesi koji se izvode na istom računalu i drugu kada
komuniciraju procesi koji se izvode na različitim računalima povezanim računalnom
mrežom. Komunikacija se ostvaruje ili preko zajedničke memorije (shared memory) ili
prenošenjem poruka (message passing).
Otkrivanje pogrešaka: Operacijski sustav mora konstantno nadzirati ispravnost rada
sustava. Pogreške mogu nastupiti kao posljedica otkazivanja sklopova, u prijenosu
informacija izmeĎu pojedinih jedinica (procesor-memorija, U/I-memorija i sl.), kada nisu
ispunjeni uvjeti za ispravan rad (nije priključeno računalo na mrežu, nema papira u pisaču)
ili kao posljedica pogrešaka tijekom izvoĎenja programa (aritmetičke pogreške, pristup
nevažećim memorijskim lokacijama i sl.). Za svaki tip pogreške operacijski sustav mora
poduzeti odgovarajuću aktivnost kako bi se osigurao daljni nesmetani rad sustava.
Dodatno postoji niz funkcija operacijskog sustava koje ne pomažu direktno korisniku da
jednostavnije i sigurnije koristi računalni sustav. To su funkcije koje osiguravaju učinkovit rad
sustava. Kako je već spomenuto učinkovitost sustava se može značajno povećati ukoliko se
resursi dijele izmeĎu korisnika. Te funkcije su:
Dodjela sredstava: Kada više korisnika koristi isti sustav mora postojati mehanizam
raspodjele resursa izmeĎu njih. Brojni su resursi koje procesi dijele tijekom izvoĎenja.
Pojedini kao npr. CPU, glavna memorija, disk, moraju imati posebne procedure koje se
koriste za njihovu dodjelu i oduzimanje procesima, dok preostali mogu koristiti općenitije
procedure dodjele i oslobaĎanja. Tako npr. kako bi se procesor što bolje iskoristio razraĎene
su posebne procedure i algoritmi dodjele (oduzimanja) prava korištenja procesora od strane
procedura. S druge strane različiti ulazno/izlazni ureĎaji dodjeljuju se preko zasebnih
redova korištenje (red čekanja procesa na pisač).
Vođenje evidencija: Operacijski sustav može voditi evidenciju o vremenu i načinu uporabe
pojedinih resursa od strane pojedinog procesa. Ove evidencije mogu služiti bilo za naplatu
korištenja sustava ili za potrebe statistika pomoću kojih se naknadno može dodatno
optimirati rad sustava.
Zaštita: Kod sustava koje koristi više korisnika (programa) javlja se potreba za zaštitom
informacija bilo od namjerne ili nenamjerne zloporabe. Različiti procesi koji se istovremeno
izvode u sustavu moraju biti kvalitetno razdvojeni kako jedan proces ne bi neovlašteno
utjecao na drugi ili na operacijski sustav. TakoĎer, važna je i zaštita samog sustava od
mogućih vanjskih upada. Ovakav sustav zaštite obično zahtijeva predstavljanje korisnika
operacijskom sustavu koji ga identificira i dodjeljuje mu odgovarajuća prava pristupa
resursima i informacijama. Sustav zaštite ima više razina, od sklopovske zabrane pristupa s
odreĎenih lokacija do čitavog niza lozinki.
3.3. Sistemski pozivi
Sistemski pozivi (system calls)predstavljaju vezu izmeĎu procesa i operacijskog sustava.
Sistemski pozivi obično su pisani u simboličkom jeziku, te su kao zasebne procedure sastavni
dio operacijskog sustava. Pojedini operacijski sustavi dozvoljavaju da se sistemski pozivi
pozivaju direktno iz viših jezika kao potprogrami. Pojedini viši jezici kao npr. C dozvoljavaju
da se dijelovi programa ili potprogrami pišu u simboličkom jeziku. Na taj način korisnik sam
može realizirati odreĎene sistemske pozive-
Kao primjer sistemskog poziva promotriti će se program koji čita podatke iz jedne datoteke i
upisuje (kopira) ih u drugu. Prvi ulazni podatak programa su imena ulazne i izlazne datoteke.
Ovi podaci mogu se unijeti ili preko tipkovnice kao ASCII niz ili pomakom i klikom miša kod
operacijskih sustava s grafičkim sučeljem. Kada su definirane ulazne i izlazne datoteke
potrebno ih je otvoriti, ulaznu za čitanje, a izlaznu za pisanje. Naravno tijekom spomenutih
operacija postoji mogućnost greške koje je potrebno detektirati. Tako je npr. moguće pokušati
kopirati datoteku samu u sebe. Sustav tada mora isto dojaviti korisniku i prekinuti daljnje
aktivnosti. Sljedeća mogućnost je da ne postoji ulazna datoteka. TakoĎer ukoliko postoji izlazna
datoteka, zgodno je tražiti od korisnika dozvolu za uništavanje njenog sadržaja, a ukoliko ne
postoji potrebno ju je kreirati. Sve spomenute aktivnosti predstavljaju različite sistemske
pozive: javljanje korisniku pogrešaka, prekid daljnjeg izvoĎenja aktivnosti, brisanje sadržaja
datoteke, stvaranja nove datoteke, itd.
Kada su obje datoteke odgovarajućim sistemskim pozivima otvorene slijedi kopiranje sadržaja
ulazne datoteke (poseban sistemski poziv) u izlaznu (drugi sistemski poziv). Svaka pojedina
operacija čitanja i pisanja rezultira u povratu statusa temeljom kojeg se može odrediti da li je
operacija uspješno izvedena ili ne. Tako npr. moguć je pokušaj čitanja i nakon što je dostignut
kraj datoteke (EOF). tada je potrebno dojaviti pogrešku. Slično vrijedi ukoliko se namjerava
spremiti podatak u datoteku koja je puna (puna disketa). Sve navedene aktivnosti takoĎer su
obraĎene odgovarajućim sistemskim pozivima.
Po završetku kopiranja program preko sistemskog poziva zatvara otvorene datoteke. Kako je iz
ovog jednostavnog primjera vidljivo, program tijekom izvoĎenja intenzivno koristi sistemske
pozive. Oni su obično skriveni od programera. Tako npr. u Cu funkcije printf i scanf se prevode
u niz sistemskih poziva (simboličkih rutina) koje obavljaju prethodno spomenute aktivnosti.
Sistemski pozivi izvode se na više načina ovisno o sustavu (računalu) na kojem se izvode.
Obično je potrebno uz sam poziv specificirati i čitav niz dodatnih informacija. Tako npr. kod
otvaranja datoteke potrebno je specificirati uz ime datoteke i operaciju koja se izvodi nad
datotekom, način pristupa (sekvencijalan ili direktni), aktivnost u slučaju pogreške, itd.
Prijenos informacija potrebnih operacijskom sustavu, parametara, moguće je na tri načina.
Najjednostavnije i najbrže je parametre proslijediti preko spremnika procesora. Problem je
ukoliko je više parametara od broja raspoloživih spremnika. U tom slučaju parametri se prenose
preko memorije kao blok ili tablica podataka, a u spremnike se postavlja pokazivač na početak
bloka ili tablice. konačno parametri se mogu stavljati na sistemski stog i tako proslijediti
operacijskom sustavu. Većina operacijskih sustava preferira posljednje dvije metode iz razloga
što nije ograničena količina informacija koja se prosljeĎuje.
Sistemski pozivi grubo se mogu podijeliti na:
1) upravljanje procesima,
a) kraj, prekini (end, abort);
b) upiši, izvodi (load, execute);
c) stvori, uništi (create, terminate);
d) dohvati, postavi atribute procesa (get, set process attributes);
e) čekaj vrijeme (wait for time);
f) čekaj dogaĎaj, signaliziraj dogaĎaj (wait event, signal event);
g) dodijeli, oslobodi memoriju (allocate, free memory);
2) upravljanje datotekama,
a) stvori, uništi (create, delete);
b) otvori, zatvori (open, close);
c) čitaj, piši, premjesti se(read, write, reposition);
d) dohvati, postavi atribute datoteka (get, set file attributes);
3) upravljanje ureĎajima,
a) zahtjev, oslobodi (request, release);
b) čitaj, piši, premjesti (read, write, reposition);
c) dohvati, postavi atribute datoteka (get, set file attributes);
d) logički dodjeli ili oslobodi ureĎaj (logically attach, detach device);
4) održavanje informacije,
a) dohvati, postavi datum ili vrijeme (get, set time or date);
b) dohvati, postavi sistemske podatke (get, set system data);
c) dohvati atribute procesa, datoteke ili ureĎaja (get proces, file or device attributes);
d) postavi atribute procesa, datoteke ili ureĎaja (set proces, file or device attributes);
5) komunikacije,
a) stvori, uništi vezu(create, delete communication connection);
b) pošalji, primi poruku (send, receve message);
c) prenesi informacije o statusu (transfer ststus information);
d) spoji, odspoji udaljeni ureĎaj (attach, detach remote device).
3.3.1. Upravljanje procesima
Program (proces) koji se izvodi mora završiti regularno ili prisilno. Ukoliko doĎe do prisilnog
prekida programa kao posljedica nekog posebnog stanja, a ne kao posljedica naredbe za
njegovim prekidom, uobičajeno je da se pohrani stanje procesa (spremnici i dio memorijskih
lokacija) za potrebe naknadne analize uzroka prekida. U svakom slučaju prekid izvoĎenja
programa rezultira u prijenosu izvoĎenja na operacijski sustav (obično tumač naredbi). On
dohvata ili čeka sljedeću naredbu.
Program dok se izvodi može zahtijevati da se u memoriju upiše i drugi program te da se
započne s njegovim izvoĎenjem. Ovo omogućava korisniku da klikom miša pokrene niz
programa ili preko skupnog (batch) programa izvodi niz programa. Ukoliko se kontrola
završetku novog programa vraća na prethodni program realiziran je mehanizam da program
tijekom izvoĎenja poziva i druge programe prema potrebi.
Postoji mogućnost da se nastavi istovremeno izvoĎenja obaju programa. U tom slučaju postoji
zaseban sistemski poziv kojim se kreira ili prihvaća novi proces. Ukoliko se kreira novi proces
koji će se paralelno izvoditi s procesom koji ga je stvorio potrebno je imati i mehanizme
kontrole njihovog izvoĎenja. To podrazumijeva mogućnost zadavanja atributa procesa
(prioritet, maksimalno dozvoljeno vrijeme izvoĎenja, itd.) što operacijski sustav čita
procedurom dohvati atribute procesa i postavi atribute procesa. TakoĎe postoji mogućnost da
operacijski sustav ili prema potrebi korisnik prekine proces koji je kreirao. Za tu namjenu
predviĎena je procedura prekini proces.
Nakon što se stvorio novi proces može postojati potreba da se čeka da on završi s izvoĎenjem
ili da se čeka odreĎeni vremenski period nakon njegovog startanja ili da se čeka na neko
dogaĎaj. U posljednjem slučaju proces šalje poruku da se dogaĎaj dogodio. Ove procedure
značajne su kod paralelnog izvoĎenja više procesa i biti će naknadno detaljnije obraĎene.
Posebne procedure operacijskog sustava koriste se pohranu dijela memorije na sekundarnu
memoriju. Ove procedure značajne su kod ispitivanja (debugging) programa.
U praktičnim realizacijama prisutne su značajne razlike u realizaciji funkcija vezanih uz
upravljanje procesima. Tako npr. MS-DOS operacijski sustav koji je predviĎen da radi samo s
jednim programom ima program za interpretaciju naredbi (command interpretr) koji se upisuje
u memoriju nakon startanja računala. Kako se radi o operacijskom sustavu koji izvodi jedan po
jedan program ne postoji mogućnost da korisnički program stvori novi proces. Program tumač
naredbi upisuje program u memoriju, postavlja programsko brojilo na prvu naredbu i starta
izvoĎenje programa. Prilikom upisa programa u memoriju on može i dijelom prepisati tumač
naredbi. Po završetku programa, bilo kao posljedica normalnog završetka ili pogreške,
izvoĎenje se ponovo prebacuje na tumač naredbi koji prvo s diska upisuje potreban kod, a zatim
izvodi sljedeću naredbu.
UNIX, za razliku od DOSa je višekorisnički operacijski sustav. Kod priključivanja korisnika na
računalo, takoĎer se starta tumač naredbi koji se naziva ljuska (shell). Ova ljuska slična je
tumač naredbi DOSa (DOS je i nastao nakon UNIXa). Ona prihvata i izvodi naredbu korisnika.
Kako je UNIX višekorisnički sustav, tumač naredbi nastavlja s izvoĎenjem i nakon startanja
korisničkog programa. Ljuska starta novi program izvoĎenjem fork sistemskog poziva. Program
upiše u memoriju sistemskim pozivom exec, a zatim se starta s izvoĎenjem programa. U
ovisnosti o načinu kako je program startan, ljuska ili čeka da se program završi ili se on izvodi
u pozadini (background). U posljednjem slučaju ljuska izvodi sljedeću naredbu. Program koji
se izvodi u pozadini ne može dobivati podatke direktno od korisnika budući da ljuska očekuje
od korisnika naredbe. Podatke program tada dobiva preko U/I ureĎaja (obično diska). U
meĎuvremenu korisnik može pokrenuti sljedeću naredbu kojom može pratiti izvoĎenje
programa, mijenjati njegov status i sl. Po završetku programa izvodi se sistemski poziv exit koji
okončava program i vrača statusni kod 0 ukoliko je izvoĎenje uspješno okončano ili u slučaju
pogreške kod greške. Ovaj kod dostupan je ljuski ili drugim korisničkim programima.
3.3.2. Upravljanje datotekama
Upravljanje sustavom datoteka biti će naknadno detaljnije obraĎivano. Ovdje će se samo
spomenuti pojedini sistemski pozivi vezani uz rad s datotekama.
Prvu funkciju vezanu uz datoteke koju korisnik bi želio izvesti je stvaranje datoteke sistemskim
pozivom create. Suprotna aktivnost je uništiti nepotrebnu datoteku sistemskim pozivom delete.
U oba slučaja sustav od korisnika zahtjeva da specificira ime datoteke, a ponekad traži i njene
atribute. Ukoliko se već postojeća datoteka namjerava koristiti ona se otvara sistemskim
pozivom open. Datoteka se može otvoriti samo za pisanje, samo za čitanje ili za obje aktivnosti.
Upis i čitanje iz datoteka izvodi se sistemskim pozivom write i read. Ponekad je otvorenu
datoteku potrebno premotati (vratiti na početak rewind ili prebaciti se na kraj datoteke kako bi
se nastavilo pisati na njen sadržaj). Nakon obavljenih aktivnosti datoteku je potrebno zatvoriti
sistemskim pozivom close.
Ukoliko je sustav datoteka organiziran u direktorije, što je praktički u svakom suvremenom
sustavu, spomenute operacije izvode se i nad direktorijima. Dodatno uz svaku datoteku ili
direktorij vezani su odgovarajući atributi kao što je ime, tip datoteke, pripadnost, prava
pristupa, različite zaštite, itd. Ove atribute po potrebi potrebno je čitati (get file attribute)
odnosno mijenjati (set file attribute) opet pomoću sistemskih poziva. Pojedini operacijski
sustavi koriste i dodatne sistemske pozive za rad s datotekama.
3.3.3. Upravljanje uređajima
Program koji se izvodi često zahtjeva za korištenje različite ureĎaje ili resurse računalnog
sustava (dodatnu memoriju, pisač, i sl.).Ako su zahtjevani resursi dostupni tada oni mogu se
dodijeliti programu, u suprotnom izvoĎenje programa se mora zaustaviti dok se potrebni resursi
ne oslobode.
UreĎaji se mogu promatrati odnosno tretirati kao apstraktne ili virtualne i datoteke. Tako većina
sistemskih poziva vezanih uz sustav datoteka vrijedi i za ureĎaje. Ukoliko je više korisnika
(procesa) koje se izvode istovremeno na računalu potrebno je da proces zahtijeva ureĎaj
(request) kako bi dobi ekskluzivno pravo njegovog korištenja. Nakon što je proces prestao
koristiti ureĎaj on ga oslobaĎa (release). Navedeni sistemski pozivi slični su pozivima za
otvaranje i zatvaranje datoteka.
Kada je ureĎaj dodijeljen procesu na korištenje tada on može na ureĎaj pisati (write), čitati
(read) ili premještati (reposition), isto kao i kod datoteka. Ova sličnost izmeĎu spomenutih
aktivnosti tolika je da većina operacijskih sustava (uključujući DOS, UNIX, Windows) spajaju
ove funkcije u jedinstvenu cjelinu za upravljanje sustavom datoteka i ureĎaja.
3.3.4. Održavanje informacija
Brojni su sistemski pozivi čija jedina svrha je prijenos informacija izmeĎu operacijskog sustava
i korisničkog programa. Tako npr. većina sustava ima funkcije koje programu vraćaju
informaciju o datumu i vremenu. Drugi daju informacije o samom sustavu kao što je verzija
operacijskog sustava, količina slobodne memorije, itd. Dodatno od sustava je moguće tražiti
informaciju o broju korisnika koji su spojeni na sustav ili broj procesa koji su trenutno aktivni,
njihovom stanju, atributima, resursima koje koriste i sl.
3.3.5. Komunikacije
U računalnim sustavima razvijeni su brojni modeli razmjene informacija izmeĎu procesa. Tako
u sustavu prijenosa poruka (message-passing) informacije se izmeĎu procesa razmjenjuju
putem poruka uz pomoć operacijskog sustava. Prije nego se razmijene poruke potrebno je
otvoriti komunikaciju. Za ovo je potrebno dojaviti preko odgovarajućeg sistemskog poziva
operacijskom sustavu ime procesa s kojim se namjerava komunicirati, te gdje se izvodi proces
(na istom ili udaljenom procesoru). Ukoliko nije poznato ime ili identifikacijska oznaka procesa
ili udaljenog (remote) procesora tada je to moguće doznati sistemskim pozivom dohvati
identifikacijsku oznaku procesa (get processid)ili dohvati identifikacijsku oznaku računala (get
hostid). Ovi parametri prosljeĎuju se pozivu za otvaranje komunikacijskog kanala. Kod nekih
operacijskih sustava i ova funkcija vezuje se uz virtualnu datoteku. Slično razmatranje vrijedi i
za zatvaranje komunikacijskog kanala. Nakon što proces zatraži otvaranje komunikacije, proces
s kojim se namjerava komunicirati mora dati dozvolu da se komunikacija ostvari. Izvor poruke,
klijent (client), i primatelj poruke, poslužitelj (server), razmjenjuju poruke sistemskim pozivima
čitaj poruku (read message) i piši poruku (write message). Sistemski poziv zatvori vezu (close
connection) prekida komunikaciju.
U sustavima koji koriste zajedničku memoriju za razmjenu poruka (shared memory) proces
koristi sistemski poziv rasporedi memoriju (memory map) kako bi dobio dozvolu pristupa
memoriji koju koristi drugi proces. Kako je već spominjano, operacijski sustav ne dozvoljava
da jedan proces pristupa memorijskim lokacijama drugog procesa. Princip zajedničke
(dijeljene) memorije zahtijeva suprotno. Naime procesi razmjenjuju poruke pišući i čitajući iz
zajedničkih memorijskih lokacija. Zato je i potrebno da se pristupi realiziraju preko sistemskog
poziva. Oblik i značenje podataka definiraju sami procesi. TakoĎer potrebno je osigurati da se
ne pristupa istovremeno zajedničkim lokacijama.
Obje metode koriste se u suvremenim operacijskim sustavima. Slanje poruka djelotvorno je kod
razmjene manjih količina podataka iz razloga što su kod ovakvog načina komuniciranja mnogi
konflikti onemogućeni. Iz tog razloga ovakav pristup lakše je implementirati. Komunikacija
preko zajedničke memorije djelotvorna je kad se razmjenjuju veće količine podataka. U ovom
slučaju javljaju se problemi sinkronizacije (istovremenog pristupa zajedničkoj memoriji) kao i
zaštite. Ovi problemi obraĎivati će se naknadno.
proces A proces A
proces B proces B
jezgra jezgraP
P
P
2
2
1
1
zajedničkamemorija
a) b)
Slika 3.1. Komunikacijski modeli: a) slanje poruka; b) zajednička memorija.
3.4. Sistemski programi
Drugi pristup modernim sustavima je skup sistemskih programa. Prema slici koja opisuje
hijerarhiju računalnog sustava na najnižoj razini nalaze se sklopovi. Na sklopove se oslanja
operacijski sustav, a na operacijski sustav sistemski programi nakon kojih slijede aplikacije.
Sistemski programi osiguravaju ugodniju okolinu za razvoj i izvoĎenje korisničkih ili
aplikacijskih programa. Neki od njih su jednostavna veza izmeĎu korisnika i sistemskih poziva
dok su drugi znatno složeniji. Oni se mogu podijeliti u više skupina:
Upravljanje datotekama: Ovi programi stvaraju, brišu, kopiraju, mijenjaju ime, ispisuju
na pisač, odnosno općenito rade sa sustavom datoteka ili direktorija.
Statusne informacije: Pojedini programi traže od operacijskog sustava jednostavne
informacije kao što je datum i vrijeme, raspoloživa memorija, broj korisnika trenutno
priključenih i sl. Prikupljene informacije od operacijskog sustava ovi programi ispisuju na
ekran, pisač ili u neku datoteku.
Promjene u datotekama: Različiti editori teksta dostupni su za upisivanje i mijenjanje
sadržaja datoteka.
Programski jezici i pripadajući alati: Programi prevodioci te tumači naredbi obično se
isporučuju s operacijskim sustavom. Danas se ovi programi nabavljaju zasebno, ali za
odgovarajući operacijski sustav.
Punjenje programa u memoriju (loader) i izvođenje: Jednom preveden program mora se
upisati u memoriju i izvesti. Sustav mora imati poseban program koji će upisati odreĎeni
program u memoriju bilo prema apsolutnim adresama specificiranim u programu ili ga mora
realocirati. TakoĎer, program je ponekad potrebno i povezati s potprogramima bilo iz
sistemskih ili korisničkih biblioteka. U ovu svrhu koriste se programi za povezivanje
(linkage editor). Prilikom faze razvoja programa i njegovog testiranja značajnu pomoć
pružaju programi za otkrivanje pogrešaka (debugger).
Komunikacije: Ovi programi omogućavaju stvaranje virtualne veze izmeĎu procesa,
korisnika i različitih računala. Omogućavaju korisnicima slanje poruka s jednog ekrana na
drugi, slanje elektronske pošte , slanje datoteka s računala na računalo ili čak korištenje
udaljenih računala kao da se nalaze lokalno. Tako je danas Internet Explorer sastavni dio
Windows operacijskog sustava.
Aplikacijski programi: Operacijski sustavi imaju i odreĎene programe koje korisnik
koristi za rješavanje pojedinih vlastitih problema ili za izvoĎenje zajedničkih aktivnosti. To
su programi za pisanje i formatiranje teksta (WordPad, NotePad), crtanje (PaintBrush),
kalkulator, igre i sl. Naravno mnoge ozbiljnije aplikacije nabavljaju se zasebno od
operacijskog sustava.
Može se reći da je najznačajniji sistemski program tumač (interpreter) naredbi. Njegova
temeljna funkcija je prihvat naredbe od korisnika te njeno tumačenje i izvoĎenje. Većina
naredbi odnosi se na rad s datotekama (stvori, kopiraj, briši, zamijeni ime, otvori, zatvori, itd.).
Dva su temeljna načina implementacije programa za tumačenje naredbi. U prvom, sam program
za tumačenje naredbi sadrži kod koji izvodi naredbu. Tako npr. naredba da se briše datoteka
rezultira u programu za tumačenje naredbi skok u proceduru koja postavlja parametre
sistemskom pozivu kojim se briše specificirana datoteka. U ovom slučaju broj naredbi koje se
mogu izvesti odreĎuju i veličinu ovog programa budući da svaka naredba zahtijeva svoj
segment koda.
Drugačiji pristup koristi UNIX operacijski sustav. On za svaku naredbu ima zaseban sistemski
program. U ovom slučaju tumač naredbi ne razumje naredbu nego samo identificira ime
datoteke, programa, koji se upiše memoriju i izvede. Tako npr. naredba:
delete test.doc
traži na disku datoteku s imenom delete, upiše je u memoriju i izvede s parametrom test.doc.
Sama funkcija u potpunosti je odreĎena kodom datoteke delete. Ovakvim pristupom
jednostavno je nadograĎivati sustav novim naredbama koje se upisuju na disk s odreĎenim
imenom. Tumač naredbi je jednostavan kratak program koji se dodavanjem nove naredbe ne
treba mijenjati.
Postoje i odreĎeni problemi s realizacijom ovakvog tumača naredbi. Prvo, kod koji izvodi
naredba je odvojen od koda programa za tumačenje naredbi. Problem je kako prenijeti
parametre iz tumača naredbi kodu naredbe. Ovo zna biti nespretno posebice što je kod naredbe
na disku, a broj parametara koje tumač naredbe mora proslijediti može biti i poduži. TakoĎer,
upis programa s diska je znatno sporije nego skok u proceduru programa koji se već izvodi.
Sljedeći problem je strogo programerske prirode, a vezan je uz interpretaciju parametara. Kako
se sustav konstantno nadograĎuje sistemske programe programiraju različiti programeri koji
obično definiraju osobni raspored i format parametara. Ovo korisniku zna predstavljati ozbiljan
problem jer slične naredbe imaju različit raspored i format parametara.
Korisnik vidi operacijski sustav onako kako ga definiraju sistemski programi dok su sistemski
pozivi praktički u potpunosti skriveni. Tako npr. korisnik MS-DOS operacijskog sustava vidi
komandnu liniju preko koje se zadaju naredbe s odgovarajućim parametrima sustavu. S druge
strane sustav koji koristi Windows 3.1 operacijski sustav ima grafičko sučelje pomoću kojeg se
zadaju iste ili slične naredbe. Oba sustava koriste skoro iste sistemske pozive koji korisniku
različito izgledaju i rade na drugačiji način. Tako s aspekta samog operacijskog sustava
korisničko viĎenje nije bitno. Izgradnja pristupačnog korisničkog sučelja nije direktna funkcija
operacijskog sustava. Tako se i u ovom kolegiju ona neće razmatrati. Težište analize postaviti
će se na projektiranje i izradu odgovarajućih usluga korisničkim programima. S aspekta
operacijskog sustava nema razlike izmeĎu korisničkih i sistemskih programa.
3.5. Struktura sustava
Složeni i veliki sustavi kao što su današnji suvremeni računalni sustavi moraju se pažljivo
projektirati kako bi se lakše koristili, održavali i nadograĎivali. Uobičajeni pristup je razbijanje
složenog sustava na manje podsustave ili module koji se zasebno razvijaju i ispituju te
naknadno integriraju u zajednički sustav. Slično vrijedi i za operacijski sustav. Njega je
potrebno razgraditi na manje monolitne module koji se zasebno razvijaju, ispituju i naknadno
integriraju u jedinstven sustav. U ovom smislu potrebno je pažljivo i precizno za svaki modul
definirati funkciju te ulazne i izlazne parametre ili varijable. Moduli od koji se sastoji
operacijski sustav već su grubo definirani. Slijedi postupak integracije navedenih modula u
zajednički sustav, tzv. jezgru (kernel) operacijskog sustava.
3.5.1. Jednostavna struktura
Brojni komercijalni sustavi nemaju dobro definiranu strukturu operacijskog sustava. Obično su
takvi operacijski sustavi započeli kao mali, jednostavni sustavi ograničenih mogućnosti, koji su
s vremenom nastojeći udovoljiti zahtjevima korisnika znatno prerasli svoje mogućnosti. Primjer
takvog operacijskog sustava je MS-DOS. Njega je projektirala nekolicina ljudi koji nisu imali
predodžbu da će on postati tako popularan. Projektiran je na način da se realizira dovoljan broj
funkcija uz zauzeće što manje memorije. Nije pažljivo i precizno dijeljen na module budući da
je sklopovlje koje je koristilo ovaj operacijski sustav bilo ograničenih mogućnosti. Na slici je
prikazana trenutna podjela ovog operacijskog sustava.
ROM BIOS programska podrška uređaja
MS DOS programskapodrška uređaja
Rezidentni sistemski programi
Aplikacijski programi
Slika 3.2. Struktura MS-DOS operacijskog sustava.
Iako MS-DOS ima odreĎenu strukturu, njegove meĎuveze i funkcionalne razine nisu precizno
odvojene. Tako npr. aplikacijski programi mogu pristupati direktnu osnovnim ulazno/izlaznim
procedurama, pisati direktno u video memoriju, slati znakove preko serijskog sklopa itd.
Ovakav pristup čini ovaj operacijski sustav ranjivim. Namjerne ili nenamjerno aplikacijski
programi mogu dovesti do ozbiljnih šteta u sustavu kao što je npr. brisanje sadržaja diska.
Naravno, MS-DOS je ograničen i sklopovskim mogućnostima računala na kojima se koristio.
Intelov procesor 8088 koji je temelj prvih osobnih računala nije imao dvostruki mod rada,
korisnički i nadzorni, pa tako nije postojala ni mogućnost sklopovskih zaštita.
Sljedeći primjer je stara verzija UNIX operacijskog sustava. I ovaj sustav izvorno je projektiran
za sklopovlje ograničenih mogućnosti. Sastojao se od dva zasebna dijela, jezgre i sistemskih
programa. Jezgra je nadalje bila podijeljena na meĎuveze i programske podrške ureĎaja (device
drivers). Jezgra se stalno nadograĎivala kako se sam UNIX razvijao. Sljedeća slika prikazuje
razine ovog operacijskog sustava. Sve ispod sistemskih poziva i veza s jezgrom i iznad
sklopova je jezgra operacijskog sustava. Jezgra upravlja ulazom/izlazom sustavom datoteka,
dodjelom procesora i memorije te obavlja ostale funkcije operacijskog sustava preko sistemskih
poziva. Općenito gledajući to su brojne funkcije integrirane u jednoj razini. Sistemski programi
koriste sistemske pozive za objavljenje poslova kao što je prevoĎenje ili upravljanje
datotekama.
Korisnički programi
Ljuska i prevoditelj naredbi ilitumač sistemskih biblioteka
Sistemski pozivi i veza s jezgrom
Veza jezgre sa samom jezgrom
Komunikacija sterminalima,
procedure prijemai predaje znakova
Sklop za upravljenjeterminalom
Sklop za upravljenjediskom
Sklop za upravljanjeradnom memorijom
Sustavi datotekaupisivanje datotekau memoriju s diska
i iz memorije na disk
Dodjela procesora,upravljanje radnom
memorijom,virtualna memorija
,
Slika 3.3. Struktura stare verzije UNIX operacijskog sustava.
Sistemski pozivi predstavljaju vezu izmeĎu programera i UNIX operacijskog sustava i
predstavljaju programersko sučelje (programmer interface). Skup sistemskih programa obično
odreĎuje korisničko sučelje (user interface), Programersko i korisničko sučelje odreĎuju
funkcije koje jezgra mora podržavati. Razvijene su brojne verzije UNIXa kod kojih je jezgra
dijeljena prema funkcijama koje podržava.
3.5.2. Slojeviti operacijski sustav
Nove verzije UNIXa projektirane su da podržavaju dodatno sofisticirano sklopovlje. Uz pomoć
dodatne sklopovske potpore operacijski sustav može se razbiti na manje pristupačnije dijelove u
usporedbi s prethodnim verzijama UNIXa ili DOSa. Operacijski sustav ima veću kontrolu nad
sklopovima i aplikacijama koje koriste računalo. Novi operacijski sustav razvijen je primjenom
metode projektiranja odozgo prema dole (top-down). OdreĎene su funkcije operacijskog
sustava i podijeljene u skupine. TakoĎer, važna je transparentnost načina izvoĎenja operacija.
Naime, programer može mijenjati procedure na nižoj razini, ali informacije koje ona
razmjenjuje s višom razinom moraju ostati nepromijenjene.
Modularnost sustava može se ostvariti na više načina, a najprikladniji je slojeviti pristup.
Operacijski sustav se razbija na slojeve gdje je najniži sloj sklopovlje a najviši je korisničko
sučelje. Svaki viši sloj naslanja se samo na prethodni niži. Svaki sloj predstavljen je skupom
informacija (podataka ili struktura podataka) i operacija nad tim podacima koje poziva viši sloj.
Tako sloj M+1 inicira operacije u sloju M koje mogu inicirati operacije samo na sljedećem
sloju M-1, slika 3.4. Prednost ovakvog pristupa je jednostavnost ispitivanja i verifikacija
razvijenih procedura na odreĎenoj razini. Naime, razvijaju se prvo procedure na najnižoj razini
koje koriste sklopove koji po pretpostavci ispravno funkcioniraju. Ove procedure su
jednostavne i lako ih je ispitati. One s sljedećom razinom komuniciraju razmjenom
jednostavnih struktura podataka. Jednom ispitane procedure mogu se trajno smatrati korektne te
ih više nije potrebno ispitivati. Slijedi projektiranje i razvoj sljedećeg sloja prema istoj
proceduri. Ukoliko doĎe tijekom ispitivanja do greške ona se mora nalaziti u tekućem sloju jer
su prethodni već detaljno ispitani. Ovim je samo projektiranje, razvoj, nadogradnja i ispitivanje
krajnje pojednostavljeno.
Sloj M
Sloj M-1
noveoperacije
postojećeoperacije
skriveneoperacije
Slika 3.4. Slojevi operacijskog sustava
Svaki sloj implementiran je način da koristi samo operacije nižeg sloja. Postojeći sloj ne treba
znati kako su implementirane operacije koje poziva. Dovoljno je znati što one rade. Na ovaj
način svaki sloj skriva odreĎene operacije, strukture podataka i sklopovlje od više razine.
Prvi slojeviti operacijski sustav THE razvijen je na Technishe Hohshool Eindhoven. Ovaj
operacijski sustav podijeljen je na šest slojeva:
sloj 5. korisnički programi
sloj 4. meĎuspremnici ulazno/izlaznih ureĎaja
sloj 3. pogonski programi operaterske konzole
sloj 2. upravljanje memorijom
sloj 1. dodjela procesora
sloj 0 sklopovlje
Sličan pristup primijenjen je kod Venus operacijskog sustava koji je podijeljen na sedam
slojeva.
sloj 6. korisnički programi
sloj 5. pogonski programi ureĎaja i upravljanje njihovom dodjelom
sloj 4. virtualna memorija
sloj 3. ulazno/izlazni kanali
sloj 2. dodjela procesora
sloj 1. interpretacija naredbi
sloj 0 sklopovlje
Temeljni problem sa slojevitim pristupom je definiranje slojeva. Budući da sloj može koristiti
samo niže slojeve potrebno je pažljivo planiranje cijelog sustava. Npr. pogonski programi
ureĎaja (device drivers) diska koristi se kao medij za pohranu dijela programa i podataka u
sustavu virtualne memorije. Kako sustav za upravljanje memorijom koristi ovaj dio
operacijskog sustava on mora biti smješten iznad njega. Problem je što svi mogući zahtjevi kao
i meĎuovisnosti nisu ovako lako uočljive.
Slijedeći problem ovakvog pristupa je lošija učinkovitost od ostalih rješenja. Npr. ukoliko
korisnički program izvodi ulazno/izlaznu operaciju on poziva sistemski poziv ulazno/izlaznom
sloju koji generira poziv ili pozive sloju koji upravlja memorijom koji zatim preko sloja za
upravljanje procesorom dolazi do sklopova. Kako svaki poziv unosi odreĎeno kašnjenje, obrada
poziva je u ovakvim sustavima duža nego kod sustava koji ne koriste slojevito rješenje.
Spomenuti problemi rezultirali su odreĎenim meĎurješenjima. Operacijski sustav ima manji
broj slojeva, a koji imaju veći broj ugraĎenih funkcija. Ovakvim pristupom otklonjene su
poteškoće vezane uz odreĎivanje slojeva i povećanje vremena obrade sistemskih poziva
zadržavajući prednosti modularnog rješenja operacijskog sustava. Primjer je OS/2 koji je
direktni nasljednik MS-DOSa. Ovaj operacijski sustav nadgradio je svog prethodnika naročito
dodavanjem mogućnosti višeprogramskog rada te dva moda rada, nadzorni i korisnički i nije
dozvoljavao korisniku direktan pristup sklopovlju. Izveden je u nekoliko slojeva i ima znatno
veće mogućnosti od prethodnika a izvodi se na moćnijem sklopovlju. Slika 3.5. prikazuje
strukturu OS/2 operacijskog sustava.
Aplikacije
Podsustavi Podsustavi Podsustavi
Aplikacije Aplikacije
Sučelje s aplikacijskim programima ( )Application-Programming Interface API
Sistemskajezgra
- upravljanje memorijom- upravljanje procesima-upravljanje upređajima
pogonskiprogrami
pogonskiprogrami
pogonskiprogrami
pogonskiprogrami
Slika 3.5. Slojevita struktura OS/2.
Client-server model
U suvremenim operacijskim sustavima trend je pomicanje što većeg dijela procedura izvan
operacijskog sustava. Time jezgra operacijskog sustava (kernel) je manja i jednostavnija, a
osnovna funkcija joj je realizacija komunikacije izmeĎu različitih procesa koji se odvijaju na
korisničkoj razini. Tako ako korisnički program izvodi neku kritičnu operaciju, npr. zapis na
disk, on (client) šalje zahtjev preko operacijskog sustava drugom procesu (server) da za njega
obavi ovu operaciju. Nakon obavljenog posla vraća se preko operacijskog sustava odgovor
korisniku.