You are on page 1of 17

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.

1
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,

2
 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,

3
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).

4
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

5
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

6
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

7
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.

8
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.

9
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.

p ro c e s A p ro c e s A
P 2
z a je d n ič k a
m e m o r ija
p ro c e s B P p ro c e s B 1

2 1

je z g r a P je z g r a

a) b)

Slika 3.1. Komunikacijski modeli: a) slanje poruka; b) zajednička memorija.

10
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.

11
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

12
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.

A p lik a c ijs k i p r o g r a m i

R e z id e n tn i s is t e m s k i p r o g r a m i

M S D O S p ro g ra m s k a
p o d r š k a u r e đ a ja

R O M B IO S p r o g r a m s k a p o d r š k a u re đ a ja

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.

13
K o r is n ič k i p r o g r a m i

L ju s k a i p r e v o d ite lj n a r e d b i ili
t u m a č s is t e m s k ih b ib lio te k a
S is t e m s k i p o z iv i i v e z a s je z g r o m

K o m u n ik a c ija s S u s ta v i d a to te k a , D o d je la p r o c e s o r a ,
t e r m in a lim a , u p is iv a n je d a t o t e k a u p r a v lja n je r a d n o m
p r o c e d u r e p r ije m a u m e m o r iju s d is k a m e m o r ijo m ,
i p r e d a je z n a k o v a i iz m e m o r ije n a d is k v ir tu a ln a m e m o r ija

V e z a je z g r e s a s a m o m je z g r o m
S k lo p z a u p r a v lje n je S k lo p z a u p r a v lje n je S k lo p z a u p r a v lja n je
te r m in a lo m d is k o m r a d n o m m e m o r ijo m

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.

14
S lo j M
nove
o p e r a c ije

s k r iv e n e S lo j M - 1
o p e r a c ije

p o s to je ć e
o p e r a c ije

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

15
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.

A p lik a c ije A p lik a c ije A p lik a c ije

S u č e lje s a p lik a c ijs k im p r o g r a m im a ( A p p lic a tio n - P r o g r a m m in g I n t e r f a c e A P I)

P o d s u s ta v i P o d s u s ta v i P o d s u s ta v i

S is te m s k a
je z g r a
- u p r a v lja n je m e m o r ijo m
- u p r a v lja n je p r o c e s im a
- u p r a v lja n je u p r e đ a jim a

pogonski pogonski pogonski pogonski


p ro g ra m i p ro g ra m i p ro g ra m i p ro g ra m i

Slika 3.5. Slojevita struktura OS/2.

16
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.

17

You might also like