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.

3. Struktura operacijskog sustava - Računarstvo 550. semestar/Operacijski... · Operacijski sustav primjenjuje apstraktan pristup datotekama, upravljajući sekundarnom. Na logičkoj

  • Upload
    others

  • View
    16

  • Download
    1

Embed Size (px)

Citation preview

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.