Professional Documents
Culture Documents
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.
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).
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
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 datotekama
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.
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)
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.
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).
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
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.
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)
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.
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.
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
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
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
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.
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
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