You are on page 1of 281

Univerzitet u Sarajevu

Elektrotehniki fakultet Sarajevo











PROGRAMSKA ORGANIZACIJA
RAUNARA I OPERATIVNI SISTEMI


(interni materijal)









mr Nazif Husovi


Sarajevo, februar 2004 godine
Plan rada

1. Uvod u operativne sisteme
Istorijski razvoj operativnih sistema od jednostavnog batch sistema preko
multiprogramskih i time-sharing sistema, sistema sa personalnim raunarima, paralelnih,
distribuiranih i real-time sistema.
2. Struktura raunarskog i operativnog sistema
Osnovne operacije raunarskog sistema, rad sa prekidima, vrste UI prekida, DMA
struktura, strukture za smjetanje podataka, hijerarhija kod ureaja za sekundarno
smjetanje podataka, hardverska zatita U/I ureaja, memorije i procesora, softverske
komponente operativnig sistema, servisi operativnog sistema, sistemski pozivi i sistemski
programi, hijerarhijska struktura operativnog sistema, virutelna maina i projektovanje
operativnog sistema i implementacija.
3. Upravljanje procesima
Kocept procesa, stanja procesa, struktura podataka: kontrolni blok procesa, redovi
ekanja procesa, rasporeivai procesa, izmjena procesa i izmjena konteksta, operacija
nad procesima, thread-ovi, meuprocesna komunikacija, problem proizvoa - potroa, -
ovi, direktna i indirektna komunikacija meu procesima. Rasporeivanje procesa na
procesor, dispeer, kriteriji rasporeivanja, algoritni rasporeivanja (FIFO, SJF,
prioritetno, round robin, vienivoiski redovi ekanja, rasporeivanja kod
multiprocesorskih sistema), Guntt-ovi dijagrami. Sinhronizacija procesa, problem
ogranienog bafera, kritina sekcija, kritina sekcija za dva i vie procesa, hardverska
sinhronizacija, meusobno iskljuivanje procesa pomou test & set instrukcije, pomou
swap instrukcije, semafori i opertacije nad semaforima, klasini problemi sinhronizacije,
napredne sinhronizacione tehnike: kritini regioni i monitori, konkurentne atomske
transakcije u bazama podataka, protokoli zakljuavanja i protokoli bazirani na
vremenskim oznakama
4. Zastoji u raunarskom sistemu
Definisanje zastoja i problemi koji mogu da proizau, predstavljanje povezanosti procesa
sa resursima preko grafova, metode za rad sa zastojima, sprijeavanje zastoja,
izbjegavanje zastoja, stabilno stanje sistema, algoritam za alokaciju resursa, bankarski
algoritam, detekcija zastoja, algoritam detekcije zastoja, oporavak od zastoja
5. Upravljanje memorijom, virtualna memorija
Povezivanja podataka i instrukcija u memoriji, dinamiko punjenje, dinamiko
povezivanje, overley- tehnika, definicija logikog i fizikog adresnog prostora, jednica za
upravljanje memorijom (MMU), Swapping, kontinualna alokacija memorije, problemi
kod dinamike alokacije memorije, fragmentacija memorije, stranienje (engl. paging),
izraunavanje efektivne adrese kod stranienja, implementacija tabele stranica,
asocijativni registri, irzraunavanje efektivnig pristupa memoriji, zatita memorije,
vienivoiska organicacija tabele stranica, invertovana tabela stranica, djeljene stranice,
segmentacija, segmentacija sa stranienjem na primjeru operativnih sistema Multics i
OS/2. Viruelna memorija, stranienje na zahtjev, greka stranice, performanse stranienja
na zahtjev, izmjena stranice, algoritmi zamjene stranica (FIFO, optimalni algoritam,
LRU, aproksimativni LRU, fiksna i prioritetna alokacija, zasienje sistema,
segmentacija na zahtjev
6. Interfejs datotenog sistema
Datoteni koncept, struktu datoteke, datoteni atributi, datotene operacije, metode
pristupa, struktura direktorija, operacije koje se izvode nad datotekama i direktorijima,
logika organizacija direktorija, nivoiska organizacija direktorija, zatita datotenog
sistema, liste pristupa i grupe.
7. Implementacija datotenog sistema
Struktura datotenog sistema, komponente datotenog sistema, kontinualna alokacija
datoteka, alokacija datotreka preko ulanane liste, indeksna alokacija datoteke,
upravljanje slobodnim prostorom na disku, implementacija direktorija, efikasnost i
performase, keiranje diskovnih podataka
8. U/I sistemi
U/I hardver, komunikacija sa ureajima putem prozivke (engl. polling) i preko prekida,
opis ulazno izlaznog ciklusa koji se obavlja preko prekida, DMA, koraci kod izvoenja
DMA, ulazno izlazni interfejs prema aplikacijama, podjela ureaja prema veliini
pristupne jedinice, mreni ureaji, sistemski sat i brojai, blokirani i neblokirani U/I i
kako se izvodi u jezicima visokog nivoa, kernel i veza sa ulazom/izlazom, rad sa
grekama, struktura podataka kernela, U/I zahtjevi za hardverske operacije, ivotni ciklus
U/I zahtjeva, komunikacije meu raunarima, poboljanje performansi
9. Sistemi za pohranjivanje podataka na periferni medij
Struktura diskovnog ureaja, rasporeivanje diska, algoritmi za rasporeivanje glave
diska (FIFO, SSFT, SCAN, C-SCAN, C-LOOK), upravljanje swap prostorom,
pouzdanost diska, implementacija stabilnog pohranjivanja podataka, struktura medija za
tercijalno smjetanje podataka (izmjenljivi diskovi, WORM diskovi, trake), upravljanje
hijerarhijskom smjetanjem podataka, brzina i pouzdanost i cijena.
10. Zatita raunarskog sistema
Cilj zatite, struktura i implementacija domena, matrica pristupa: korienje,
implementacija, rad sa pravima pristupa, sistemi bazirani na capabilities, jeziki
bazirana zatita, problemi sigurnosti, autentifikacija, prijetnje koje dolaze od programa
(trojanski konj, Trap Door), sistemske prijetnje (Worms, virusi), monitorisanje prijetnji
sistena, kriptiranje i dekriptiranje, zatitita baza podataka, zatita od pristupa sa Interneta
i zatiti raunarskih resura.
11. Komparativna analiza nekih operativnih sistema: UNIX, LINUX, WINDOWS NT

Literatura koja se preporuuje studentima:

1. A.Silbershatz, P.Galvin, "Operating system concepts", V izdanje, 1998. god.
2. R.Kvaternik, "Uvod u operativne sisteme", 2 dopunjeno izdanje, 1985.god.
3. Pribiljeke sa predavanja

Laboratorijske vjebe:

Na labaratorijskim vjebama se izvode zadaci iz sinhronizacija procesa (10 zadataka koji
pokriva po jednu od tehnika sinhronizacija: od sinhronizacije putem djeljene varijable,
binarnih i teinskih semafora, test and set instrukcije, monitora kao i zadaci iz izvoenja
konkurentnih procesa). Za ovu svrhu upotrijebili smo konkurentni alat BACI kojim se
simulira izvoenje konkurentnih procesa na DOS operativnom sistemu. U okviru BACI-a ui
se konkurentni jezik C-- (Pascal) koji sadri deklaracije za pisanje konkurentnih programa
(cobegen, atomic, coend, semaphore i sl.)

Pored toga izvodie se vjebe vezane za operativne sisteme Windows i Linux.

Na auditornim vjebama se izvode tri tipa zadataka i to:

1. Tehnike rasporeivanja procesa, razliiti algoritmi
2. Tehnike punjenja memorijskih okvira starnicama procesa
3. Algoritmi za kretanje glave diska

Svih 10 zadataka za laboratorijske vjebe kao i ispitni zadaci sa rjeenjima, trenutno 10, se
nalaze na adresi www.porios.8m.com.

U toku kolske 1999/2000 razvijen je grafiki alat koji integrie procese kompajliranja,
editiranja i izvoenja korisnikih programa u jeziku C-- (Pascal) (Baci) i kao takav e se
primjenjivati u ovoj kolskoj godini


Plan izvoenja nastave

1. Uvod + pola struktura raunarskog sistema
2. Pola structure ra.sistema+struktura o.s.
3. Thread-ovi + discipline usluivanja
4. unix rasporeiva+sinhronizacija procesa
5. Zastoji u raunarskom sistemu,
6. Uvod u upravljanje memorijom
7. Virtuelna memorija
8. Interface datotenog sistema
9. Implementacija datotenog sistema
10. U/I sistemi
11. Struktura medija za pohranjivanje podataka
12. Tercijalni smjetajni proctor
13. Zatita raunarskih sistema
14. Sigurnost raunarskih sistema
15. Distribuirani sistemi


Elektrotehnicki fakultet u Sarajevu Programska organizacija racunara i operativni sistemi
1
1. Uvod 1. Uvod 1. Uvod 1. Uvod

Sta je operatIvnI sIstemZ Sta je operatIvnI sIstemZ Sta je operatIvnI sIstemZ Sta je operatIvnI sIstemZ

To je program kojI stojI Izmedu korIsnIka racunarskog sIstema I
racunarskog hardvera.
CIIjevI operatIvnog sIstema su:
Da IzvrsI korIsnIcke programe I ucInI rjesavanje korIsnIckIh probIema
IaksIm,
Da ucInI racunarskI sIstem podesnIm za upotrebu.
OperatIvnI sIstem Ima za cIIj da korIstI racunarskI hardver na eIIkasnIjI
nacIn.

Komponente racunarskog sIstema: Komponente racunarskog sIstema: Komponente racunarskog sIstema: Komponente racunarskog sIstema:

Hardver - predstavIja osnovne racunarske resurse (CPU, memorIju, U] uredaje).
OperacIonI sIstem - upravIja I koordInIra korIstenje hardvera medu raznIm
apIIkatIvnIm programIma za razne korIsnIke
ApIIkatIvnI programI - deIInIraju nacIne u kojIm se sIstemskI resursI korIste da
razrIjese racunarske probIeme korIsnIka (kompajIerI, sIstemI baza podataka,
vIdeo Igre, posIovnI programI)
KorIsnIcI - su IjudI, masIne, drugI racunarI I sI.

ApstraktnI pogIed na sIstemske komponente ApstraktnI pogIed na sIstemske komponente ApstraktnI pogIed na sIstemske komponente ApstraktnI pogIed na sIstemske komponente

DeIInIcIje operatIvnIh sIstema: DeIInIcIje operatIvnIh sIstema: DeIInIcIje operatIvnIh sIstema: DeIInIcIje operatIvnIh sIstema:

RasporedIvac resursa - upravIja I aIocIra resurse.
KontroInI program - kontroIIra Izvrsenje korIsnIckIh programa I operacIja uIazno
IzIaznIh uredaja
KerneI-program-Izvrsava se cIjeIo vrIjeme






Elektrotehnicki fakultet u Sarajevu Programska organizacija racunara i operativni sistemi
2
RanI sIstemI RanI sIstemI RanI sIstemI RanI sIstemI - -- - 8are machIne (rane 1950 godIne) 8are machIne (rane 1950 godIne) 8are machIne (rane 1950 godIne) 8are machIne (rane 1950 godIne)

Struktura
VeIIke masIne se pokrecu sa konzoIe
To su sIstemI za jednog korIsnIka (sIngIe user sIstem)
Programer, odnosno korIsnIk predstavIjao je I operatora
PapIrne trake III busene kartIce
RanI soItver
AsembIerI, kompajIerI
LInkerI, punIocI (Loaders)
8IbIIoteke zajednIckIh potprograma
DevIce drIvers
SIgurnost
NeIIkasna upotreba skupIh resursa
NIska IskorIscenost CPU-a
Znacajno veIIko vrIjeme podIzanja sIstema

NIje postojaIo operatIvnIh sIstema dok su racunarI zauzImaII cIjeIu sobu. U toku
prIstupa rada na racunaru program se unosIo u racunar korIstecI bInarne prekIdace.
KorIsnIcI su se prIjavIjIvaII unaprIjed za vrIjeme koje Im treba na racunaru. Ako Im
to vrIjeme nIje vIse potrebno onda se ono ne moze IskorIstItI za druge korIsnIke I
predstavIja gubItak vremena. UkoIIko Im treba vIse vremena tada se moraju ponovo
prIjavIjIvatI.

UIaz u sIstem se promIjenIo I postao eIIkasnIjIm: busene kartIce I trake su se
korIstIIe. UpravIjacke kartIcama su bIIe obavezne I njIma se opIsIvaIo korIstenje
hardvera od strane programa. Prva upravIjacka kartIca bI trebaIa recI sIstemu kako
da cIta ostaIe kartIce. Prva upravIjacka kartIca bIIa je pozIv punIoca (engI. Loader)
za kojIm je sIIjedIo program pracen sa podacIma. Ovdje je jos postojao probIem
nekorIstenIh III kratkIh vremenskIh perIoda. VrIjeme se gubIIo u prIpremI kartIca
pogotovo kod njIhove Izmjene u cItacu kartIca. U sIucaju rada vIseproIaznog
asembIera gdje se trebao ucItatI IzvornI kod kojI je vec obraden u prethodnom
proIazu asembIera. VrIjeme se gubIIo kod Izmjene kartIca Izvornog programa I
asembIera.

PoboIjsanje je bIIo ukIjucIvanjem proIesIonaInog operatora. On je bIo vjestIjI od
obIcnIh korIsnIka u rukovanju sa razIIcItIm kartIcama I vrIjeme se nIje gubIIo
Izmedu razIIcItIh posIova. Kada se jedan posao zavrsI, sIIjedecI se punIo odmah.
Neka ponavIjanja cItanja kartIca postaIa su nepotrebna zato sto nekoIIko posIova
kojI korIste IstI kod bI se mogIo obavItI grupno. Na prImjer, ako trI posIa su
asembIIranje koda, onda prvI proIaz bI se mogao IzvrsItI na sva trI posIa a zatIm
drugI proIaz asembIera na sva trI posIa.

]ednostavnI grupnI sIstemI (rane 1950 ]ednostavnI grupnI sIstemI (rane 1950 ]ednostavnI grupnI sIstemI (rane 1950 ]ednostavnI grupnI sIstemI (rane 1950- -- -e e e e - -- - 1960 1960 1960 1960- -- -e) e) e) e) - -- - RezIdentnI monItor RezIdentnI monItor RezIdentnI monItor RezIdentnI monItor

zaposIjava jednog operatora
korIsnIk vIse ne predstavIja operatore
korIstI se I cItac kartIca
reducIra se vrIjeme dIzanja operatIvnog sIstema preko Izdavanja sIIcnIh posIova
(engI. job)
Elektrotehnicki fakultet u Sarajevu Programska organizacija racunara i operativni sistemi
3
Automatsko sekvencIranje job-ova - automatskI prIjenos kontroIe sa jednog
job-a na drugI. PredstavIja eIementarnI operatIvnI sIstem.

FIzIckI IzgIed memorIje na racunarIma kojI Izvrsavaju pozadInske posIove (engI. 8atch
job) je prIkazana u nastavku.
--------------------------------------

MonItor (rezIdentan u memorIjI)

--------------------------------------

KorIsnIckI prostor
(kompajIerI,programI,podacI,Itd.)

--------------------------------------

RezIdentnI monItor je jednostavan I preteca danasnjIh operatIvnIh sIstema.
PredstvaIja sIstemskI soItverskI kojI je odgovoran za InterpretacIju I vodenju brIge o
Izvrsavanju InstrukcIja u pozadInskIm posIovIma. Kada monItor pokrene posao
(engI. ]ob) on preuzIma kontroIu cIjeIog sIstema I kontroIIse Izvrsavanje zapocetog
posIa sve do zavrsetka posIa. On predstavIja, u nekom smIsIu, soItversku prImjenu
proIesIonaInog operatora kojI posIIje punjenja ostaje u memorIjI I Izvrsava posIove.
RezIdentnI monItor upravIja U] uredajIma takvIm kao sto su cItac kartIca (engI.
card reader) I busac kartIca (engI. card punch) I mogao bI ubrzatI Izmjenu posIova
zato sto nema kasnjenje uzrokovanog operatorom. Kada se zavrsI Izvrsavanje
posIa onda kontroIa preIazI na monItor.

ProbIemI kojI se javIjaju:

1. Kako monItor zna o prIrodI job-a (recImo Fortran u odnosu na AIgoI) III kojI
program da IzvrsI.
2. Kako monItor razIIkuje job od job-a I podatke od programa

Rjesenje: uvode se upravIjacke kartIce

UpravIjacke kartIce:

SpecIjaIne kartIce koje kazu monItoru kojI program da Izvrse:
$]O8
$FTN
$RUN
$DATA
$END

PosebnI znacI razIIkuju upravIjacke kartIce od podataka III programskIh kartIca:
$ u koIonI 1
]] u koIonI 1 I 2
7-9 u koIonI 1

U nastavku su data dva prImjera pozadInskIh posIova:
Elektrotehnicki fakultet u Sarajevu Programska organizacija racunara i operativni sistemi
+

$]O8 userspec ; IdenIIkacIja korIsnIka za svrhe orbacuna $FORTRAN
; punjenje FORTRAN kopajIera
Izvorne kartIce programa
$LOAD ; punjenje kompajIIranog programa
$RUN ; Izvrsavanje programa
KartIce podataka
$EO] ; Kraj posIa (job-a)

$]O8 userspec ; IdentIIIkacIja novog korIsnIka
$LOAD apIIkacIja
$RUN
podacI
$EO]
Cesto se magnetne trake I dobosI korIstIII za smjestanje prIvremenIh podataka I
kompIIIranIh programa.

DIjeIovI rezIdentnog monItora
nterpreter upravIjackIh kartIca - odgovoran za cItanje InstrukcIja na
kartIcama
PunIoc (Loader) - punI sIstemske I apIIkatIvne programe u memorIju
DevIce drIverI - skup programskIh dIjeIova I struktura podataka sa posebnIm
karakterIstIkama za svakI U] uredaj
ProbIem: NIske perIormanse - ]O I CPU se ne mogu prekIapatI; cItac kartIca
je veoma spor.
Rjesenje: OII-IIne operacIje - povecava perIormanse racunarskog sIstema,
punjenjem job-ova u memorIju sa podacIma na trakama I kartIcama, dok se
stampanja Izvrsavaju oI-IIne.

1. PrednostI sIstema sa pozadInskIm posIovIma
o Premjestaju vIse posIova od operatora na racunar
o Povecavaju se perIormase posto je moguce pokrenutI novI posao cIm
zavrsI predhodnI posao
2. NedostatcI
o Ukupno vrIjeme zavrseka posIa je vece sa stanovIsta korIsnIka
Elektrotehnicki fakultet u Sarajevu Programska organizacija racunara i operativni sistemi
5
o Teze je debagIranje programa
o ]ob moze ucI u beskonacnu petIju

Prednost- gIavnI racunar nIje opterecen maIom brzInom cItaca kartIca I
IInIjskog stampaca, aII jeste sa brzInom brzIh jedInIca magnetnIh traka.
NIje potrebno posebne zahtjeve pravItI u apIIkacIonIm programIma da se
promjenI nacIn rada sa dIrektnog na oII-IIne.
Stvarna dobIt - mogucnost korIstenja vIse cItaca na traku (engI. reader-to-tape)
I prenosa podataka sa trake na stampace (engI. tape-to-prInter) sIstema za
jedan CPU.


SpooIIng SpooIIng SpooIIng SpooIIng

]edan od probIema kod sIstema sa poszadInskom obradom je ta sto racuna treba da
cIta skup kartIca prIje nego sto pocne IzvrsavatI program. Ovo znacI da je procesor
nezaposIen u toku ove, reIatIvno spore, operacIje.

Posto je programe breze cItatI sa magnetnIh traka nego sa kartIca, postaIo je
uobIcajeno u racunskIm centrIma da pored gIavnog racunara postojI jedan III vIse
sIabIjIh racunara. OvI, sIabIjI racunarI, su korIscenI da cItaju programe sa kartIca na
magnetne trake tako da onI prIpremaju brze uredaje za cItanje, u ovom sIucaju
magnetne trake kojI se onda mogu korIstItI za brzo punjenje programa. Na ovaj nacIn
je skaraceno vrIjeme punjenja programa u memorIju za Izvrsenje. Pored toga IzIaznI
rezuItatI bI se mogII takode spasavatI na magnetnIm trakama a onda bI te trake bIIe
premjestena na sporIje racunare kojI su vrsIII spara stampanja rezuItata.

Na ovaj nacIn racunar moze da radI U] operacIej paraIeno sa Izvrsavanjem programa,
odnosno postaIo je moguce da racuna cIta kartIce programa na traku, dobos III dIsk I
pIse rezuItate na traku dok vrsI Izvodenje programa. Ovaj proces se nazIva SPOOLNC
(engI. S SS SImuItaneous P PP PerIpheraI O OO OperatIon O OO OnL LL LIne).
SpooIIng sIstemI su bIII prvI I najjednostavnIjI muItIprogramskI sIstemI.
]edna od prednostI sppoIIng batch sIstema je da je IzIaz Iz joba-a raspoIozIv cIm se
job zavrsI a ne kada se svI job-ovI u cIkIusu zavrse.


MuItIprogramIranI sIstemI MuItIprogramIranI sIstemI MuItIprogramIranI sIstemI MuItIprogramIranI sIstemI- -- - MuItIprogramIranje (1960 MuItIprogramIranje (1960 MuItIprogramIranje (1960 MuItIprogramIranje (1960- -- -e e e e - -- - do danas) do danas) do danas) do danas)

MuItIprogramIranje dozvoIjava razIIcItIm korIsnIcIma da Izvrsavaju posIove
Istovremeno. Zasto zeIImo da Izvrsavamo vIse posIova IstovremenoZ Ovo bI mogIo
proIzvestI gubItak vremena kod Izmjene posIova. Odgovor je da to dozvoIjava
jednom posIu da IskorIstI prednostI procesora dok drugI ne korIste procesor zato
sto cekaju na nekI U] uredaj da bI spasIII]IzdaII podatke.

AII ovaj prIstup zahtjeva da nekoIIko programa budu napunjenI u memorIju u
jednom trenutku kao I program za upravIjanje memorIjom. Ovo, takoder, zahtIjeva
boIju zastItu, racunovodstveno vodenje za pojedIne posIove I sI.

Elektrotehnicki fakultet u Sarajevu Programska organizacija racunara i operativni sistemi
6
------------------------------------
MonItor
(vIse kao operatIvnI sIstem)
------------------------------------
KorIsnIckI program 1
------------------------------------
KorIsnIckI program 2
------------------------------------
KorIsnIckI program 3
------------------------------------
KorIsnIckI program 4
------------------------------------

U ovom trenutku monItor se prIbIIzava I IIcI na moderne operatIvne sIsteme. On je
odgovoran za :
(1) pokretanje korIsnIckIh job-ova
(2) spooIIng operacIje
(3) U] operacIje za korIsnIcke job-ove
(4) Izmjenu na procesoru Izmedu korIsnIckIh job-ova
(5) obezbjedenje korektne zastIte dok se ovo obavIja



Ovo je sIucaj gdje se nekoIIko job-ova drze u memorIjI u Istom trenutku I procesor se
dodjeIjuje njIma.

KarakterIstIke operatIvnog sIstema potrebne za muItIprogramIranje:
U] rutIne osIgurane od strane sIstema
UpravIjanje memorIjom - sIstem mora aIocIratI memorIju za nekoIIko job-ova.
CPU rasporedIvanje - sIstem mora da Izabere medu nekoIIko job-ova spremnIh
za Izvrsavanje.
AIokacIja uredaja



Elektrotehnicki fakultet u Sarajevu Programska organizacija racunara i operativni sistemi
7
SIstemI sa djeIjenIm vremenom (od ranIh 60 SIstemI sa djeIjenIm vremenom (od ranIh 60 SIstemI sa djeIjenIm vremenom (od ranIh 60 SIstemI sa djeIjenIm vremenom (od ranIh 60- -- -Ih do 70 Ih do 70 Ih do 70 Ih do 70- -- -Ih) Ih) Ih) Ih)

PrvI popuIarnI operatIvnI sIstem sa dIjeIjenjem vremena (ENCL. TIme SharIng
systems) bIo je CMU - UNX. PrIje ovIh sIstema posIovI su se mogII IzvrsavatI aII su
se IzvrsavaII grupno. KorIsnIk bI mogao ostavI svoj sto sa kartIcama I mogao bI
pokupItI IzIaz posIIje zavrsenog posIa.

SIstem sa dIjeIjenIm vremenom dozvoIjavaju korIsnIku da neposredno utIce na
program u toku njegovog Izvrsenja dok u Isto vrIjeme dozvoIjava vIsestrukIm
posIovIma da se Izvrse u Isto vrIjeme. KorIsnIk moze neposredno utIcatI I reagIratI
na Izvodenje programa kao I IzvrsavatI neposredno pracenje programa korIstecI
debugger. SIstemI sa prozorIma su bIII razvIjenI da poboIjsaju IzgIed I osjecaj
InteraktIvnog rada.

Medu posIovIma doIazI do dIjeIjenja resursa (procesor). ProcesorI kao I drugI
resursI su dovoIjno brzI da korIsnIk moze vIdjetI cIjeII sIstem kao svoj vIastItI.
PerIormanse se mjere u smIsIu vremena odgovora (engI. response tIme), koje
predstavIja protekIo vrIjeme Izmedu pocetka Izvrsavanja posIa I prvog IzIaza.

KorIstenje sIstema jos predstavIja probIem. ZamIsIImo samo korIsnIka kojI sporo
unosI InIormacIje na tastaturI I brzI procesor kojI ceka na korIsnIka, zakIjucujemo
da se ogromno vrIjeme gubI. DrugI posIovI bI se mogII IzvrsavatI u toku ovog
vremena.

CPU se muItIpIeksIra medu nekoIIko job-ova kojI se drze u memorIjI I na dIsku
(CPU se aIocIra jednom job-u samo ako je job u memorIjI).
]ob se Izbacuje na dIsk (operacIje swap In I swap out)
On IIne komunIkacIja Izmedu korIsnIka I sIstema je osIgurana; kada operatIvnI
sIstem zavrsI Izvrsenje jedne komande, on trazI sIIjedecu "upravIjacku
komandu" I to ne od cItaca kartIca vec od korIsnIcke tastature.
On IIne datotecnI sIstem mora bItI raspoIozIv za korIsnIke da prIstupe podacIma
I kodu.

PersonaInI racunarskI sIstemI: PersonaInI racunarskI sIstemI: PersonaInI racunarskI sIstemI: PersonaInI racunarskI sIstemI:

PersonaInI racunar - racunarskI sIstem namIjenjen jednom korIsnIku.
U] uredajI - tastatura, mIs, ekran, maII stampacI.
korIsnIcka pogodnost
moze prIIagodItI tehnoIogIjI razvIjenoj za veIIke operatIvne sIsteme; cesto
pojedIncI korIste samI racunar I ne traze napredno korIstenje procesora I
zastItne mehanIzme.

ParaIeInI sIstemI: ParaIeInI sIstemI: ParaIeInI sIstemI: ParaIeInI sIstemI:
MuItIprocesorskI sIstemI sa vIse od jednog CPU u tIjesnoj komunIkacIjI.
Cvrsto povezanI sIstemI (TIghtIy coupIed system) - procesorI dIjeIe memorIju I
sat; komunIkacIja se obIcno odvIja kroz dIjeIjenu memorIju.
PrednostI paraIeInIh sIstema:
povecavaju propusnost (troughput)
ekonomIcnost
povecana pouzdanost
SImetrIcno muItIprocesIranje (engI. symmetrIc muItIprocessIng)
Elektrotehnicki fakultet u Sarajevu Programska organizacija racunara i operativni sistemi
8
svakI procesor pokrece IdentIcnu kopIju operatIvnog sIstema
mnoge procese mogu IzvrsItI odmah bez gubItka perIormansI
AsImetrIcno muItIprocesIranje (engI. AsImmetrIc muItIprocessIng)
SvakI procesor je prIdruzen specIIIcnom task-u; gIavnI procesor rasporeduje
I aIocIra posao ka pomocnIm procesorIma (sIave processors)
uobIcajen je u ekstremno veIIkIm sIstemIma

DIstrIbuIranI sIstemI: DIstrIbuIranI sIstemI: DIstrIbuIranI sIstemI: DIstrIbuIranI sIstemI:

DIstrIbuIra procesIranje na nekoIIko IIzIckIh procesora
SIabo povezanI sIstemI (LooseIy coupIed system) - svakI procesor Ima svoju
prIvatnu, IokaInu, memorIju; procesorI komunIcIraju jedan sa drugIm kroz
razne komunIkacIone IInIje kao sto su: teIeIonske IInIje, vIsoko brzI bus-ovI I sI.
PrednostI dIstrIbuIranIh sIstema:
dIjeIjenje resursa
povecanje brzIne Izracunavanja - dIjeIjenje punjenja
Pouzdanost
KomunIkacIje

SIstemI u reaInom vremenu: SIstemI u reaInom vremenu: SIstemI u reaInom vremenu: SIstemI u reaInom vremenu:

Cesto se korIstI kao kontroInI uredaj u jednoj namjenskoj apIIkacIjI takvoj kao
za upravIjanje naucnIm eksperImentom, medIcInskom sIstemu sIIka,
IndustrIjskom upravIjackom sIstemu I nekIm sIstemIma za prIkazIvanje
rezuItata.
Dobro deIInIrana ogranIcenja IIksnog vremena
Hard sIstemI reaInog vremena:
perIIerna memorIja je ogranIcena III ne postojI; podacI se smjestaju u
memorIjI (RAM), III read-onIy memorIjI (ROM)
konIIIkt sa tIme-sharIng sIstemIma; nIsu podrzanI sa operatIvnIm sIstemIma
opste namjene.
SoIt reaI-tIme sIstemI:
ogranIceno korIstenje u IndustrIjskom upravIjanju III robotIcI
korIsno u apIIkacIjama (muItImedIjaInIm - vIrtuaIna reaInost), zahtjeva
karakterIstIke naprednIh operatIvnIh sIstema.

ZadacI ZadacI ZadacI ZadacI

1.1 Koje su trI osnovne svrhe operacIonIh sIstemaZ

Odgovor: PostojI nekoIIko svrha operacIonog sIstema:

Da osIgura okoIInu za racunarskog korIsnIka da Izvrsava programe na racunarskom
hardveru na konvencIonaIan I eIIkasan nacIn.
Da aIocIra posebne resurse racunara onako kako je potrebno za rjesavanje
konkretnog probIema. AIokacIonI proces ce bItI sto je moguce eIIkasnIjI I na osnovI
podjednakog dIjeIjenja resursa.
KontroInI program kojI usIuzuje dvIje osnovne IunkcIje:
SupervIzIja Izvrsavanja korIsnIckIh programa da bI sprIjecIo greske I nekorektnu
upotrebu racunara
UpravIjanje osnovnIm operacIjama I upravIjanje U] uredajIma.
Elektrotehnicki fakultet u Sarajevu Programska organizacija racunara i operativni sistemi
9
1.2. NavedIte cetIrI koraka koja su potrebna da bI se IzvrsIo program na potpuno
namjenskom racunaruZ
Odgovor:
a. RezervIra se vrIjeme na racunaru
b. Rucno se napunI program u memorIju
c. NapunI se pocetna adresa I pocne Izvrsenje
d. MonItorIse se I upravIja Izvrsenjem programa sa konzoIe

1.3 Ekstremna metoda spooIIng-a, poznata kao "tape stagIng", je da se cIta cjeIokupan
sadrzaj magnetne trake na dIsk prIje nego sto se pocne korIstItI. ProdIskutIraj
gIavne prednostI I nedostatke takvog prIstupa.

Odgovor: Ova metoda je jednostavnIja od spooIIng-a zato sto nema U] operacIja dok
se podacI obraduju. SvI potrebnI podacI su raspoIozIvI tako da proces se moze brze
IzvrsavatI. NedostatcI su: vIse vremena se potrosI kod startanja procesa, odnosno
punjenja podataka I znacajan dIskovnI prostor se trosI u toku smjestanja podataka sa
trake na dIsk.
1.4 U muItIprogramskom I tIme-sharIng okruzenju, nekoIIko korIsnIka dIjeIe sIstem
sImuItano. Kod ovakvog okruzenja mogu se desItI raznI probIemI sIgurnost:
a) NavedIte dva od takvIh probIema
b) Moze II se osIgura IstI stepen sIgurnostI kod sIstema sa dIjeIjenIm vremenom
kao sto Imamo u namjenskIm operatIvnIm sIstemIma (engI. dedIcated)
Odgovor:
a) Krada III kopIranje programa III podataka; korIstenje sIstemskIh resursa (CPU,
memorIja, dIskovnI prostor, perIIeraII I sI.) bez obracuna pIacanja IstIh (engI.
accountIng)
b) Vjerovatno ne, posto bIIo koja sema zastIte smIsIjena od strane covjeka
moze neIzbjezno bItI razbIjena od njega, dok vIse kompIeksnIh sema dovodI
do teskog osjecaja pouzdanostI njegove Ispravne ImpIementacIje.

1.5 Koje su gIavne prednostI muItIprogramIranjaZ

Odgovor: MuItIprogramIranje cInI eIIkasnu upotrebu procesora prekIapanjem zahtjeva
za procesor I U] uredaje od raznIh korIsnIka. Ono pokusava da poveca IskorIstenje
procesora dajucI mu uvIjek nesto za Izvrsenje (to je moguce s obzIrom da je procesor
znatno brzI od U] uredaja).

1.6 Koje su gIavne razIIke Izmedu operatIvnIh sIstema za maInIrame racunare I
personaIne racunareZ

Odgovor: OperacIonI sIstemI personaInIh racunara ne brInu za ravnomjernu raspodjeIu
procesora medu procesIma III njegovo maksImaInu IskorIstenost racunarskIh resursa.
Umjesto toga ovI pokusavaju da optImIzIraju IskorIstenost racunara za IndIvIduIanog
korIsnIka obIcno po cIjenu eIIkasnostI. RazmotrImo samo koIIko procesorskIh cIkIusa
se trosI na graIIckI InterIejs korIsnIka (CU). MaInIrame operatIvnI sIstem zahtjeva
kompIeksnIje rasporedIvanje I U] aIgorItme kojI Imaju za cIIj da odrze razne sIstemske
komponente sto vIse zaposIenIm.

1.7 DeIInIrajte osnovne karakterIstIke sIIjedecIh tIpova operacIonIh sIstema:
a) batch d) reaI tIme
b) InteraktIvnI e) dIstrIbuIranI
Elektrotehnicki fakultet u Sarajevu Programska organizacija racunara i operativni sistemi
10
c) TIme sharIng

Odgovor:

a) 8atch: 8atch: 8atch: 8atch: PosIovI sa sIIcnIm zahtjevIma su skupIjenI zajedno I Izvrsavaju se na
racunaru kao grupa posIova od strane operatora III automatskI pomocu sekvencera
posIova. PerIormanse se povecavaju pokusavajucI da se procesor I U] uredajI drze
zauzetIm u toku cItavog vremena preko baIerovanja, oII-IIne operacIja, spooIIng-a
I muItIprogramIranja. 8atch operatIvnI sIstem je dobar za Izvrsavanje veIIkIh
posIova kojI trebaju maIo InterakcIja; mogu se predatI na Izvrsenje a rezuItatI se
kasnIje pokupItI.
b) nteraktIvnI nteraktIvnI nteraktIvnI nteraktIvnI: SastavIjen je od Izvrsavanja kratkIh transakcIja gdje rezuItatI sIIjedece
transakcIje mogu bItI nepredvIdIvI. VrIjeme odgovora treba da je kratko, u
sekundama, posto korIsnIk kojI je trazIo usIugu ceka na rezuItat.
c) TIme sharIng TIme sharIng TIme sharIng TIme sharIng: SIstemI sa dIjeIjenIm vremenom korIste rasporedIvanje procesora I
muItIprogramIranje da osIgura ekonomIcnu I InteraktIvnu upotrebu sIstema.
Procesor se Izmjenjuje brzo Izmedu jednog do drugog korIsnIka. Umjesto da
Imamo posao kojI je predat na Izvrsenje, ovdje svakI program cIta sIIjedecu
upravIjacku "kartIcu" sa termInaIa I IzIaz prosIIjeduje odmah na ekran.
d) ReaI tIme ReaI tIme ReaI tIme ReaI tIme: OperatIvnI sIstemI u reaInom vremenu se cesto korIste u namjenskIm
sIstemIma I apIIkacIjama. SIstem cIta InIormacIje sa senzora I mora odgovorItI
unutar IIksnog Iznosa vremena da bI osIgurao zahtjevane perIormanse.
e) DIstrIbuItanI DIstrIbuItanI DIstrIbuItanI DIstrIbuItanI: DIstrIbuIra Izvrsavanje medu nekoIIko IIzIckIh procesora. ProcesorI ne
dIjeIe memorIju III sat reaInog vremena. Umjesto toga, svakI od procesora Ima svoju
IokaInu memorIju. OnI medusobno komunIcIraju kroz razIIcIte komunIkacIone
IInIje, takve kao sto su teIeIonska IInIja, hIgh-speed bus I sI.

1.8 Pod kojIm okoInostIma bI trebaIo da korIsnIk boIje korIstI sIstem sa dIjeIjenIm
vremenom nego personaInI racunar III radnu stanIcu sa jednIm korIsnIkomZ

Odgovor: Kada Imamo nekoIIko korIsnIka, veIIke posIove I brz hardver tada sIstem sa
djeIjenIm vremenom Ima smIsIa. Punu snagu sIstema se postIcI na korIsnIckIm
probIemIma. ProbIem moze bItI rIjesen brze nego na personaInom racunaru. DrugI
sIucaj je kada Ima puno korIsnIka kojI trebaju resurse u Isto vrIjeme. PersonaInI
racunar je najboIjI kada su posIovI dovoIjno maII da se Izvrse na njemu, I kada su
perIormanse dovoIjne da se IzvrsI program na zadovoIjstvo korIsnIka.

1.9 OpIsIte razIIke Izmedu sImetrIcnog I asImetrIcnog muItIprocesIranja. NavedIte trI
prednostI I jednu manu muItIprocesorskIh sIstemaZ

Odgovor: SImetrIcnI muItIprocesorskI sIstemI tretIraju sve procesore kao jednake I U]
moze bItI Izvrsen na bIIo kojem procesoru. AsImetrIcno muItIprocesIranje Ima gIavnI
procesor I ostaII procesorI su podcInjenI (engI. sIave). CIavnI procesor dIstrIbuIra
posIove medu ostaIIm procesorIma a U] se obIcno Izvrsava samo na gIavnom
procesoru. MuItIprocesorskI sIstemI su ekonomIcnIjI, aII ne dupIIcIraju napajanje I
perIIeraIe. OnI mogu IzvrsavatI programe brze I mogu ImatI povecanu pouzdanost. OnI
su kompIeksnIjI I u hardveru I u soItveru od jednoprocesorskIh sIstema.




Elektrotehnicki fakultet u Sarajevu Programska organizacija racunara i operativni sistemi
11
1.10 Zasto su dIstrIbuIranI sIstemI pozeIjnIZ

Odgovor: DIstrIbuIranI sIstemI mogu osIguratI djeIjenje resursa, ubrzanje
IzracunIjIvostI, povecanu pouzdanost I mogucnost da komunIcIraju sa udaIjenIm
sIstemIma.

1.11 Koje osnovne poteskoce programer mora prevazIcI pIsucI operatIvnI sIstem za
reaI-tIme okruzenjeZ

Odgovor: Osnovna poteskoca je odrzanje ogranIcenja IIksnog vremena u operatIvnIm
sIstemIma reaInog vremena. Ako sIstem ne zavrsI potpuno posao u nekom vremenu, to
ce prourokovatI prekId cItavog sIstema kojI je u pogonu. DakIe, kad pIsemo operatIvne
sIsteme reaInog vremena pIsac treba da je sIguran da dIscIpIIne usIuzIvanja procesora
ne dozvoIjavaju vrIjeme odgovora koje moze precI vremenska ogranIcenja.

nIormacIje na Web-u:

Tema: Uvod u operatIvne sIsteme
OperatIng System HIstory
(http:]]www.sIncIaIr.edu]cIassenhancements]cIs225e-dmk]hIstIect.htm)
A CachIng ModeI oI OperatIng System KerneI FunctIonaIIty (http:]]www-
dsg.stanIord.edu]papers]cachekerneI]maIn.htmI)
HIstory oI OperatIng Systems
(http:]]jarI.cs.uop.edu]~jsherman]Engr10]paper1.htmI)
OperatIng Systems Project nIormatIon
(http:]]www.cs.arIzona.edu]peopIe]brIdges]oses.htmI)
Research ChaIIenges In OperatIng System SecurIty
Trends In OperatIng Systems Towards DynamIc User-IeveI PoIIcy
CNOSS: A Prototype OperatIng System Ior the 1990's
(http:]]www.cIs.upenn.edu]~KeyKOS]CnosIs]CnosIs.htmI)
MT ExokerneI OperatIng System (http:]]www.pdos.Ics.mIt.edu]exo.htmI)

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



12
Struktura racunarskog sIstema Struktura racunarskog sIstema Struktura racunarskog sIstema Struktura racunarskog sIstema

Hardver Hardver Hardver Hardver

Racunar predstavIja skup komponenata modusobno spojenIh preko sabIrnIce (engI.
bus). O sabIrnIcI mozemo recI da se ponasa kao savrsena mreza bez gresaka, bez
zasIcenja I padova u toku rada. Komponente na ovoj sabIrnIcI ukIjucuju sIIjedece:

Procesor (engI. CentraI ProcessIng UnIt - CPU) - jedan III vIse procesora
mogu postojatI u Istom racunaru. OnI su naceIno odgovornI za
Izvrsavanje programa. ProcesorI Izvrsavaju arItmetIcke I IogIcke operacIje.
AII nekI procesorI mogu IzvrsavatI vrIo kompIeksne operacIje. NaceIno, to
su operacIje koje se Izvode na procesoru kojI upravIja U] uredajIma I
drugIm sIstemskIm IunkcIjama.
RAM (engI. Random Access Memory) - adresnI prostor kojI gubI svoj
sadrzaj ukoIIko se IzgubI napajanje eIektrIcne energIje.
MemorIjskI kontroIor - Hardverska IogIka koja cInI neku vrstu InterIejsa
Izmedu memorIje I procesora ] uredaja kojIma prIstupa. zmedu ostaIog,
memorIjskI kontroIor je potreban da osIgura da pojedInacan prIstup
memorIjI ostane zakIjucan u prIsustvu vIsestrukIh korIsnIka (vIsestrukI
procesorI, DMA bazIranI U], Itd.)
U] kontroIorI - predstavIjaju InterIejs Izmedu procesora]uredaja I
uredaja. Pored toga sto osIguravaju eIektronskI I IogIckI InterIejs ka U]
uredajIma, U] kontroIorI cesto vrse posIove kao sto su skIadIstenje
podataka, rasporedIvanje I IormIranje redova cekanja. KontroIorI dIskova
predstavIjaju vazan tIp U] kontroIora. NekI drugI bI mogII ukIjucItI UART-
e kojI rade sa serIjskIm IzIazIma I sI.
U] uredajI - uredajI kao sto su tastatura, dIsk uredajI, mIs, skenerI, Itd.
TImer - predstavIja veoma vazan uredaj posebne namjene


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



13
MemorIjska hIjerarhIja MemorIjska hIjerarhIja MemorIjska hIjerarhIja MemorIjska hIjerarhIja

RacunarI sadrze nekoIIko razIIcItIh tIpova memorIje. 8rza memorIja je cesto skupIja I
manje raspoIozIva. SporIje memorIje su u veIIkoj mjerI raspoIozIve. CIIj racunarskog
sIstema je da korIstI brzu memorIju sto je moguce cesce. Da bI se postIgao ovaj cIIj,
racunarskI sIstem pokusava da drzI podatke kojI ce se skoro korIstItI u brzoj memorIjI.
KorIste se pravIIa da se procjenI kojI ce se podacI vjerojatno korIstI u skoroj
buducnostI. ]edno od opstIh pravIIa je da se korIste podacI kojI su se najcesce korIstIII
u skoroj prosIostI pretpostavIjajucI da ce se onI vjerojatno korIstItI opet uskoro.

PostojI nekoIIko razIIcItIh tIpova memorIje u racunarskom sIstemu. U IIstI se navode
brze memorIje ka sporIjIm memorIjama prI cemu je cIjena brzIh memorIja veca.

RegIstrI - vrIo maIe jedInIce memorIje ugradene u sam procesor kojI rade
na Istoj brzInI kao procesor
L1 kes - predstavIja memorIju koja je neznatno sporIja od procesora koja
je odvojena od procesora aII je dIo Istog pakovanja u kome se naIazI I
procesor
L2 kes - memorIja koja je sporIja od L1 kesa aII brza od gIavne memorIje.
ObIcno nIje dIo pakovanje u kome se naIazI procesor aII moze I bItI.
CIavna memorIja - najsporIjI RAM u sIstemu aII mnogo brza od sIIjedeceg
nIvoa u memorIjskoj hIjerahIjI.
DIsk - se korIstI kao eksterna memorIja za smjestanje podataka. Kod
stranIcenja na zahtjev I segmentacIje na zahtjev on postaje sporI
sekundarnI RAM.

Program upravIja regIstrIma kroz InstrukcIje koje se dovIace na procesor prI cemu on
dovIacI I smjesta vrIjednostI u]Iz centraIne memorIje. Kes memorIja se obIcno upravIja
sa hardverom kojI korIstI pravIIa takva kao sto su LRU sa wrIte-back III wrIte-through
da bI odIucIo kada da cIta III pIse vrIjednostI u gIavnu memorIju. Kes memorIja je
nevIdIjIva sa soItverske strane Izuzev sto utIce na perIormanse I moguce je da se
pobrIse kod Izmjene konteksta. Uopste receno, operatIvnI sIstem je odgovoran za
kretanje InIormacIja Izmedu gIavne memorIje I dIska I zbog toga ovaj dIo memorIjske
hIjerarhIje ce se proucavatI detaIjno.

CentraIna memorIja prestavIja memorIju veIIkog obIma kojoj procesor moze prIstupItI
dIrektno I koja je osjetIjIva na gasenje eIektrIcne energIje (voIatIIe voIatIIe voIatIIe voIatIIe). Sekundarna
memorIja predstavIja prosIrenje gIavne memorIje koje obezbjeduje veIIkI smjestajnI
kapacItet podataka kojI se ne mogu IzgubItI IskIjucenjem struje (nonvoIatIIe). PrImjerI
su dIskovI, trake I sI.

SIstemI za smjestanje podataka su organIzovanI hIjerarhIjskI:
brzInI
cIjenI
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



14


Koherentnost I konzIstentnost Koherentnost I konzIstentnost Koherentnost I konzIstentnost Koherentnost I konzIstentnost

U hIjerarhIjskom sIstemu jedan tIp podatka moze da se nadje na razIIcItIm nIvoIma
sIstema za cuvanje podataka. Tako na prImjer , ako cjeIobrojnu vrIjednost A IocIranu u
datotecI 8 treba povecatI za 1. NajprIje je potrebno procItatI bIok datoteke u kome se
datI podatak naIazI, a zatIm ga Iz kes memorIje prenesemo u regIstar. Nakon
InkrementIranja u regIstru doIazImo do sItuacIje da IstI podatak nIje IstI cak u jednom
racunarskom sIstemu. ZamIsIImo muItIprogramskI sIstem III muItIprocesorskI sIstem sa
vIse procesora I vIse kes memorIja. MogIo bI se desItI da svakI kes Ima svoju vrIjednost
Istog podatka. Ovaj probIem se zove koherentnost kesa (neusagIasenost) I obIcno je
pItanje hardvera I operacIonog sIstema kojI treba da obezbjede konzIstentnost
podatka, odnosno da se podatak posmatra jedInstveno. U jednom dIstrIbuIranom
sIstemu probIem postaje jos kompIeksnIjI. RecImo u takvom sIstemu nekoIIko kopIja
datoteke (repIIka) moze bItI drzano na nekoIIko mjesta dIstrIbuIrano u prostoru. Posto
razne repIIke mogu bItI azurIrane III Im se moze prIstupItI konkurentno, moramo
obezbjedItI da kad se jedna repIIka azurIra na jednom mjestu da sve druge repIIke sto
je moguce prIje azurIraju.

SpecIjaInI U] uredaj SpecIjaInI U] uredaj SpecIjaInI U] uredaj SpecIjaInI U] uredaj - -- - TImer TImer TImer TImer

Kada procesor Izvrsava jedan program, regIstar PC (engI. program counter) se
premjesta kroz program od jedne do sIIjedece InstrukcIje osIm ako program, kroz
InstrukcIje skoka, ne ukaze na drugacIje Izvodenje. U sIstemIma sa dIjeIjenIm
vremenom, operatIvnI sIstem Ima potrebu da vrsI Izmjenu medu posIovIma u cIIju
njegove odgovornostI prema svIm korIsnIcIma. AII ako se jedan program Izvrsava kako
operatIvnI sIstem moze preuzetI kontroIuZ

]edan prIstup da se Izvede ovo je da svI programI prozIvaju operatIvnI sIstem
Izvodenjem sIstemskIh pozIva. Na ovaj nacIn, program bI mogao perIodIcno predatI
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



15
kontroIu operatIvnom sIstemu dozvoIjavajucI mu da na procesor dovede drugI program
na Izvodenje. WIndows 3.x korIstI prIstup nazvan non-preemptIve muItItaskIng
(Izvrsavanje vIsestrukIh posIova bez praznjenja procesora). ProgramerI bI mogII
perIodIcno ukIjucItI sIstemskI pozIv yIeId() u njIhovom kodu sto bI pokrenuIo
rasporedIvac operatIvnog sIstema kojI bI mogao rasporedItI drugI posao na procesor.
AII ovaj prIstup je daIeko od savrsenog. ProbIem bI se mogao desItI ako program
pocne IzvrsavatI beskonacnu petIju prI cemu operatIvnI sIstem ne moze preuzetI
kontroIu. DrugI probIem je Irekventnost Izdavanja sIstemskIh pozIva. UkoIIko se Izdaje
vIse sIstemskIh pozIva onda program dobIva manje vremenskIh cIkIusa za Izvrsenje,
odnosno, duze se Izvrsava. NekI programerI mogu davatI manje sIstemskIh pozIva
dobIvajucI tIme vIse vremenskIh cIkIusa, prI cemu ce bItI kaznjenI od strane
rasporedIvaca procesora kad Izdaju svoj prvI sIstemskI pozIv.

TImer predstavIja specIjaInI U] uredaj. ModernI racunarI ukIjucuju hardverske tImer-e
zato sto onI daju operatIvnom sIstemu drugI nacIn preuzImanja kontroIe procesora.
Uredaj tImer je u osnovI brojac unazad kojI Ima trajanje Izvodenja, nesto sIIcno
stoperIcI kojom se zadaje perIod kojI treba da se dostIgne III uredajI za kuhanje kojI
Imaju deIInIranu duzInu kuhanja. TImer Ima regIstar kojI se InIcIjaIno postavI na
odredenu vrIjednost, obIcno u toku punjenja operatIvnog sIstema. On odbrojava od
ove vrIjednostI unazad do nuIe I kad dostIgne nuIu prekIda procesor. ntervaI Izmedu
prekIda tImer-a je poznat kao kvantum. TIpIcna vrIjednost kvantum-a je oko 10 msec.

KorIstecI ovaj prIstup, pojedInacan posao se Izvrsava jedan kvantum I kada se desI
prekId od tImer-a, rasporedIvac operatIvnog sIstema se prozIva Iz usIuzne rutIne
prekIda tImer-a (engI. nterrupt ServIce RoutIne - SR). U tom trenutku rasporedIvac
moze na procesor dovestI IstI III drugI posao.

Vazno je napomenutI da se posao uvIjek ne Izvrsava cIjeII kvantum bez prekIda.
Ponekad on Izvrsava U] operacIje III nesto drugo sto ga prIvremeno sprecava da daIje
korIstI procesor. Cesto se kod programa, posIIje Izdavanja ovakvIh sIstemskIh pozIva,
Izvrsava operacIja bIokIranja o kojoj cemo govorItI kasnIje.

ProzIvka I prekIdI ProzIvka I prekIdI ProzIvka I prekIdI ProzIvka I prekIdI

Uopste receno, uredajI nIsu u stanju da odmah odgovore na InstrukcIje. Umjesto toga,
uredajI na Izdane InstrukcIje rade nad njIma u toku Izvjesnog vremena I onda odgovore
kada se operacIja zavrsI. ModernI operatIvnI sIstemI cesto pokusavaju da Izvrse druge
posIove dok je jedan posao bIokIran I ceka na zavrsetak uIazno IzIaznIh operacIja. U
cIIju da ovo IunkcIonIra, potrebno je da uredajI Imaju nacIn da kazu sIstemu da onI
trebaju Izvjesnu paznju.

]edan od nacIna da se razrIjesI ovaj probIem je da soItver perIodIcno prozIva uredaje I
pIta Ih da II sI zavrsIoZ Ovaj prIstup radI aII, nazaIost, mnogo vremenskIh cIkIusa se
trosI ako soItver komunIcIra sa hardverom na ovaj nacIn.

DrugI prIstup, kojI je prIhvatIjIv u modernIm sIstemIma, zahtjeva hardversku podrsku.
Ovo nas dovodI do korIscenja hardverskIh prekIda. ZamIsIImo sIstem u kome svakI
uredaj Ima zIcu prIkacenu dIrektno na procesor I koja se zove IInIjom kojom se
zahtjeva prekId (engI. nterrupt Request LIne - RQ). Kada uredaj zeII da skrene paznju
na sebe on moze na datoj IInIjI promjenItI naponskI nIvo. Ovaj napon ce prepoznatI
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



16
procesor kao prekId I znace od kog uredaja je dosao, tako da ce mocI preuzetI
odgovarajucu akcIju.

AII procesor samo Izvrsava InstrukcIje jednu za drugom. PC se premjesta od InstrukcIje
do sIIjedece InstrukcIje Izuzev ako se nIje desIIa InstrukcIja koja uzrokuje skok. U
ovom sIucaju procesor I uredaj rade sa tabeIom vektora prekIda (TVP, engI. nterrupt
Vector TabIe). TabeIa vektora prekIda predstavIja nIz IunkcIonaInIh pokazIvaca kojI su
smjestenI na unaprIjed odredenoj memorIjskoj adresI. Ova adresa moze bItI staIno
zapIsana III smjestena u regIstar u toku punjenja operatIvnog sIstema III cItava tabeIa
smjestena u regIstre unutar samog procesora.

U toku punjenja operatIvnog sIstema, adrese za specIjaIne IunkcIje poznate kao
usIuzne rutIne prekIda (engI nterrupt ServIce RoutIne - SR) III handIer-a se smjestaju u
ovaj nIz. Svaka od IunkcIja je dIo operatIvnog sIstema odgovorna za preuzImanja
akcIje u odgovoru na zahtjev uredaja kojI zahtjeva procesor.

Svaka od zIca koja je spojena na procesor Ima broj. Kada se desI prekId, procesor zna
koja RQ IInIja je podIgnuta pod napon (IogIcka jedInIca). To je broj tog prekIda kojI se
korIstI kao Indeks u tabeIu vektora prekIda. U sustInI kada se IzgubI napon na RQ IInIjI
I tada se korIstI broj prekIda kao Indeks u tabeIu vektora prekIda. Adresa u
prIdruzenom eIementu TVP-a se ponovno reIerencIra IzvrsavajucI odgovarajucu
usIuznu rutInu. Kada se rutIna zavrsI, tada se vraca stanja na procesoru onakvo kakvo
je bIIo prIje prekIda.



















StvarI IzgIedaju nesto kompIIkovanIje nego sto smo da sada vIdejeII. U stvarI, ovdje
postojI drugI dIo IogIckIh koIa koje mozemo nazvatI arbItar prekIda (engI. Interrupt
arbItrator) III kontroIor prekIda (engI. Interrupt controIIer). Sta on radIZ To je u osnovI
posrednIk kojI se naIazI Izmedu pojedInacnIg uredaja I procesora. Neosporno je da je
procesor najvrjednIjI resurs u sIstemu kaI I resurs za kojI se najvIse natjecu da bI ga
dobIII. Kao vecIna najvrIjednIh resursa on Ima admInIstratIvnog pomocnIka kojI
upravIja njegovIm prekIdIma. AdmInIstrator prekIda je u osnovI Isto sto I
admInIstratIvnI pomocnIk kojI se naIazI Izmedu svog seIa I onIh kojI ga trebaju.


Tabela vektora prekida (TVP)


Broj vektora
obezbjeuje indeks
u tabelu vektora
prekida funkcija za svaki
prekid (engl.handler)

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



17
Svaka RQ IInIja od uredaja je spojena na arbItar prekIda kojI je spojen samo preko
jedne IInIje na procesor. Kada nekI uredaj zahtjeva paznju procesora prekId od
uredaja prIma arbItar prekIda. Ako je sve u redu on prekIda procesor kojI onda Izvrsava
odgovarajucu SR kao sto je opIsano ranIje.

Kako zna arbItar prekIda da II je prekId u redu I da II da prekIne procesor u IzvrsenjuZ
Kako dobar admInIstratIvnI pomocnIk, pazIjIvo pratI seIove InstrukcIje (procesor) u
cIIju da moze odIucItI da II da pojedInacnI uredaj moze dobItI paznju procesora. Da
bI to mogao znatI potrebno je da zna reIatIvnu vaznost pojedInacnog uredaja. z ovIh
razIoga se svakoj RQ IInIjI, koja doIazI od uredaja, prIdruzuje broj I cesto se korIstI
kao prIorItet prI cemu nIzI brojevI obIcno predstavIjaju vaznIje uredaje. ArbItar prekIda
Ima regIstar kojI se postavIja od strane procesora da bI se u njega smjestIo nIvo
prekIda (engI. Interrupt IeveI). Sa ovIm nIvoom prekIda arbItar prekIda ce prekInutI
procesor u Izvrsenju ako je prIorItet uredaja jednak III vecI od vrIjednostI smjestene u
regIstru. DrugIm rIjecIma, ako ovaj regIstar Ima vrIjednost 5 onda kazemo da je nIvo
prekIda jednak 5. U ovom sIucaju, procesor ce bItI prekInut samo sa prekIdIma cIjI je
nIvo prekIda od 0 do 5.

Sta je sa drugIm uredajImaZ Sta ako onI trebaju paznju procesora aII procesor u tom
trenutku Izvrsava nesto "vaznIje". U tom sIucaju postojI drugI regIstar kojI sadrzI po
jedan bIt za svakI prekId od razIIcItIh uredaja. SvakI put kad se prekId desI bIt ovog
prekIda se postavIja. 8It se cIstI kada procesor usIuzI prekId. Ovaj regIstar dozvoIjava
procesoru da otkrIje koje vrste prekIda nIje prIhvatIo. Vazno je prImjetItI da postojI
samo jedan bIt raspoIozIv za svaku vrstu prekIda, odnosno da ne postojI red cekanja
za prekIde. Ako se IstI prekId desI vIse od jednom ovo ne moze da zna procesor. ]edIna
stvar koju moze da sazna je da se prekId desIo bar jednom.

PostojI jos jedan regIstar u arbItru prekIda I zove se maska prekIda (engI. Interrupt
mask). Ovaj regIstar Ima po jedan bIt za svakI prekId. 8It u maskI prekIda Izvrsava
IogIcku operacIju and sa regIstrom prekIda o kome je bIIo rIjecI ranIje. Ako bIt nIje
postavIjen u maskI prekIda procesor nece vIdjetI prekId. Maska prekIda dozvoIjava
procesoru da prIvremeno III staIno IgnorIra neke uredaje nezavIsno od njegovog
prIorIteta. Na ovaj nacIn procesor moze komunIcIratI sa uredajIma na jedan ureden
nacIn.


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



18

ArhItektura prekIda mora sacuvatI adresu prekInute InstrukcIje
DoIazecI prekIdI su sprIjecenI dok se drugI prekId Izvrsava da se sprIjece
gubItcI prouzrokavanI prekIdom
Trap je soItverskI generIsan prekId uzrokovan III sa greskom III korIsnIckIm
zahtjevom
OperacIonI sIstem je skup medjusobno povezanIh procesa kojI se pokrecu
prekIdIma (Interrupt drIven)
Kad se prekId desI tada hadrver prenosI kontroIu na operacIonI sIstem preko
prekIda. OperacIonI sIstem, najprIje, sacuva stanje procesora smjestanjem
regIstara I programskog brojaca (Program Counter-PC). Onda, odredjuje kojI
tIp prekIda se desIo. Za svakI tIp prekIda poseban dIo koda operacIonog
sIstema se Izvrsava. Provjera prekIda moze bItI pojedInacna kod U] uredjaja
(pooIIng pooIIng pooIIng pooIIng) III dIrektna preko vektora prekIda.

U] struktura U] struktura U] struktura U] struktura

U] prekIdI U] prekIdI U] prekIdI U] prekIdI

(a) (a) (a) (a) PrIje prekIda PrIje prekIda PrIje prekIda PrIje prekIda
PrIje nego sto su racunarI podrzavaII operacIje kao sto su spooIIng I druge
projektovane da redukuju Iznos sIobodnog procesorskog vremena, U] operacIje
su se IzvrsavaIe tehnIkom prozIvka (engI. PooIIng). U ovoj tehnIcI programI su
se IzvodIII u petIjI kontroIIsucI status U] uredaja dok ne ude u zeIjeno stanje.
Pseudo kod bI mogao IzgIedatI ovako:

For I=1 to brojjednIcazaprenos do

pokrenI prenos jedne jednIce
whIIe nIjezavrsenosaprenosom do nIsta


(b) (b) (b) (b) PrekIdom pokrenutI U] PrekIdom pokrenutI U] PrekIdom pokrenutI U] PrekIdom pokrenutI U]

Da bI bIII u stanju da Izvrsavamo U] dok se IzvodI Izvodenje programa, uredaju
kojI Izvrsavaju U] operacIje treba da su u stanju da sIgnaIIzIraju procesoru da je
jedna operacIja spremna za obradu III da je jedna operacIja upravo zavrsena.
Pored toga, procesor treba da Ima mogucnost da odgovorI na ove sIgnaIe na
takav nacIn da moze bItI prekInut u toku Izvodenje programa, zatIm IzvrsI jedan
od posIova kojI je sIgnaIIzIran od U] uredaja, I onda se vratI na Izvodenje
programa. SIgnaI kojI se saIje procesoru se nazIva prekIdom.

(c) PrekIdI kojI se korIste za druge svrhe du datI u nastavku:
1. PrekId sata
2. PrekId zbog Izvodenja InstrukcIje koja nIje IegaInaZ Kad se to desavaZ
3. Kod sIstemskIog pozIva kojI predstavIjaju soItverkI generIsane prekIde.




Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



19
SInhronI U] SInhronI U] SInhronI U] SInhronI U]

PosIe pokretanja U] operacIje kontroIa se vraca korsnIckom programu samo
posIe zavrsetka U] operacIje. U ovom sIucaju cekanje na zavrsetak U]
operacIje moze bItI Izvedeno na jedan od dva nacIna:
WaIt InstrukcIja kojom se osIobada CPU do sIIjedeceg prekIda
programska petIja (Ioop: jmp Ioop)

AsInhronI U] AsInhronI U] AsInhronI U] AsInhronI U]

PosIe pokretanja U] operacIje kontroIa se vraca korIsnIckom programu bez
cekanja na zavrsetak U] operacIje.
SIstemskI pozIv (system caII) - zahtjev od operatIvnog sIstema da za
korIsnIka uradI navedenu U] operacIju a da korIsnIk ne mora cekatI
na njen zavrsetak, III pak moze ukuIIko to zeII
OperacIonI sIstem vodI brIgu o usIuzIvanju U] uredaja I u tom smIsIu
vodI tabeIu statusa uredaja (DST DST DST DST - -- - devIce status tabIe devIce status tabIe devIce status tabIe devIce status tabIe). Ova tabeIa
sadrzI uIaz za svakI U] uredaj kojI IndIcIra njegov tIp, adresu I stanje
OperacIonI sIstem kod prekIda azurIra tabeIu statusa uredaja u
skIadu sa stanjem uredaja (u zavIsnostI od operacIja IzvrsenIh,
zavrsetak operacIje, pocetak operacIje)

Struktura DMA Struktura DMA Struktura DMA Struktura DMA - -- - dIrektnI memorIjskI prIstup (dIrect memory access) dIrektnI memorIjskI prIstup (dIrect memory access) dIrektnI memorIjskI prIstup (dIrect memory access) dIrektnI memorIjskI prIstup (dIrect memory access)


KorIstI se za U] uredaje vIsoke brzIne prenosa podataka bIIske brzInI
centraIne memorIje
KontroIor uredaja prenosI bIok podataka (512-8192 bajta) Iz Internog
baIera dIrektno u memorIju bez posredstva procesora
Samo jedan prekId se generIse po bIoku, sto je znatno boIje nego
jedan prekId po bajtu.

Hard Hard Hard Hardverska zastIta verska zastIta verska zastIta verska zastIta

OperatIvnI sIstem povezuje korIsnIcke programe I goIu masInu. Njegova uIoga zavIsI
od pojedInacnog hardvera I korIsnIckIh programa kojI su namjenjeI da rade sa njIm.

U ovom dIjeIu razmotrIcemo hardverske zahtjeve koje treba da Ima goIa masIna za
moderne muItIprogramske operatIvne sIsteme.

KerneI je centraInI dIo operatIvnog sIstema. U sIIcaju monoIItnIh operatIvnIh sIstema
takvIh kao sto je UNX kerneI je Isto sto I operatIvnI sIstem. U dugIm operatIvnIm
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



20
sIstemIma neI predstavIja samo dIo operatIvnIh sIstema kojI odraduje posIove za
operatIvnI sIstem.

MogucnostI zastIte MogucnostI zastIte MogucnostI zastIte MogucnostI zastIte

Ako je u operatIvno sIstemu obezbjedena bIIo koja vresta zastIte onda mora postojatI I
hardver kojI joj omogucuju provodenje takve zastIte.


(a) NacInI rada proce (a) NacInI rada proce (a) NacInI rada proce (a) NacInI rada procesora sora sora sora

DjeIjenje sIstemskIh resursa zahtjeva operacIonI sIstem da bI obezbjedIo da
jedan nekorektan program ne moze uzrokovatI da se ostaII programI
Izvrsavaju nekorektno
Obezbjedena je hardverska pomoc da se razIIkuje dvIje vrste operacIja

1. KorIsnIckI nacIn rada - Izvrsenje uradjeno uz pomoc korIsnIka
2. SIstemskI nacIn rada (supervIsor mode, system mode) - Izvrsenje
uradeno uz pomoc operatIvnog sIstema

8It nacIna rada se dodaje u racunarskI harver da IndIcIra tekucI nacIn rada:
sIstemskI(0), korsnIckI(1).
Kad se prekId III greska dese, harver postavIja u sIstemskI nacIn rada.


PrIvIIegovane InstrukcIje mogu se IzdatI samo u sIstemskom stanju (monItor
nacIn rada). Na prImjer, InstrukcIje "haIt", U] InstrukcIje kao MMU
upravIjacke InstrukcIje.

z ovIh razIoga, navedIh gore, proIzIIazI da bIIo kojI kod kojI se Izvrsava u sIstemskom
nacInu rada mora bItI "povjerIjIv". U nekIm sIstemIma kada se Izvrsava bIIo kojI dIo
kerneIa onda je processor u sIstemkom nacInu rada. Kod nekIh drugIh sIstema, obIcno
moderInIjIh, mnogI posIovI kerneIa se Izvrsavaju u korIsnIckom nacInu rada a samo
operacIje kojIma se Izvrsavaju prIvIIegovane operacIje se Izvode u sIstemskom nacInu
rada. Na prImjer, UNX Ima monoIItnI kerneI u kome su rasporedIvac, drajverI uredaja,
datotecnI sIstem I sI. djeIovI jednog kerneI I svI se Izvrsavaju u sIstemskom nacInu
rada. DrugI sIstemI Imaju manje kerneIe kojI se Izvrsavaju u sIstemskom nacInu rada I
kojI kooperIraju sa drugIm procesIma, proces kojI kontroIIra datotecnI sIstem I raznI
drajverI uredaja, kojI se Izvrsavaju u korIsnIckom nacInu rada I kojI se vracaju u kerneIe
Izvrsavanjem prIvIIegovanIh U] InstrukcIja.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



21

(b) U] ZastIta (b) U] ZastIta (b) U] ZastIta (b) U] ZastIta
Sve uIazno IzIazne operacIje su Izvedene kao prIvIIegovane InstrukcIje da ne
bI korIsnIk dIrektno adresIrao U] uredaje I tIme ugrozIo rad operatIvnog
sIstema
Mora se obezbjedItI da korIsnIckI program nIkada ne preuzme kontroIu od
operatIvnog sIstema u sIstemskom stanju rada (recImo da korIsnIckI program
smjestI novu adresu u vektor prekIda svoju adresu, pa kad se desI prekId
datog tIpa tada bI se korIsnIckI program aktIvIrao u sIstemskom stanju a to
znacI I bIo opasan za cIjeII sIstem.
(c) ZastIta memorIje (c) ZastIta memorIje (c) ZastIta memorIje (c) ZastIta memorIje

Mora se objezbedItI zastIta memorIje bar u djeIu vektora prekIda I servIsnIh
rutIna prekIda
(1) U cIIju da se obezbjedI zastIta memorIje dodajmo dva regIstra kojI odreduju
opseg vazecIh adresa kojIm proces moze prIstupItI:
baznI regIstar, sadrzI najmanju vazecu IIzIcku memorIjsku adresu
granIcnI regIstar (IImIt regIster), sadrzI veIIcInu procesa
PrIstup memorIjI Izvan opsega deIInIsanog pocetnom adresom I veIIcnom je
zabranjen
(2) KorIstecI jedInIcu za upravIjanje memrojom (engI. Memory menagement
unIt- MMU) kojom se mapIra adresa Iz korIsnIckIh programa u IIzIcku
memorIju prI cemu ovo zahtjeva vIrtueInu memorIju. RazIIcItI nacInI rada
mogu bItI prIdruzenI razIIcItIm tabeIama mapIranja u MMU.




PrImjer zastIte memorIje PrImjer zastIte memorIje PrImjer zastIte memorIje PrImjer zastIte memorIje ZastItnI hardver ZastItnI hardver ZastItnI hardver ZastItnI hardver

Kada se operacIonI sIstem Izvrsava u sIstemskom stanju tada on Ima prIstup
scjeIokupnoj memorIjI, tj. I korIsnIckoj I sIstemskoj.
nstrukcIje za punjenje baznog I granIcnog regIstra su prIvIIegovane
InstrukcIje



Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



22
ArhItektura opsteg sIstema ArhItektura opsteg sIstema ArhItektura opsteg sIstema ArhItektura opsteg sIstema

S obzIrom da su uIazno IzIazne InstrukcIje prIvIIegovane kako korIsnIckI
program Izvrsava U] operacIjeZ
SIstemskI pozIv (system caII) - je nacIn na kojI jedan proces zahtjeva
Izvrsavanje odredenIh akcIja od operatIvnog sIstema

ObIcno Ima obIIk soItverskog prekIda na specIIIcIranu IokacIju u vektoru
prekIda
KontroIa se prenosI kroz vektor prekIda na usIuznu rutInu u operatIvnom
sIstemu prI cemu bIt stanja mora bItI postajen na sIstemskI
NajprIje se verIIIkuju parametrI kojI treba da vazecI I IspravnI, zatIm se
Izvrsava zahtjev I najzad se vraca kontroIa na InstrukcIju koja pratI
sIstemskI pozIv.


(d) RazIIcItI pokazIvacI na stek za sIstemskI I korIsnIckI nacIn rada

Procesor mora ImatI razIIcIte pokazIvace na stek za sIstemskI I korIsnIckI nacIn rada.
Ovo sprIjecava korIsnIckI program da napunI nevazecu adresu na stek prIje nego sto
procesor promjenI nacIn rada u sIstemskI.

ZadacI: ZadacI: ZadacI: ZadacI:

2.1 PreIetchIng je metoda prekIapanja posIova U] sa posIovIma kojI korIste procesor
za svoja Izracunavanja. deja je jednostavna: posto se zavrsI operacIja cItanja I u
trenutku kad posao pocne da se Izvrsava nad podacIma, neposredno se Izdaje
zahtjev U] uredaju za otpocne sIIjedece cItanje. Procesor I uIaznI uredaj su oba
zauzetI. S puno srece, kada je posao spreman za sIIjedece podatke uIaznI uredaj je
vec procItao te podatke. Procesor onda moze pocetI obradu novIh podataka, dok
uIaznI uredaj pocInje cItanje sIIjedecIh podataka. SIIcna Ideja moze bItI korIscena za
IzIaz. U ovom sIucaju, posao kreIra podatke koje stavIja u baIer koje IzIaznI uredaj
prIhvata. PoredIte preIetchIng semu sa spooIIng semom gdje procesor prekIapa
uIaze sa jednog posIa sa Izvrsavanjem I IzIaz od drugIh posIova.

Odgovor: PreIetchIng je aktIvnost bazIrana na korIsnIku dok je spooIIng aktIvnost
bazIrana na sIstemu. SpooIIng je mnogo eIektIvnIjI nacIn prekIapanja U] I operacIja na
procesoru.

2.2 Koje su razIIke Izmedu IunkcIja koje se Izvrsavaju u korIsnIckom I sIstemskom
nacInu rada (engI. monItor mode) kao osnovnom obIIku sIgurnostI sIstemaZ

Odgovor: UspostavIjanjem skupa prIvIIegovanIh InstrukcIja koje mogu bItI Izvrsene
samo u sIstemskom nacInu rada, operacIonI sIstem obezbjeduje kontroIIsanje cItavog
sIstema u svakom trenutku.

2.3 Koje su razIIke Izmedu trap-a I prekIda. Za sto se korIste svakI od njIhZ

Odgovor: PrekId je hardverskI generIsana promjena toka unutar sIstema. HandIer
prekIda je pozvan da obradI uzrok prekIda; kontroIa se onda vraca na prekInutI
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



23
kontekst I InstrukcIje. Trap je soItverskI generIsan prekId. PrekId se korsItI da
sIgnaIIzIra zavrsetak U] da se otkIonI potreba za prozIvkom uredaja (engI. pooIIng).
Trap se korIstI za pozIv rutIna operatIvnog sIstema III da se uhvate arItmetIcke greske.

2.4 Za koje tIpove operacIja je DMA korIstanZ
Odgovor: DMA je korIstan za prenos veIIke koIIcIne podataka Izmedu memorIje I
uredeja. On eIImInIse zahtjeve za procesor da bude ukIjucen u transIer podataka,
dozvoIjavajucI prenosu podataka da se zavrsI brze a da procesor obavI u Isto vrIjeme
druge posIove konkurentno.
2.5 Koje od sIIjedecIh InstrukcIja bI trebaIe bItI prIvIIegovaneZ
a) postavI vrIjednost sata b) CItaj vrIjednost sata c) OcIstI memorIju
d) zabranI prekIde e) prebacI proces Iz korIsnIckog nacIna rada u
sIstemskI
Odgovor: a, c, d, e

2.6 NekI racunarskI sIstemI ne obezbjeduju sIstemskI nacIn rada hardverskI. Da II je
moguce napIsatI sIguran operatIvnI sIstem za ovakvu vrstu racunara. DatI
argumentI za I protIvZ
Odgovor: OperacIonI sIstem za racunare ovog tIpa trebao bI zahtjevatI da Ima kontroIu
cItavo vrIjeme. Ovo bI se mogIo postIcI na dva nacIna:
a) soItverskom InterpretacIjom svIh korIsnIckIh programa (kao nekI 8ASC, APL
III LSP sIstemI, npr.). SoItverskI Interpreter ce obezbjedItI ono sto hardver ne
obezbjeduje.
b) Zahtjeva se da svI programI budu napIsanI u jezIcIma vIsokog nIvoa tako ce
objektnI kod bItI dobIjen Iz kompajIera. KompajIer ce generIsatI (III In-IIne III
pozIve IunkcIja) koje ce obezbjedI kontroIu zastIte koju hardver nIje u stanju
da obezbjedI.
2.7 U nekIm ranIm racunarIma zastIcen operacIonI sIstem se smjestao u jednu
memorIjsku partIcIju koju nIje moguce modIIIkovatI nI od korIsnIckog posIa nItI od
operatIvnog sIstema. OpIsIte poteskoce koje bI mogIe proIzacI kod takve seme
organIzacIjeZ
Odgovor: PodacI zahtjevanI od operatIvnog sIstema (IozInke, kontroIe prIstupa,
InIormacIje o vodenju obracuna I sI.) bI moraIe se spasItI u nezastIcenu memorIju a to
znacI da bI bIIe prIstupacne nautorIzovanIm korIsnIcIma.

2.8 ZastIcenI operacIonI sIstem je presudan jer obezbjeduje korektan rad racunarskog
sIstema. Mjera ove zastIte je Izvodenje operacIja u dva nacIna rada (korIsnIckI I
sIstemskI), zastIta memorIje I sata reaInog vremena. Da bI dozvoIIII maksImaInu
IIeksIbIInost mI bI zeIjeII da nametnemo mInImaIna ogranIcenja na korIsnIka. U
nastavku je data IIsta InstrukcIja koje su normaIno zastIcene. Sta je mInImaInI skup
InstrukcIja kojI mora bItI zastIcenZ
a) Promjena u korIsnIckI nacIna rada
b) Promjena u sIstemskI nacIn rada
c) CItaj Iz sIstemske memorIje
d) PIsI u sIstemskI memorIju
e) PreuzmI InstrukcIju Iz sIstemske memorIje
I) UkIjucI prekIde sata reaInog vremena
g) skIjucI prekIde sata reaInog vremena

Odgovor: b, c, d, g
25
3. 3. 3. 3. FunkcIje I struktura operatIvnog sIstema FunkcIje I struktura operatIvnog sIstema FunkcIje I struktura operatIvnog sIstema FunkcIje I struktura operatIvnog sIstema

Uvod Uvod Uvod Uvod

Kao prvo, operatIvnI sIstemI su projektovanI da pomognu apIIkacIjIkma kod
InterakcIje sa racunarskIm hardverom. Vaznost operatIvnog sIstema raste ka
tackI gdje (bar u gIavama mnogIh korIsnIka) operatIvnI system deIInIse masInu.
MnogI korIsnIcI raspravIjaju o operatIvnIm sIstemIma, cak na IstIm masInama,
bez dIskusIje na hardverske mogucnostI masIne.

OperatIvnI system obezbjeduje nIvoe apstakcIje Izmedu korIsnIka I goIe masIne.
KorIsnIcI I apIIkacIje ne vIde hardver dIrektno aII Ih vIde kroz operatIvnI system.

ApstrakcIja se moze korIstItI da se sakrIju mnogI hardverskI detaIjI
od korIsnIka I apIIkacIja. DakIe, promjene u hardveru se ne vIde od
stane korIsnIka.
Posebno je vazno da prodavcI racunarske opreme nude jednIstven
InteIejs operatIvnog sIstema kroz cItavu IInIju hardverskIh
pIatIormI. (na prImjer, neke opracIje takve kao InterakcIja sa 3D
graIIckIm hardverom moze se kontroIIsatI sa operatIvnIm
sIstemom. Kada se Izvrsava neka hardverska InstrukcIja I odnosI se
na dotIcnI hardver tada ce se ta InstrukcIja IzvrsItI korektno
ukoIIko postojI odgovarajucI hardver, Inace docI ce do prekIda
generIsanog nevazecom InstrukcIjom. U tom sIucaju, operatIvnI
sIstem ce emuIIratI datu InstrukcIju soItverskI.)
DrugI nacIn apstrakcIje mogao bI se korIstItI za raznoIIke uredaje
sa gIedIsta korIsnIka. Na prImjer, dIskovI, dIskete, CD-Rom, cak I
trake su vrIo raznoIIkI uredajI dok u operatIvnIm sIstemIma se
pojavIjuju IstIm gIedano sa strane korIsnIka.

OperacIonI sIstem se moze posmatratI kao sIstem kojI Ima cetIrI osnovna
InterIejsa:
InterIejs ka hardveru
InterIejs ka korIsnIku
InterIejs ka admInIstratoru sIstema

26
SvakI od ovIh InterIejsa obezbjeduje odgovarajucI pogIed na odgovarajucu
grupu korIsnIka:
a) onI kojI razvIjaju hardver I kojI zeIe da njIhov hardver bude podrzan
od nekog operatIvnog sIstema su posebno zaInteresovcanI za InterIejs
ka hardveru
b) KorIsnIcI kojI razvIjaju apIIkacIje su prImarno zaInteresovanI za
InterIejs operatIvnog sIstema ka apIIkacIjama
c) ObIcnI korIsnIcI su zaInteresovanI za za korIsnIckI InterIejs. Mnoge
knjIge koje opIsuju pojednIcnI operatIvnI sIstem ugIavnom opIsuju
korIsnIckI InterIejs.
d) MenadzerI sIstema su zaInteresovanI za InterIejs kojI Im pruza
mogucnostI upravIjanja sIstemom.

MnogI operatIvnI sIstemI, danas u upotrebI, su sastavIjenI od dva razIIcIta dIjeIa:
kerneI I sIstemskI programI. KerneI je prImarno odgovoran za prva dva InterIesja
opIsana Iznad, dok su sIstemskI programI odgovornI za posIednja dva InteIeja.

U ovom djeIu korIcemo sve aspekta operacIonIh sIstema da Ih pokazemo sa
korsnIckog, programerskog I dIzajnerskog gIedIsta. ]edInke koje se obraduju su
date nIze:

1. SIstemske komponente
2. UsIuge opreacIonog sIstema
3. SIstemskI pozIvI
4. SIstemskI programI
5. SIstemske strukture
6. VIrtueIne masIne
7. Projektovanje sIstema I ImpIementacIja

3.1 SIstemske komponente 3.1 SIstemske komponente 3.1 SIstemske komponente 3.1 SIstemske komponente
UpravIjanje procesIma (Process Menagement Process Menagement Process Menagement Process Menagement)
UpravIjanje memorIjom (Memory Menagement Memory Menagement Memory Menagement Memory Menagement)
UpravIjenje perIIernom memorIjom (Secondary Secondary Secondary Secondary- -- -Storage Menagement Storage Menagement Storage Menagement Storage Menagement)
SIstem za upravIjanje uIazom]IzIazom (]O System Menagement ]O System Menagement ]O System Menagement ]O System Menagement)
UpravIjanje datotekama (FIIe Menagement FIIe Menagement FIIe Menagement FIIe Menagement)
SIstem zastIte (ProtectIon System ProtectIon System ProtectIon System ProtectIon System)
Umrezavanje (NetworkIng NetworkIng NetworkIng NetworkIng)
KomandnI Interpreter (Command Command Command Command- -- -nterpreter System nterpreter System nterpreter System nterpreter System)
27
3.1.1 3.1.1 3.1.1 3.1.1 UpravIjanje procesIma UpravIjanje procesIma UpravIjanje procesIma UpravIjanje procesIma

KIjucna apstrakcIja koja se korIstI u projektovanju operatIvnIh sIstema
je prpces. Proces predstavIja program u Izvrsavanju. U toku svog
zIvotnog cIkIusa proces trazI neke resurse a kojI predstavIjaju: vrIjeme
na procesoru, memorIju, datoteke, uIazno]IzIazne uredaje a kojI sIuze
da bI se IzvrsIo zadatak kojI mu je dodjeIjen
Stanje procesa predstavIja: kod kojI se Izvrsava, vrIjednostI njegovIh
varIjabII, sadrzaj procesorskIh regIstara, posebno programskog
brojaca, PC-a.
OperacIonI sIstem je odgovoran za sIIjedece aktIvnostI a tIcu se
upravIjanja procesom:
Stvaranja I brIsanje procesa
SuspenzIja procesa kao I njegovo ponovno aktIvIranje
PrIprema mehanIzama za sInhronIzacIju procesa kao I
komunIkacIju procesa

3.1.2 3.1.2 3.1.2 3.1.2 UpravIjanje memorIjom UpravIjanje memorIjom UpravIjanje memorIjom UpravIjanje memorIjom

Posmatrajmo memorIju kao veIIkI nIz rIjecI III bajta, svakI sa svojom
sopstvenom adresom. To predstavIja skup podataka brzo prIstupnIh I
djeIjenIh od strane U] uredaja
CentraIna memorIja je nestaIna memorIja, jer gubI podatke u sIucaju
gubItka napajanja
OperacIonI sIstem je odgovoran za sIIjedece aktIvnostI a tIcu se
upravIjanja memorIjom:
VodI evIdencIju o korIscenju memorIje
OdIucuje kojI proces da napunI kada memorIjskI prostor bude
raspoIozIv
AIocIra I deaIocIra memorIjskI prostor ako je potrebno

3.1.3 3.1.3 3.1.3 3.1.3 UpravIjanje perIIernom memorIjom UpravIjanje perIIernom memorIjom UpravIjanje perIIernom memorIjom UpravIjanje perIIernom memorIjom

Posto je centraIna memorIja nestaIna memorIja I premaIa da smjestI
sve podatke I programe permanentno, racunarskI sIstem mora da
obezbjedI, dodatnu, perIIernu memorIju na koju moze sacuvatI
podatke Iz centraIne memorIje
28
UgIavnom modernI racunarskI sIstemI korIste dIskove kao gIavnI
medIjum za smjestanje podataka I to za podatke I programe
OperacIonI sIstem je odgovoran za sIIjedece aktIvnostI a tIcu se
upravIjanjem perIIernom memorIjom:

UpravIjanje sIobodnIm prostorom na perIIernoj memorIjI (engI.
Free space menagement Free space menagement Free space menagement Free space menagement)
AIokacIja podataka na perIIernoj memorIjI (engI. Storage aIocatIon Storage aIocatIon Storage aIocatIon Storage aIocatIon)
UpravIjanje kretanja gIave dIska - aIgorItmI

3.1.4 3.1.4 3.1.4 3.1.4 SIstem za upravIjanje SIstem za upravIjanje SIstem za upravIjanje SIstem za upravIjanje uIazom]IzIazom uIazom]IzIazom uIazom]IzIazom uIazom]IzIazom

SIstem uIaza]IzIaza sastojI se od:

SIstema kesInja baIera
Opsteg InterIerjsa prema drajverIma uredaja
DrajverI za specIIIcne uredaje

3.1.5 3.1.5 3.1.5 3.1.5 UpravIjanje datotekama UpravIjanje datotekama UpravIjanje datotekama UpravIjanje datotekama

Datoteka je skup povezanIh InIormacIja deIInIsanIh od strane
njegovog kreatora. UgIavnom datoteke predstavIjaju programe I
podatke
OperacIonI sIstem je odgovoran za sIIjedece aktIvnostI a tIcu se
upravIjanja datotekama:

KreIranje I brIsanje datoteka
KreIranje dIrektorIja I brIsanje
ObezbjedIvanje osnovnIh IunkcIja za manIpuIacIju datoteka I
dIrektorIja
OrganIzovanje datoteka na perIIernoj memorI
Spasavanje datoteka na staInu perIIernu memorIju

3.1.6 3.1.6 3.1.6 3.1.6 ZastItnI sIstem ZastItnI sIstem ZastItnI sIstem ZastItnI sIstem

ZastIta se odnosI na mehanIzme za kontroIu prIstupa procesa,
korIsnIka sIstemskIm I korIsnIckIm resursIma
MehanIzam zastIte mora:
29

RazIIkovatI autorIzovanu od neautorIzovane upotrebe
SpecIIIcIratI kontroIe koje ce bItI nametnute
ObezbjedItI sredstvo prImjene

3.1.7 3.1.7 3.1.7 3.1.7 Umrezavanje (DIstrIbuIranI sIstemI) Umrezavanje (DIstrIbuIranI sIstemI) Umrezavanje (DIstrIbuIranI sIstemI) Umrezavanje (DIstrIbuIranI sIstemI)

DIstrIbuIranI sIstem je skup procesora kojI ne djeIe memorIju III sat.
SvakI procesor Ima svoju sopstvenu memorIju.
ProcesorI u sIstemu su spojenI kroz komunIkacIonu mrezu
DIstrIbuIranI sIstem obezbjeduje korIsnIckI prIstup raznIm sIstemskIm
resursIma
PrIstup djeIjenIm resursIma dozvoIjava

Povecavanje brzIne Izracunavanja
Povecanje raspoIozIvostI podataka
Znatno povecana pouzdanost

3.1.8 3.1.8 3.1.8 3.1.8 KomandnI Interpreter KomandnI Interpreter KomandnI Interpreter KomandnI Interpreter

Mnoge komande su date u operacIonom sIstemu kao kontroInI IskazI
kojI rade sa:

KreIranje I upravIjanje procesa
Rad sa uIazom]IzIazom
UpravIjanje sa perIIernom memorIjom
UpravIjanjem sa centraInom memorIjom
PrIstup datotecnom sIstemu
ZastIta
Umrezavanje

Program kojI cIta I InterpretIra kontroIne Iskaze Ima razIIcIta Imena:

nterpreter kontroInIh kartIca
nterpreter komandne IInIje
SheII (kod UnIx-a)

NjIhova IunkcIja je da cIta I Izvrsava komandnI Iskaz.
30

3.2 3.2 3.2 3.2 ServIsI operatIvnog sIstema ServIsI operatIvnog sIstema ServIsI operatIvnog sIstema ServIsI operatIvnog sIstema

zvrsavanje programa - mogucnost sIstema da napunI program u
memorIju I pokrene ga
UIazno]IzIazne operacIje - posto korIsnIckI programI ne mogu IzvrsItI
U] operacIje dIrektno, operacIonI sIstem mora obezbjedItI nacIne da
se IzvrsI U] operacIje.
Rad sa datotecnIm sIstemom - mogucnost programa da cIta, pIse,
kreIra I brIse datoteke
KomunIkacIje - Izmjena InIormacIja Izmedu procesa kojI se Izvrsavaju
III na Istom racunaru III na razIIcItIm racunarskIm sIstemIma povezanI
zajedno sa mrezom. mpIementacIja je preko djeIjene memorIje
(shared memory) III prosIIjedIvanjem poruka (message passIng).
DetekcIja greske - obezbjeduju korektno Izracunavanje prI cemu se
mogu detektovatI greske uprocesoru I memorIjskom hardveru, U]
uredajIma III u korIsnIckIm programIma.

Dodatne IunkcIje operacIonog sIstema:

Dodatne IunkcIje postoje ne da pomognu korIsnIku nego da
obezbjede eIIkasnIje sIstemske operacIje:

AIokacIja resursa - aIokacIja resursa vIsestrukIm korIsnIcIma III
vIsestrukIm jobovIma kojI se Izvrsavaju u Isto vrIjeme
Vodenje racuna korIscenja sIstema - vodI se sIog za svakog
korIsnIka I evIdentIra se koIIko dugo se korIstIo racunarskI sIstem,
koje vrste resursa su se korIstIIe I pravI se statIstIka koja
omogucuje Izdavanje racuna korIsnIcIma za korIscenje
racunarskog sIstema
ZastIta - obezbjeduje da svI prIstupI sIstemskIm resursIma su
kontroIIsanI
31

3.3 3.3 3.3 3.3 SIstemskI pozIvI SIstemskI pozIvI SIstemskI pozIvI SIstemskI pozIvI

SIstemskI pozIvI obezbjeduju InterIejs Izmedu programa kojI se
Izvrsava I operacIonog sIstema

RaspoIozIv je kao InstrukcIje (makroI) u asembIerskom jezIku
DeIInIsan je u jezIku vIseg nIvoa da zamjenI asembIerskI jezIk I
omogucI sIstemsko programIranje dozvoIjavajucI sIstemske
pozIve da se Izvrse dIrektno (C, 8IIss, PL]360)
TrI opste metode se korIste da se prosIIjede parametrI Izmedu
programa kojI se Izvrsava I operacIonog sIstema:
ProsIIjedIvanje parametara u regIstrIma
SmestI parametre u tabeIu u memorIju, I adresa tabeIe se prosIIjedI
kao parametar u regIstru
Smjeste se parametrI na stek (push operacIja) od strane programa I
skIdaju sa steka (pop operacIja) od strane operacIonog sIstema

HardverskI I soItverskI prekIdI: VeIIkI dIo kerneIa sastojI se od koda kojI sIuzI za
rad sa hardverskIm prekIdIma (engI. nterrupt) I soItverskIm prekIdIma(engI.
Trap). PrekId je dogadaj na procesoru kojI je prouzrokovao nekI eksternI uredaj.
SoItverskI prekId je uzrokovan programom. OnI se uzrokuju posebnm
IntrukcIjom (recImo, SW - soItvware Interrupt, MC6800) a mogu bItI uzrokavanI
I Izvrsenjem nevazece InstrukcIje III prI pokusaju da se prIstupI resursu kojI je
zastIcen.

Kada se detektuje prekId kojI je dosao od uredaja hardver ce spasItI status
tekuceg procesa kojI se Izvrsava I IzvrsItI preIaz u sIstemskI nacIn rada I pocetI
obradIvatI rutInu u kerneIu. Ova rutIna se zove rutIna za obradu prekIda prvog
nIvoa (engI. FIrst IeveI Interrupt handIer). Ona moze servIsIratI datI prekId III
probudItI process kojI ceka da se desI prekId. Kada ova rutIna zavrsI Izvodenje,
obIcno uzrokuje da processor nastavI Izvrsavanje procesa kojI je bIo prekInut.
MedutIm, operatIvnI sIstem moze rasporedItI I nekI drugI proces u skIadu sa
pravIIIma rasporedIvanja.

Kada se Izvrsava sIstemskI pozIv korIstecI soItverskI prekId, onda se prvo spasI
stanje procesa, procesor preIazI u sIstemsko stanje I kontroIa programa se
predaje kerneIu. Kod u kerneIu na kojI se prenosI kontroIa nazIva se dIspecer
32
sIstemskIh servIsa. On IspItuje parametre sIstemskog pozIva, cesto date u
procesorskIm regIstrIma, da bI odredIo koju akcIju da preduzme. Nakon toga
kontroIa se prenosI na kod kojI obraduje zeIjenu akcIju. Kada se zavrsI
Izvodenje sIstemskog pozIva, kontroIa se vraca procesu kojI je trazIo Izvrsenje
sIstemskg pozIva III nekom drugom procesu u skIadu sa pravIIIma
rasporedIvanja.

PrImjer: zvodenje sbIbIIotetske IunkcIje read (Id, buIIer,nbytes), koja se odvIja
u dva koraka. PrvI, Izvrsavanje bIbIIotetske IunkcIje I druga, pozIv operatIvnog
sIstema da odradI sIstemsku IunkcIju. Na sIjedecoj sIIcI su prIkazanI koracI koje
je potrebno provestI kod Izvrsavanja sIstemskog pozIva.




33

3.4 3.4 3.4 3.4 SIstemsk SIstemsk SIstemsk SIstemskI programI I programI I programI I programI

SIstemskI programI obezbjeduju konvencIonaInu okoIInu za razvoj
programa I Izvrsenje. OnI mogu bItI podjeIjenI u sIIjedece grupacIje:

Rad sa datotekama
Statusne InIormacIje
zmjene datoteka
Pomoc programskIm jezIcIma
Punjenje programa I Izvrsenje
KomunIkacIje
ApIIkacIone programe

KorIsnIckI pogIed na operacIonI sIstem je deIInIsan sa sIstemskIm
programIma a ne sa stvarnIm sIstemskIm pozIvIma

3.5 3.5 3.5 3.5 SIstemske strukture operacIonog sIstema SIstemske strukture operacIonog sIstema SIstemske strukture operacIonog sIstema SIstemske strukture operacIonog sIstema

3.5.1 3.5.1 3.5.1 3.5.1 Struktura sIstema Struktura sIstema Struktura sIstema Struktura sIstema - -- - jednostavan prIstup jednostavan prIstup jednostavan prIstup jednostavan prIstup

MS DOS MS DOS MS DOS MS DOS napIsan je da obezbjedI najvIse IunkcIonaInost u najmanje
prostora

nIje podjeIjen u moduIe
mada MS DOS Ima neku strukturu, njegov InterIejs I nIvoI
IunkcIonaInostI nIsu jasno razdvojenI

UNX UNX UNX UNX - -- - ogranIcen sa IunkcIonaInoscu harvera, orIgInaInI UNX
operacIonI sIstem Imao je ogranIcenu strukturu. UNX OS se sastojao
od dva posebna dIjeIa:

SIstemskIh programa
]ezgra operatIvnog sIstema (KerneI)
SadrzI sve Ispod InterIejsa sIstemskIh pozIva I Iznad IIzIckog
harvera
34
Obezbjeduje datotecnI sIstem, rasporedIvanje CPU, upravIjanje
memorIjom I druge IunkcIje operatIvnog sIstema; moze se
prImjetItI da Ima veIIkI broj IunkcIja za jedan nIvo.

3.5.2 Struktura sIstema 3.5.2 Struktura sIstema 3.5.2 Struktura sIstema 3.5.2 Struktura sIstema - -- - prIstup nIvo prIstup nIvo prIstup nIvo prIstup nIvo- -- -a aa a

OperacIonI sIstem je podjeIjen u jedan broj nIvoa, gdje je svakI nIvo
napravIjen nad nIzem nIvou. NajnIzI nIvo (nIvo 0) je harver dok je
najvecI nIvo (nIvo N) je korIsnIckI InterIejs
Sa moduIarnoscu, nIvoI su IzabranI tako da svakI korIstI IunkcIje
(operacIje) I usIuge samo nIzIh nIvoa.

NIvoIska struktura od THE OS

PrvI put su nIvoI korIscenI u THE operacIonom sIstemu. NjegovIh 6
nIvoa su sIIjedecI:

NIvo 5: KorIsnIckI programI
NIvo 4: 8aIerovanje za uIazno IzIaznIh uredaja
NIvo 3: Drajver uredaja, konzoIa operatora
NIvo 2: UpravIjanje memorIjom
NIvo 1: RasporedIvanje procesora
NIvo 0: Harver

3.6 VIrtueIna masIna 3.6 VIrtueIna masIna 3.6 VIrtueIna masIna 3.6 VIrtueIna masIna

RacunarskI sIstem napravIjen od razIIcItIh nIvoa, prI cemu je hardver
najnIzI od svIh nIvoa. Na sIIjedecem nIvou naIazI se kerneI kojI korIstI
hardverske InstrukcIje da IzvrsI skup sIstemskIh pozIva za upotrebu
od strane vIsIh nIvoa. VIrtuaIna masIna treItIra hardver na jedInstven
nacIn, tako da je kerneI nepromjenIjIv I nasIanja se ne vIse na harver
nego na InterIejs ka hadrveru.
VIrtuaIna masIna obezbjeduje InteIejs IdentIcan ka harveru kojI se
naIazI Ispod u organIzacIjI nIvoa operatIvnog sIstema.
OperacIonI sIstem kreIra IIIzIju vIsestrukIh procesa od kojIh svakI se
Izvrsava na vIastItom procesoru sa vIastItom (vIrtuaInom) memorIjom.
FIzIckI resursI racunara se djeIe da kreIraju vIrtuaIne masIne.
35
RasporedIvanje procesora moze se IzvestI da IzgIeda da
korIsnIcI Imaju njIhov vIastItI procesor
SpooIIng I datotecnI sIstem mogu obezbjedItI vIrtuaInI cItac
kartIca I vIrtuaInI stampac
KorIsnIckI termInaII sa djeIjenjem vremena mogu bItI
operatorske konzoIe vIrtuaIne masIne

PrednostI I mane vIrtuaIne masIne PrednostI I mane vIrtuaIne masIne PrednostI I mane vIrtuaIne masIne PrednostI I mane vIrtuaIne masIne

Koncept vIrtuaIne masIne obezbjeduje potpunu zastItu sIstemskIh
resursa posto je svaka vIrtuaIna masIna IzoIovana od drugIh. Ova
IzoIacIja, medutIm, ne dozvoIjava dIrektno djeIjenje resursa.
VIrtuaIna masIna (VM) je IdeaIno sredstvo za IstrazIvanje I razvoj
operacIonIh sIstema. Razvoj operacIonog sIstema se IzvodI na VM
umjesto na IIzIckoj I tako ne narusava normaIan rad sIstemskIh
operacIja, odnosno drugIh vIrtuaInIh masIna.
Koncept VM je tesko ImpIementIratI zbog napora zahtjevanIh da se
obezbjedI dupIIkat podredene masIne.

3.7 CIIjevI sIstemskog projektovanja 3.7 CIIjevI sIstemskog projektovanja 3.7 CIIjevI sIstemskog projektovanja 3.7 CIIjevI sIstemskog projektovanja

KorIsnIckI cIIjevI - operacIonI sIstem bI trebao bItI pogodan za
upotrebu, jednostavan za ucenje, pouzdan, sIguran I brz
SIstemskI cIIjevI - OperacIonI sIstem bI trebao bItI jednostavan za
projektovanje, ImpIementacIju, odrzavanje, sto je moguce IIeksIbIInIjI,
pouzdanIjI, osIoboden gresaka I eIIkasan.

3.7.1 3.7.1 3.7.1 3.7.1 MehanIzmI I pravIIa odIucIvanja MehanIzmI I pravIIa odIucIvanja MehanIzmI I pravIIa odIucIvanja MehanIzmI I pravIIa odIucIvanja

MehanIzmI odreduju mogucnostI admInIstratora sIstema (npr. VMS
dozvoIjava admInIstratoru kontroIu prIjavIjIvanja preko mreze), dok
pravIIa odIucIvanja odreduju sta ce bItI uradeno (na prImjer, IIrma
moze odIucItI da ne dozvoII prIvIIegovanIm korIsnIcIma da se prIjave
preko mreze).
Odvajanje pravIIa odIucIvanja od mehanIzama je vrIo vazan prIncIp. To
dozvoIjava maksImaInu IIeksIbIInost ako pravIIa odIucIvanja budu
promjenjena kasnIje.
36

3.8 mpIementacIja sIstema 3.8 mpIementacIja sIstema 3.8 mpIementacIja sIstema 3.8 mpIementacIja sIstema

TradIcIonaIno pIsan u asembIerskom jezIku, operacIonI sIstem sada se
moze pIsatI u jezIcIma vIseg nIvoa
Kod pIsan u jezIcIma vIseg nIvoa
moze bItI pIsan znatno brze
vIse je kompaktan
Iakse je shvatIjIv I Iakse ga je debagIratI

OperacIonI sIstem je Iakse prenIjetI na drugI hardver ako je pIsan u
jezIcIma vIsokog nIvoa. Ova osobIna zove se portabIInost.

3.9 CeneracIja sIst 3.9 CeneracIja sIst 3.9 CeneracIja sIst 3.9 CeneracIja sIstema ema ema ema

OperacIonI sIstem je projektovan tako da se moze IzvodItI na bIIo
kojoj kIasI masIna. Zbog toga sIstem mora bItI konIIgurIsan za svaku
specIIIcno racunarsko mjesto
SYSCEN program preuzIma InIormacIje koje se tIcu specIIIcne
koIIguracIje hardverskog sIstema
8ootIng - pokretanje racunara punjenjem kerneIa
8ootstrap program - kod smjesten u ROM-u kojI ce mocI IocIratI
kerneI, napunItI ga u memorIju I otpocetI njegovo Izvrsavanje.

8utIranje sIstema 8utIranje sIstema 8utIranje sIstema 8utIranje sIstema

Proces pokretanja operatIvnog sIstema sa dIska se nazIva butIranje (engI.
bootIng III bootstrap). RazIIcIte masIne mogu ImatI razIIcIte sekvence akcIja u
toku butIranja. Da budemo precIznIjI, pogIedajmo kako IzgIeda sekvenca
butIranje kod PC racunara.

SvakI PC Ima ROM kojI sadrzI skup programa I koje zovemo 8OS. Kada se
ukIjucI napajanje racunara III posIIje reseta, procesor pocInje IzvrsavatI 8OS.
8OS kontroIIse sIstemskI hardver, vrsI InIcIjaIIzacIju, ukIjucujucI postavIjanje
vektora prekIda na nIzIm memorIjskIm adresama da ukaze na njegove usIuzne
rutIne. Onda pocInje da trazI uredaj sa koga ce IzvrsItI butIranje. RedosIIjed
37
pretrazIvanje je obIcno A a onda C. Ako postojI dIsketa u uredaju A, 8OS ce
pokusatI da IzvrsI butIranje sa njega. nace pokusace da to uradI sa dIska C.

PretpostavImo da postojI dIsketa u uredaju A. 8OS ce napunItI prvI sektor dIska
(512 bajta) na memorIjsku IokacIju 0x07C00 I IzvrsI skok na ovaj kod da bI
IzvrsIo punjenje operatIvnog sIstema. Kod za butIranje obIcno kontroIIra da II su
posIednja 2 bajta ovog dIskovnog sektora sadrze oznaku 0x55AA. Ako nema
oznake boot sektora kod ce smatratI da je dIsk ne butabIIan, odbIja daIjI
nastavak rada I prIkazuje poruku greske koja kaze da dIsk nIje sIstemskI dIsk.
nace, pocInje punjenje ostatka operatIvnog sIstema u memorIju. Ako operatIvnI
sIstem treba memorIju 0x7c00, boot kod sam sebe obIcno premjestI na drugo
mjesto prIje punjenja operatIvnog sIstema. Kada se punjenje operatIvnog
sIstema zavrsI, boot kod jednostavno prenese kontroIu na operatIvnI sIstem I na
taj nacIn ga pokrece.

8utIranje sa dIska je nesto sIozenIje. DIsk je obIcno podIjeIjen u nekoIIko
IogIckIh nezavIsnIh jedInIca nazvanIh partIcIje. PocetnI I krajnjI cIIIndar I veIIcIna
partIcIje je zapIsana u tabeII partIcIja. PrvI sektor na dIsku predstavIja M8R. On
sadrzI program za gIavno punjenje, partIcIonu tabeIu I oznaku da je sektor
butabIIan na njegovom kraju. Svaka partIcIja moze sadrzatI butabIIan sIstem.
Ako ga sadrzI onda svaka partIcIja Ima svoj sopstvenI boot kod u boot sektoru
te partIcIje.

U toku butIranja, 8OS ce napunItI M8R na adresu 0x7c00, kao sto je to
uobIcajeno I predatI kontroIu tom dIjeIu koda. Program kojI se naIazI u M8R-u
pretrazuje tabeIu partIcIja da bI nasao koja je tabeIa aktIvna na osnovu oznake
da je aktIvna. Kada nade aktIvnu partIcIju onda on zna gdje ona pocInje na
dIsku. M8R kod prvo reIocIra sebe na razIIcItu memorIjsku IokacIju I onda punI
boot sektor aktIvne partIcIje na adresu 0x7c00 I predaje kontroIu novo
napunjenom kodu. Sada je zadatak ovog koda da napunI I pokrene operatIvnI
sIstem kojI je zapIsan u toj partIcIjI.

38
ZadacI: ZadacI: ZadacI: ZadacI:

3.1 Koje su osnovne aktIvnostI operacIonog sIstema koje se odnose na
upravIjanje procesImaZ
Odgovor:
KreIranje I brIsanje korIsnIckIh I sIstemskIh procesa
PrekId (suspenzIja) I nastavak Izvrsenje procesa
Obezbjedenje mehanIzama za sInhronIzacIju procesa
Obezbjedenje mehanIzama za komunIkacIju procesa
Obezbjedenje mehanIzama za rad sa zatojem
3.2 Koje su trI osnovcne aktIvnostI operacIonog sIstema a odnose se na
upravIjanje memorIjomZ

Odgovor:
Vodenje evIdencIje o svakom djeIu memorIje kojI je korIscen I od koga
OdIucIvanje kojI procesI ce napunItI memorIjskI prostor kad postane
raspoIozIv
AIocIranje I deaIocIranje memorIjskog prostora kada je potrebno

3.3 Koje su trI osnovne aktIvnostI operacIonog sIstema a odnose se na
upravIjanje perIIernIm uredajImaZ

Odgovor:
UpravIjanje sIobodnIm prostorom
AIokacIja prostora na perIIernom uredaju
RasporedIvanje kretanja gIave dIska

3.4 Koje su osnovne aktIvnostI operacIonog sIstema a odnose se na upravIjanje
datotekamaZ

Odgovor:
KreIranje I brIsanje datoteka
KreIranje I brIsanje dIrektorIja
Podrzavanje sIstemskI IunkcIja (prImItIva) za rad sa datotekama I
dIrektorIjIma
MapIranje datoteka na perIIernom uredeju
zvodenje backup-a na stabIIan (neIzbrIsIv) medIj za cuvanje podataka

39
3.5 Koja je namena komandnog InterpreteraZ Zasto je on obIcno odvojen od
kerneIaZ

Odgovor: On cIta komande korIsnIcke komande sa tastature III Iz datoteka
komandI I Izvrsava Ih. ObIcno to radI pretvarajucI komande u sIstemske pozIve.
ObIcno nIje sastavnI dIo kerneIa posto komandnI Interpreter je podIozan
promjenama (III cak na jednom operacIonom sIstemu Ih postojI vIse pa se moze
ukIjucItI jedan od njIh)

3.6 NavedIte pet servIsa koje operacIonI sIstem treba da obezbjedI. ObjasnIte
kako svaka od njIh obezbjeduje pogodnost za korIsnIka. ObjasnIte u kojIm
sIucajevIma ce bItI nemoguce obezbjedItI ove servIse korIsnIckIm
programImaZ

Odgovor:

a) zvrsavanje programa zvrsavanje programa zvrsavanje programa zvrsavanje programa: operacIonI sIstem punI sadrzaj (III djeIove) datoteke u
memorIju I pocInje Izvrsavanje. KorIsnIckI programI ne mogu ImatI brIgu o
aIokacIju procesorskog vremena.
b) b) b) b) U] operacIje: U] operacIje: U] operacIje: U] operacIje: DIskovI, trake, serIjske IInIje I drugI uredajI moraju
komunIcIratI na veoma nIskom nIvou. KorIsnIk treba samo da specIIIcIra
uredaj I vrstu operacIje koju treba da IzvrsI na njemu dok sIstem konvertuje
zahtjev u odgovarajuce komande specIIIcne uredaju III kontroIeru. KorIsnIckI
programI bI trebaII brInutI samo o prIstupu uredaju Inace ga ne mogu
korIstItI.
c) c) c) c) Rad sa datotecnIm sIstemom: Rad sa datotecnIm sIstemom: Rad sa datotecnIm sIstemom: Rad sa datotecnIm sIstemom: PostojI mnogo detaIja kod kreIranja I brIsanja
datoteka, aIokacIje prostora I Imenovanja za koje korInsIcI ne bI trebaII da
brInu. 8IokovI dIskovnog prostora se korsIte za datoteke I o tom prostoru se
mora vodItI evIdencIja. 8rIsanje datoteke zahtjeva ukIanjanje Imena datoteke
I osIobadanje aIocIranIh bIokova. ZastIta se moze postIcI da se obezbjedI
korektan prIstup datotekama. KorIsnIckI programI ne mogu se bavItI
postavIjanjem zastIta nItI aIocIranjem bIokova sIobodnog prostora potrebnog
za datoteke. To Isto vazI I kod brIsanja datoteka, odnosno deaIocIranje
bIokova kojI vIse nIsu potrebnI nIje u nadIeznostI korIsnIckIh programa.
d) KomunIkacIje: KomunIkacIje: KomunIkacIje: KomunIkacIje: ProsIIjedIvanje poruka Izmedu sIstema zahtjeva umetanje
poruka u InIormacIone pakete, sIanje paketa ka mreznom kontroIoru I
prenos kroz komunIkacIonI medIj kao I reasembIIranje paketa na
odredIsnom sIstemu. Takode mora bItI obavIjeno uredenje paketa kao I
40
korekcIja gresaka ukoIIko se pojave. KorIsnIckI programI nece koordInIratI
prIstup mreznom uredaju nItI ce mocI prImatI pakete namjenjene drugIm
procesIma.
e) e) e) e) DetekcIja greske: DetekcIja greske: DetekcIja greske: DetekcIja greske: DetekcIja greske se desava I na hardverskom I
soItverskom nIvou. Na hardverskom nIvou, svI prenosI podataka moraju bItI
pregIedanI da bI se uocIIa eventuaIna greska koja se moze desItI u prenosu.
SvI podacI na medIju moraju bItI kontroIIsanI da bI bIII sIgurnI da nema
promjena od njIhovog posIednjeg pIsanja na medIj. Na soItverskom nIvou
medIjI moraju bItI prekontroIIsanI na konzIstentnost podataka, npr., da II
broj aIocIranIh I neaIocIranIh bIokova na uredaju odgovara ukupnom broju
bIokova na uredaju. DakIe, greske se cesto procesIraju nezavIsno (na
prImjer, greka u podacIma na dIsku), tako da mora postojatI gIobaIan
program kojI se bavI svIm tIpovIma gresaka (operacIonI sIstem). Takode,
obradujucI greske sa operatIvnIm sIstemom ostaII procesI ne treba da
sadrze kodove svIh mogucIh gresaka na sIstemu da bI mogII obradItI gresku.

3.7 Sta je svrha sIstemskIh pozIvaZ

Odgovor: SIstemsI pozIvI dozvoIjavaju procesIma na korIsnIckom nIvou da
traze servIs operatIvnog sIstema.

3.8 Sta je svrha sIstemskIh programa

Odgovor: SIstemskI programI mogu bItI zamIsIjenI kao skup korIsnIh
sIstemskIh pozIva. OnI obezbjeduju
osnovnu IunkcIonaInost ka korIsnIcIma kojI ne treba da pIsu svoje vIastIte
programe da bI rIjesIII zajednIcke
probIeme.

3.9 Koje su osnovne prednostI kod prIstupa sIstemskog projektovanja u nIvoImaZ

Odgovor: Kao u svIm sIucajevIma moduIarnog projektovanja, projektovanje
operatIvnog sIstema na moduIaran nacun Ima nekoIIko prednostI. SIstem je
Iakse debug-IratI I modIIIkovatI zato sto promjene Imaju eIekta samo na
ogranIcene dIjeIove sIstema umjesto na sve djeIove operatIvnog sIstema.
nIormacIje se cuvaju tamo gdje trebaju I moze Im se prIstupItI samo unutar
deIInIsane ogranIcene obIastI tako da bIIo koja greska koja se tIce podataka
takode mora bItI ogranIcena na specIIIcan moduI III nIvo.
41

3.10 Koje su osnovne prednostI za projektanta operatIvnog sIstema kada se
korIstI arhItektura vIrtuaIne masneZ
3.11 Zasto je odvajanje mehanIzama od poIIcy-a pozeIjna karakterIstIkaZ
3.12 RazmotrImo eksperImentaInI SynthesIs operacIonI sIstem kojI Ima
asembIer ukIjucen u kerneI. Da bI optImIzIrao perIormanse sIstemskIh
pozIva kerneI sadrzI sve rutIne unutar adresnog prostora kerneIa da bI
mInImIzIrao put kojI treba da napravI sIstemskI pozIv kroz kerneI. Ovaj
prIstup je suprotan prIstupu projektovanja operatIvnog sIstema sa nIvoIma
tako da je put kroz kerneI drugacIjI I Izgradnja operatIvnog sIstema je Iaksa.
ProdIskutuj razIoge za I prtotIv kod ovog prIstupa projektovanja kerneIa I
kod optImIzacIje sIstemskIh perIormansIZ

Odgovor: SynthesIs Ima dobre perIormanse koje postIze kompIIacIjom "u
Ietu". NazaIost, tesko je debug-IratI probIeme unutar kerneIa zbog
"IIuIdnostI" koda (kod je dostupan I Iako se moze napravItI greska na kerneIu
dok radItI na asembIIranju koda). Takode, svaka kompIIacIja je specIIIcna u
sIstemu cInecI SynthesIs teskIm za prenos na nove sIsteme (novI kompajIer
mora bItI napIsan za svaku novu arhItekturu).

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



42
4. Procesi

Kod ranih raunarskih sistema bilo je dozvoljeno samo jednom programu da se
izvrava u jednom trenutku. Ovaj program imao je potpunu kontrolu raunarskog
sistema i pristup svim sistemskim resursima. Dananji raunarski sistemi dozvoljavaju
punjenje u memoriju vie programa i njihovo konkurentno izvoenje. Definiimo pojam
procesa kao programa u uzvoenju. Proces je radna jedinica u modernim time-sharing
sistemima. Sistem se sastoji se skupa procesa: operacioni sistem izvrava sistemski kod
a korisniki procesi izvravaju korisniki kod. Svi ovi procesi se mogu izvravati
konkurentno na procesoru koji se djeli meu njima. Djelei procesor meu procesima
operacioni sistem moe napraviti raunar produktivnijim.

4.1 Koncept procesa

Operacioni sistem izvrava raznolike programe
batch sistem - job-ove
Time sharing sistem - korisnike programe ili poslove (tasks)
U literaturi pojam procesa i posla se esto upotrebljava u istom kontekstu
Proces predstavlje program u izvrenju i izvrenje procesa mora napredovati
na sekvencijalan nain.
Jedan proces ukljuuje: programs (tekst sekcija), program counter (PC), stek,
sekcije podataka

Stanje procesa:

Proces u izvrenju mjenja svoje stanje koje moe biti:

new - proces je kreiran
running - proces se izvrava
waiting - proces eka na neki dogaaj da se desi
ready - proces eka da mu bude dodjeljen procesor
terminated - proces je zavrio izvravanje

Dijagram procesa stanja




Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



43
Kontrolni blok procesa (Proces control block, PCB)

Za svaki proces se po njegovom kreiranju formira struktura podataka nazvana
procesna struktura podataka (PCB process control block) u koju se uvaju podaci za
dati proces. Osnovni podaci koji se mogu nai u PCB su:

Informacije vezane za rasporeivanje procesa:
(Registri, programski broja, PSW, pokaziva na stek, Stanje
procesa, prioritet, parametric rasporeivanja, ID procesa, ID
procesa roditelj i grupe, signali, vrijeme pokretanja procesa,
vrijeme korienja procesora, vrijeme korienja procesora za
proces dijete, vrijeme slijedeeg alarma)
Informacije o upravljanju memorijom(pokaziva na tekst
segment, pokaziva na data i stack segmente)
Informacije o korienju resursa raunarskom sistema
koji mogu sluiti za formiranje rauna po zavretku procesa
Informacije o statusu ulazno/izlaznih operacija
Informacije o datotekama(korjenski direktorij, radni direktorij, deskripotori
datoteka, identifikator korisnika i grupe).

Redovi ekanja procesa

Proces moe biti u jednom od tri stanja:

Stanje izvravanja (Running) to je proces koji je pridruen procesoru i izvrava se
na njemu. Takav proces se jo naziva tekui proces (current process)

Stanje spremnosti za izvrenje (Ready) to je proces koji bi se mogao izvravati ako
procesor(i) nije zauzet izvravanjem drugog procesa. Procesi koji su spremni za
izvrenje ekaju u redu ekanja koji se zove red spremnih procesa (ready queue).
Stanje blokiranosti (blocked) proces se ne moe izvriti dok se neto ne desi,
recimo proces moe da eka na zavrenje ulaznih operacija, ili zavretak
komunikacija sa drugim procesom. Takav proces e biti stavljen u red ekanja na
uredjaj ili dogaaj.
Migracija procesa - predstavlja premjetanje procesa iz jednog reda ekanja u drugi
zbog uslova koji dovode do takvog postupka
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



44

Rasporeiva

Rasporeiva poslova (Long term scheduler) - izabira koji procesi e biti
dovedeni u red spremnih procesa
Rasporeiva procesora (Short term scheduler) - izabira koji proces iz reda
spremnih e biti pridruen procesoru



Rasporeiva procesora se poziva vrlo esto, nakon nekoliko milisekundi, a
to znai da mora biti brz
Rasporeiva poslova se poziva nefrekventno (sekunde ili minute su potrebne
za njegovo aktiviranje) te zato moe biti i sporiji
Rasporeiva poslova upravlja stepenom multiprogramiranja
Procesi mogu biti predstavljeni kao:
proces vezan za ulaz/izlaz - troi vrijeme uglavnom na izvravanje
ulazno/izlaznih operacija dok je korienje procesora vrlo kratko
proces vezan za procesor - troi vie vremena na izraunavanja i
sastoji se od znatnih punjenja procesora (zato moe znaajno na
napreduje)

Izmjena konteksta procesa (engl. process switch)

Kada procesor prelazi na izvrenje novog procesa operativni sistem mora
spasiti stanje starog procesa i napuniti spaeno stanje novog procesa.
Vrijeme izmjene konteksta je optereenje sistema, jer operativni sistem ne
izvrava korisni posao u toku izmjene (moe biti od 1 do 1000 mikrosec).
Brzina izmjene zavisi od harverske podrke

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



45
Izmjena konteksta (context switch) ne mora ukljuivati izmjenu procesa. U
emu je razlika izmeu izmejene konteksta i izmjene procesa? Izmjene
konteksta se deava kod svakog prekida i ne implicira nastavak izmjene
procesa (moe se nastaviti izvravati isti proces).
Operacije koje je potrebno izvesti su:
sauvati PCB starog procesa
napuniti PCB stanje novog procesa
oistiti ke za stari process
promjeniti adrese koje ukazuju na memoriju procesa u TLB-u.
Suspenzija procesa

Ponekad je poeljno da se izvri suspenzija procesa, t.j. da se proces ne tretira
za izvrenje na neko vrijeme. Obino to nastaje u nekim izuzetnim sluajevima rada
operacionog sistema kao to su:
Sistem je pretrpan i ne postoji dovoljno prostora u memoriji za sve procese, ili
Sistem je nestabilan i moe uzrokovati pad, odnosno zaustavljanje rada. Ako je
proces u stanju izvrenja kad se to desi moe biti teko ili nemogue da nastavi
izvrenje procesa po povratku sistema u stabilno stanje.

Da bi ovo omoguili tada se moe izvriti suspenzija procesa iz bilo kog stanja kao to
je dato na slici.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



46


Ovde je data kompletna lista operacija nad procesom:

Create Process - koji se vri formiranje procesa







Distroy Process zavretak rada procesa
Suspend Proces prevodjenje procesa u stanje suspenzije
Resume Process ponovni nastavak procesa u stanju u kome je bio
Change Processs Priority izmjena prioriteta procesa
Block Process Blokiranje procesa i prevodjenja u jedan od redova za ekanje
(ureaj ili dogaaj)
Awake Process prevoenje procesa iz stanja blokiran u stanje spremnih za
izvrenje
Assign Process pridruivanje procesa procesoru

Kreiranje procesa

Jedna od funkcija operativnog sistema je da obezbjedi mehanizme da postojei procesi
kreiraju nove procese. Kada se ovo desi kaemo da je proces koji je kreirao novi proces,
predstavlja proces roditelj. Proces koji je kreiran zvae se procesom djete. Mogue je
da jedan proces roditelj ima vie procesa dijete. U stvari, ak i procesi djete mogu imati
procese djete.

U UNIX-u proces djete dobija sve resurse koje je imao proces roditelj ili dobija nove
resurse. Meutum, postojei resursi ne mogu se razdjeliti.

U UNIX-u, kada se novi proces kreira, proces djete je kopija procesa roditelj. Novi
proces moe ili nastaviti sa izvravanje kopije procesa roditelj ili napuniti drugi sliku
procesa. U nastavku razmotrimo sistemske pozive fork() i exec().

Poslije kreiranja novog procesa, proces roditelj moe ili ekati proces djete da zavri
svoje izvoenje ili nastaviti da se izvrava konkurentno (stvarno ili zamiljeno) sa
procesom djete.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



47

Primjer na UNIX-u
sistemski poziv fork kreira novi proces
sistemski poziv execve se koristi posle fork iskaza da zamjeni
memorijski prostor sa novim programom
Po iniciranju operativnog sistema aktivira se init process i deamon
procesi.
Poslije logiranja kreira je komandni process (u terminologiji UNIX-a to
je shell) (t.j.virtualna konzola)
Na nivou shell-a korinsik aktivira proces

Tradicionalna implementacija novog procesa

Fork() je sistemski poziv koji se koristi za kreiranje novog procesa u UNIX-u. U
tradicionalnoj implementaciji, on kreira novi process koji je gotovo istovjetna kopija
procesa roditelja. Zato kaemo gotovo istovjetna?. Neke stvari nema potrebe
duplicirati, tako da imamo identifikacije procesa koje su razliite.

Sistemski poziv fork() vraa identifikaciju procesa, ID, u procesu roditelj i ID koji je
jednak 0 u procesu djete. Ne raunajui male razlike, ova dva procesa su veoma slina.
Izvrenje nastavljaju u istoj taki oba procesa.

S obzirom da izvrenje poinje u istoj taki kako sistemski poziv fork() moe vratiti
neto to je razliito? Odgovor je jednostavan. Njihov stek je dupliciran i razliite
vrijednosti koje predstavljaju identifikacije su stavljene na stek tako po zavretku
poziva fork() vraa razliite identifikacije procesa.

Razliita vrijednost na vrhu steka je veoma znaajna. Programeri veinom kotroliu
rezultat izvrenja sistemskog poziva fork() i na taj nain odreuju da li se nalaze u
procesu djete ili procesu roditelj. Vrlo esto procesi djete i roditelj predstavljaju vrlo
razliite stvari.
// Primjer korienja sistemskog poziva fork()
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

int main(void) {
pid_t child_pid;
printf("Ovo je process glavnog programa, sa PID-om %d.\n", (int)getpid());

child_pid = fork ();
if(child_pid != 0) {
printf("Ovo je process roditelj, sa PID-om %d.\n", (int)getpid());
printf("PID procesa dijete je %d.\n", (int)child_pid);
} else
printf("Ovo je process dijete sa PID-om %d.\n", (int)getpid());
return 0;
}
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



48

Exec familija sistemskih poziva

Poto e procesi djete esto sluiti za razliite svrhe u odnosu na njihove procese
roditelj, korisno je zamjeniti memorijski prostor procesa dijete, koji je kopija procesa
roditelj, sa nekim drugim programom. Zamjena ukljuuje slijedee korake koje je
potrebno izvesti:

(1) dealociranje memorijskog prostora procesa (memorijske stranice, stek i sl.)
(2) alociranje novih resursa procesa
(3) punjenje ovih resursa sa stanjem novog procesa
(4) Neka od stanja procesa roditelj se sauvaju kao to su: identifikacija grupe,
maska prekida, i sl.

Primjer korienja sistemskih poziva fork() i exec()
fork() izvrava dupliranje procesa da bi stvorio novi proces sa potpuno istim
sadrajem kao proces koji je kreirao. Jednina razlika je u povratnoj vrijednosti
sistemskog poziva fork().

exec(ime_datoteke) zamjenjuje stadraj procesa sa programom koji se nalazi u
datoteci ime_datoteke

Kada proces izda sistemski poziv fork() dolazi do kreiranja novog procesa. ta
vie, u tabeli procesa, u operativno sistemu, e biti dodat novi process.


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



49

Alternative sistemskog poziva fork() - sluaj kopiranja kod pokuaja pisanja

Kopiranje svih memorijskih stranica koje pripadaju jednom procesu je veoma skupa
operacija. Ona postaje jo skiplja ako razmotrimo injenicu da process dijete vrlo
esto dealocira vel alocirani prostor da bi ubacio novi process u njega.

Jedna od alternativa tradicionalnoj implementaciji sistemskog poziva fork() se naziva
kopiraj ako ima zahtjev za pisanje (engl. copy-on-write). Detalje mehanizma e biti
razjanjenji kod prouavanje upravljanja memorijom ali emo poluati da ukratko
kaemo neto o tome.

Osnovna ideja je da se oznae sve memorijske stranice procesa roditelj kao read only
umjesto da se vri njihovo dupliciranje. Ako neki od procea, roditelj ili dijete pokua da
pie preko ovih stranica desie se prekid u kome je operativni system zaduen da
napravi kopiju te stranice za process koji je pokuao izvriti pisanje. Ova tehnika
dodaje izvjestan interni rad ali spaava nas nepotrebnog kopiranja svih stranica.

Alternative sistemskog poziva fork() - Vfork()

Postoji i druga alternativa sustemskom pozivu fork(). Ova tehnika korienjem
sistemskog poziva vfork() je i bra ali je opasna u pogrenim rukama. Kod vfork()-a
ne duplicira se niti oznaavaju stranice procesa roditelj, jednostavno se pozajmljuju i
stavljamo ih na raspolaganje procesu djete. U toku ovog, proces roditelj ostaje blokiran
i ne moe pristupiti stranicama. Opasnost je to svaka promjena na strani procesa djete
moe se vidjete od procesa roditelj.

Sistemski poziv vfork() je veoma koristan kada se koristi sa exec_(). Ovo je iz razloga
to e exec() kreirati potpuno novi proces. Ovdje ne postoji kreiranje novog prostora
za proces djete jer ga moete imati preko exec()-a. Ovdje se pozajmljuje adresni
prostor procesa roditelj dok ne pokrene proces.

Zavretak procesa

Proces djete moe zavriti na slijedee naine: normano zavrenje procesa, kada ga
operativni system nasilno prekida zato to je naruio pravila ponaanja, ili kada ga
process roditelj nasilno zavri komandom kill. esto procesi roditelj e zavriti svoje
procese djete prije nego oni izdaju sistemski poziv exit() ili kada je funkcija koju
obavljaju procesi djete vie nepotrebna.

U UNIX-u kada proces zavri onda on ulazi u stanje mrtvila. On ostaje u tom stanju
sve dok process roditelj ne prepozna injenicu da je on zavrio preko sitemskog poziva
iz familije wait(). Mada umrtvljeni procesi su odustali od korienja mnogih resursa,
ostalo je sauvano mnogo informacija o stanju tako da process roditelj moe nai
razloge zavretka procesa djete.

U UNIX-u process djete moe nadivjeti proces roditelj. Kada se ovo desi mogu nastati
neznatni problemi. U tom sluaju proces roditelj nije u prilici da potvrdi zavretak
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



50
procesa djete. Proces dijete poznat je pod imenom zombie proces a njegov proces
roditelj je ve prije zavrio izvoenje. Init proces je zaduen za sve zombie procese
dozvoljavajui im da imaju dostojan zavretak. esto su zombie procesi poznati pod
nazivom siroii (engl. Orphan).

ta je zombi process
Kada process dijete zavrava izvoenje on treba da potvrdi signalom (SIGCLD)
svome procesu roditelj da je zavrio izvoenje i da izda process roditelj
komandu za unitenje procesa djete.
Meutim, ako process roditelj ne potvrdi kada je process djete mrtav, onda
process djete postaje zombie process.
Proces dijete e ostati u stanju zombi sve dok process roditelj ne potvrdi prijem
signala SIGCLD i onda process djete moe zavriti svoje izvoenje. On to ne
uradi iz nemogunosti ( recimo, nalazi se u stanju blokiranosti 10 sekundi, ili je
zavrio izvoenje ranije). U ovom drugom sluaju signal unitenja procesa dijete
predaje procesu init koji e u njegovo ime proslijediti signal procesu djete da bi
normalno zavrio.

// primjer nastajanja zombie procesa

#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
/* Koristite 'ps -x' za provjeru statusa procesa */
int main(void) {
pid_t child_pid = fork();
if(child_pid > 0) {
/* Proces roditelj: ide na spavanje 100 sekundi */
sleep(100); /* exit(0) */
} else {
/* Proces dijete: zavrava izvoenje odmah */
exit(0);
}
return 0;
}

Kooperirajui procesi

Nezavisni procesi ne mogu imati efekta zbog izvravanja drugog procesa
Kooperirajui procesi mogu imati efekta zbog rada drugog procesa
Prednosti kooperirajuih procesa su slijedee:
Djeljenje informacija
Poveavanje brzine izvravanja
Modularnost
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



51
Pogodnost
Problem proizvoa-potroa

Tipian primjer kooperirajuih procesa: proces proizvoa proizvodi
informaciju koja se troi od strane procesa potroaa.
Neogranien bafer - predstavlja bafer bez ogranienja
Ogranien bafer - predtsvlja bafer fiksne veliine

Djeljenji podaci
var n;
type item=;
var buffer: array[0..n-1] of item
in,out: 0..n-1

Proces proizvoa
Repeat
.
Proizvodi item u netp
.
While in+1 mod n=out do no-op;
buffer[in]:=nextp;
in:=in+1 mod n;
Until false;
Proces potroa
Repeat
while in=out do no-op;
nextc:=buffer[out];
out:=out+1 mod n;

troi item u netc
..
Util false;

Rjeenje je ispravno ali moe puniti samo n-1 mjesto u baferu.


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



52
Threadovi

Pojam thread-a

Zadatak (engl. task) je u operativnom sistemu apstrakcija koja predstavlja stanje
programa u izvrenju. To stanje ukljuuje elemente kao to su registri, stek, memorija i
programski broja kao i stanja koja mogu biti "izvrava se", "blokiran" i sl. Kaemo da
se procesi na sistemu nadmeu za sistemske resurse, posebno procesor(e).

Pozabavimo se sa drugom apstrakcijom u operativnom sistemu koja se naziva thread.
Thread, kao zadatak, predstavlja odvojen dio posla u toku uzvoenja. Ali nasuprot
procesu thread sarauje u korienju resursa i , u stvari, djeli mnoge od njih.

Moemo rei da je thread proces unutar procesa. Izmeu ostalog, thread uvodi
konkurentnost u nae programe - moe postojati vie upravljakih thread-ova. Stariji
operativni sistemi nisu podravali thread-ove. Njihov rad se moe predstaviti
apstrakcijom proces. Kada kaemo proces, onda mislimo na akciju tipa "uradi ___, onda
uradi ____, ako je x>0 uradi ____na kraju uradi ____" koja izgleda kao jedan upravljaki
thread. Ime "task" sugerie optiju apstrakciju. Iz istorijskih razloga, koristiemo rije
proces kada u stvari mislimo na zadatak. Od sada pa nadalje koristiemo rije proces
umjeto zadatak ali emo skrenuti panju ukoliko je ta razlika vana.


Memorija procesa

Prije nego to vidimo kako izgleda memorijski raspored za zadatak, pogledajmo kako
to izgleda na primjeru procesa koji predstavlja zadatak sa samo jednim upravljakim
thread-om.
















A process with one thread
Data
User space
Program
Instruction
counter
stack
registers
A thread of execution
of the process
Primjetimo da "heap" raste na gore kada se vri dinamika alokacija memorije (koristei
malloc i sl.) a da stek raste u suprotnom smjeru kada se na stek smjetaju podaci
koristei pozive funkcija. Podaci kao to su povratne adrese, povratne vrijednosti,
parametri, lokalne varijable i druga stanja se smjetaju na stek (engl. runtime stack).

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



53

Dio memorijskog prostora oznaen sa "text" sadri programski kod
Memorijski prostor oznaen sa "data" sadri globalne i statike varijable koje moraju
biti smjetene u izvrni oblik programa poto su inicijalizirane
Prostor oznaen sa "bss" sadri varijable koje se inicijaliziraju u smislu da ih ne
treba spaavati na disk - one se mogu ukljuiti kasnije

Implementacija thread-ova
Svi thread-ovi u procesu postoje unutar konteksta tog procesa. Oni djele sekciju koda,
sekciju podataka i resurse operativnig sistema takve kao to su otvorene datoteke i sl.













Ali oni ne djele sve resurse. Poto se svaki thread izvrava nezavisno, svaki thread ima
svoje lino shvatanje steka i registara.

Stack 1
Stack 2
A process with two threads
(a multithreaded process)
Data
One user space
Program
Instruction
counter 2
Registers 1 Thread 1
Instruction
counter 1
Thread 2 Registers 2
Dobra strana dijeljenja resursa je izmjena threa-ova koja je manje "skupa" nego to je
to sluaj kod izmjene procesa.

Loa strana je da, nasuprot procesa koji imaju zatitu izlaska iz adresnog prostora,
operativni sistem ne moe sprijeiti thread-ove da meusobno pristupaju "tuim"
dijelovima koda i podataka jer oni dijele isti adresni prostor.

Sistemski thread-ovi

Najjednostavnija implementacija thread-ova je bila takva da oni nisu bili vidljivi od
strane korisnika. Oni postoje samo u kernelu i zovu se sistemski thread-ovi (engl.
kernel threads). Mnogi od sistemskih rutina su implementirani kao thread-ovi (funkcija
koja obrauje greku stranice). Implementacija razliitih funkcija operativnog sistema
kao thread-ova ima smisla iz mnogih razloga:

Nema potrebe za zatitom poto programeri koji razvijaju kernel vjeruju
jedan drugom meusobno. Treba primjetiti da e se izgubiti zatita memorije
procesa im formiramo thread jer se thread izvodi u istom adresnom
prostoru
Razliite funkcije operativnog sistema dijele mnoge resurse kernela
Oni se mogu stvarati i "ubijati" veoma brzo tako da se mogu koristiti za
izvravanje U/I zahtjeva i drugih naizmjeninih aktivnosti
Veoma brzo se izvodi izmjena meu thread-ovima
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



54
Lake je misliti o aktivnostima kernela u smislu posebnog thread-a umjesto
funkcija unutar monolitnog kernela.

Korisniki thread-ovi

Programeri koji razvijaju UNIX nisu mogli drati dugo korienje threadova samo u
sistemskom stanju. Korisnicima je omoguen korienje thread-ova preko biblioteka
thread-ova. Biblioteke thread-ova dale su korisnicima iluziju o thread-ovima bez
ikakvog ukljuivanja u sistemsko stanje. Kada jedan proces koji sadri thread se
izvrava onda se i rasporeiva thread-ova izvrava unutar istog procesa. Ovaj
rasporeiva izabira koji e thread se izvriti i koliko dugo. Ako se thread treba
blokirati, rasporeiva moe izabrati slijedei thread da izvri unutar istog procesa.

Ova implementacija thread-ova je mnogo vie nego iluzija. Daje korisniku da napie
vrlo efikasne programe. Ovi programi mogu se izmjenjivati sa threadovima i djeliti
resurse sa vrlo malim "overhead"-om. Da bi izmjenili thread-ove, registri se moraju
spasiti i vratiti kao i izmjeniti stek. Kod izmjene konteksta operacija se znatno bre
izvrava nego je to sluaj kod izmjene procesa.
Druga prednost je to su thread-ovi na korisnikom nivou implementirani u potpunosti
sa bibliotekom thread-ova - od interfejsa do rasporeivanja. Kernel ih ne vidi niti zna o
njima.

LWP - procesi

Sistemski thread-ovi su odlini za programere koji piu sistemski kod dok korisniki
thread-ovi odgovaraju mnogim potrebama korisnika ali nisu savreni. Pogledajmo
slijedee primjere:

Na multiprocesorskom sistemu, samo se jedan thread, unutar procesa, moe
izvravati u vremenu
Proces koji sadri vie thread-ova, od kojih bi se svaki mogao izvravati u
bilo nekom vremenu nee dobiti vie procesorskog vremena od procesa koji
sadri samo jedan thread.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



55
Ako neki thread unutar procesa naini sistemski poziv, svi thread-ovi unutar
procesa e biti blokirani zbog izmjene konteksta.
Ako neki thread se blokora ekajui na zavretak U/I operacija ili na dobijanje
resursa, cijeli proces se blokira. U thread bibliotekama se obino zamjenjuju
sistemski pozivi sa blokiranjem sa sistemskim pozivima bez blokiranja kad
god je to mogue da bi ublaili ovaj problem

Da bi ukazali na ove potrebe trebali bi da imamo korisnike thread-ove koji su
podrani od strane kernel-a. Da pojasnimo, treba nam mogunost za thread-ove da
dijelimo resurse unuta procesa ali nam treba i mogunost kernela da moe skinuti
thread sa procesa (engl. preempt) , rasporediti ga staviti ga na procesor (engl.
dispatch). Ovaj tip thread-ova je poznat pod imenom koriniki thread podran od
strane kernela ili lako-teki procesi (engl. light-weight process - LWP). Ovaj proces je
suprotan klasinom procesu ili zadatku koji spadaju u kategoriju "tekih" procesa
(engl. heavy-weight process).

U ovom modelu svakom thread/LWP je pridruen po jedan kontrolni blok procesa (PCB-
process control block) koji se sada moe rasporeivati od strane operativnog sistema,
odnosno njegovog rasporeiva a ne interneg rasporeivaa unutar procesa. Ako sistem
podrava sistemske thread-ove (bar neke, ako ne sve thread-ove koji e biti LWP), onda
e vjerovatno sistemski threadovi biti pridrueni svakom LWP i ove threadove e kernel
rasporeivati.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



56
Poreenje thread-ova i procesa

Poreenje procesa i thread-ova
Karakteristika Proces Thread
Vrijeme kreiranja(u UNIX-u) 10 ms 1 ms
Vrijeme izmjene 1.8 ms 0.4 ms
Komunikacioni mehanizam Kompleksan Jednostavan
Djeljenje podataka Ne Da
Zatita Da Ne
Lokacija Isti ili razliit raunar Isti raunar

Komplesniji model

U nekim modelima, takvim kao to se koristi kod Solaris-a, mogue je da se pridrui
nekoliko thread-ova podranih od kernela jednom procesu ne oznaavajui ga da je to
korisniki thread. U ovom sluaju. U ovom sluaju process e imati vie prilika da ga
rasporeiva operativnog sistema vidi. Na multiprocesorskim sistemima, maksimalni
nivo konkurentnosti je odreen sa brojem LWP-a pridruenih procesu (naravno, ovi je
dalje ogranieno sa brojem thread-ova koji se izvode unutar procesa i sa brojem
raspoloivih procesora).

Mada su u sutini, LWP i korisniki thread-ovi podrani od strane kernela sinonimi, Sun
koristi ove termine razliito. U kontekstu Solarisa, LWP je korisniki vidljiv kernel
thread.

Za LWP se kae da se bre izmjenjuje od procesa ali zahtijevaju vie internog posla
nego korisniki threadovi bez podrke kernela. Izmjena konteksta meu korinsnikim
thread-ovima unutar procesa je mnogo bra nego izmjena konteksta meu LWP-a. Ali,
izmjena konteksta kod LWP-a vodi veoj konkurentnosti zadatka dok se threadovi na
korisnikom nivou blokiraju unutar kernela tako da rasporeiva thread-ova moe
pokrenuti slijedei to je suprotno principu konkurentnosti.

Dijagram pokazuje LWP-e koje su pridrueni zadacima i sistemske thread-ove kao i
sistemske thread-ove bez pridruenih LWP. Pored toga prikazane su i nekoliko
razliitih veza izmeu thread-ova na korisnikom nivou i LWP-a pridruenih procesu.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



57


LWP-i nude zgodan i fleksibilan kompromis izmeu korisnikih thread-ova i posebnih
procesa. Vano je shvatiti da su oni sloene strukture:

Komunikacija, ak i unutar procesa, izmeu LWP-a zahtijeva ukljuivanje
kernela (itaj, dvije izmjene konteksta)
LWP-e rasporeuje kernel tako da blokiranje LWP-a zahtijeva ukljuivanje
kernela
LWP su vrlo fleksibilni i vrlo uopteni - ovo znai da su vrlo veliki. LWP-i troe
veliki rad nad resursima
LWP-i su skupi za kreiranje i ubijanje zato to ukljuuju kernel
LWP nisu kontrolisani tako da ih korisnici mogu kreirati mnogo troei
sistemske resurse i dovodei sistem u stanje da drugi procesi "umiru" zato
to im se daje vie procesorskog vremena nego slinim procesima sa
nekoliko LWP-a.

Primjer kreiranja thread-a

#include ``csapp.h''
void *thread(void *vargp);

int main() {
phtread_t pid; // za smjetanje novih vrijednosti identifikacija procesa

Pthread_create(&tid, NULL, thread, NULL); //kreiranje novog thread-a
Pthread_join(tid, NULL); //glavni thread eka na druge thread-ove da zavre
exit(0); /* glavni thread zavrava izvoenje */
}
void *thread(void *vargp) /*thread routing*/
{
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



58
printf(``Hello, world! \n'');
return NULL;
}
Primjer procesa sa dva thread-a (Linux OS)



main()


pthread_create(one_func);
pthread_create(another_func);

pthread_join(thread1);
pthread_join(thread2);
one_func()

thread1
another_func()

thread2
OS
kernel



int r1 ; A fragment of main()
. . . thread1 ;
pthread_create(&thread1, , one_func, &r1);


Odgovarajui vremenski dijagram
main() one_func()
(thread1)
another_func()
(thread2)
pthread_create(one_func);
pthread_create(another_func);
pthread_join(thread1);
pthread_join(thread2);
Mogua organizacija servera sa
thread-ima
Primjer implementacije web server-a

Dispatcher
thread
Request
for work
File server
process
Worker
thread
Mailbox


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



59

Port
Disks
Requests
Detaljniji prikaz u odnosu na sliku lijevo.











Performanse

Kod izvravanja thread-ova koji se nalaze u dva procesa komunikacija se treba obaviti
preko jezdga operativnog sistema ime se usporava komunikacija izmeu dva procesa.
U sluaju jednog procesa sa dva thread-a komunikacija se moe obaviti preko djeljenih
podataka pri emu se ova komuniakcija moe obavljati znatno bre zato to nema
interakcije sa operativnom sistemom.
Inputs/
outputs
Process A Process B
Kernel of OS
(kernel level)
Data exchange via system calls
(expensive & slow)
Sending/
Receiving
(user level)


Inputs/
outputs
Process
OS Kernel
Data exchange via common data
(simple & fast)
Sending/
receiving
Data


Komunikacija meu procesima

Ovo pitanje je posebno vano kod operativnih sistema. Moderni operativni sistemi nude
lepezu naina meuprocesog komuniciranja od koji emo neke pomenuti ovdje. U
laboratorijskim vjebama za UNIX/Linux ova tema dobila je znaajno mjesto i u okviru
tih laboraotijskih vjebi su obraene slijedee tehnike meuprocesnih komunikacija:
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



60
imenovane i neimenovane pipe-i, djeljena memorija, rad sa socket-ima, mroslijeivanje
poruka i sl.)

U nastavku ukaimo samo na osnovne pojmove koji se susreu kod implementacije
ovakvih mogunosti operativnih sistema.

Mehanizam za sinhronizovanje procesa koji komuniciraju
Proslijeivanje poruka - procesi komuniciraju jedan sa drugim bez korienja
djeljene varijable
IPC omoguuje dvije operacije:
send(message) - poruka je fiksne ili promjenljive duine
receive(message)
Ako procesi P i Q trba da komuniciraju oni treba da:
uspostave komunikacionu vezu izmeu njih
izmjene poruke preko send/receive
Implementacija komunikacione veze
fizika (t.j. djeljena memorija, hadverski bas)
logika (t.j. logiko definisanje komunikacionih veza, recimo vie
logikih veza preko jedne fizike)
Implemetaciona pitanja

Kako su veze uspostavljene?
Moe li veza biti pridruena ka vie od dva procesa?
Koliko veza moe postojati izmeu svakog para procesa?
ta je kapacitet veze?
Je li veliina poruke koju veza moe podrati fiksne ili promjenljive veliine?
Da li je veza jednosmjerna ili dvosmjerna?

Direktna kominikacija

Procesi moraju imenovati jedan drugog eksplicitno:
send(P,message) - poalji poruku procesu P
receive(Q,message) - primi poruku od procesa Q
Karakteristike komunikacione veze
Veza se uspostavlja automatski
Veza je pridruena tano jednom paru komunikacionih procesa
Izmeu svakog para postoji tano jedna veza
Veza moe biti jednosmjerna ali je obino dvosmjerna.

Indirektna komunikacija
Poruke se alju i primaju preko mailbox-ova (poznatih i pod imenom port)
Svaki mailbox ima jednistveni ID
Procesi mogu komunicirati samo ako djele mailbox
Karakteristike komunikacione veze:
Veza se uspostavlja samo ako procesi djele zajedniki mailbox
Jedan veza moe biti uspostavljena meu vie procesa
Svaki par procesa moe djeliti nekoliko komunikacionih veza
Veza moe biti jednosmjerna ili dvosmjerna
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



61
Operacije
kreiraj novi mailbox
poalji i primi poruke kroz mailbox
uniti mailbox
Djeljenje mailbox-a
P1,P2 i P3 djele mailbox A
P1 alje poruku, dok P2 i P3 primaju
Ko e dobiti poruku?
Rjeenje:
Dozvoli da jednu vezu koristi bar dva procesa
Dozvoli jednom procesu u vremenu da izvri prijem poruke
Dozvoli sistemu da izabere vaeeg prijemnika. Poiljaoc je obavjeten
ko je primio poruku
Baferovanje
Red poruka pridruenih jednoj vezi moe se implementirati na jedan od tri
naina
Kapacitet 0 - moe da primi nula poruka. Poiljalac mora ekati od
prijemnika da primi poruku (rendezvous)
Ogranien kapacitet - mailbox moe da primi n poruka. Poiljalac
mora ekati ako je veza puna (mailbox)
Neogranien kapacitet - beskonaan broj poruka se moe prihvatiti. U
ovom sluaju poiljalac ne mora ekati.

Izuzetna stanja - Oporavak od greaka

Zavretak procesa
Gubitak poruke
Poruka je unitena (podaci stigli u pogrenom rasporedu i sl.)
Zadaci

4.1 Nekoliko popularnih mikroraunarskih operacionih sistema obezbjeuje malo ili
nimalo konkurentne obrade. Prodiskutuj osnovne komplikacije koje e konkurentno
procesiranje dodati operacionom sistemu?

Odgovor:
Metoda dijeljenja vremena (time-sharing) mora biti implementirana da bi dozvolila
svakom od nekoliko procesa da ima pristup sistemu. Ovaj metod ukljuuje
pranjenje procesa sa procesora koji ga nisu dali dobrovoljno ve kori enjem
npr., sistemskih poziva. Kod kernela je vieulazan (reentrant), tako da vie procesa
mogu izvravati kod kernela konkurentno.

Procesi i sistemski resursi moraju imati zatite i moraju biti zati eni jedan od
drugog. Bilo koji proces mora biti ogranien u iznosu memorije koju moe koristiti i
operacijama koje moe izvriti na ureajima kao to su disk.
Potrebno je provesti brigu da se sprije e zastoji meu procesima tako da procesi ne
ekaju jedan na drugog za alocirane resurse.

4.2 Opiite razlike izmeu kratkoronog (engl. short-term), srednjeronog (engl.
medium-term) i dugoronog rasporeivanja (engl. long-term)?
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



62

Odgovor:

Kratkorono rasporeivanje (rasporeiva procesora) - izabira proces u memoriji i
to one koje su spremni da se izvre i alocira im procesor.

Srednjorono rasporeivanje se koristi posebno kod sistema sa raspodjeljenim


vremenom kao jedan meu nivo kod rasporeivanja. ema swapp-ovanja se
implementira da bi uklonila djelomino zavrene programe i nastavila ih kasnije na
mjestu gdje su bili prekinuti.
Dugoro ni rasporeiva (rasporeiva poslova) odreuje koji e posao biti donesen
u memoriju na obradu.
Osnovna razlika je u frekvenciji njihovog izvrenja. Rasporeiva procesora izabira
veoma esto novi proces dok rasporeiva poslova mnogo manje poto se on bavi
smjetanjem posla u sistem i moe se desiti da eka da se predhodni posao zavri da bi
slijedei posao bio ubaen u memoriju.

4.3 Raunar DECSYSTEM-20 ima viestruki skup registara. Opiite akcije kod izmjene
konteksta ako je novi kontekst napunjen u jedan skup registara. ta se jo moe
desiti ako je novi kontekst u memoriji umjesto u skupu registara a svi skupovi
registara su u upotrebi.

Odgovor: Tekui skup pokazivaa na registre procesora se promjeni da bi pokazivali
na skup koji sadri novi kontekst i ta operacija je veoma brza. Ako je kontekst u
memoriji, onda jedan od konteksta koji su u registima mora se izabrati i premjestiti u
memoriju da bi novi kontekst mogao biti napunjen u skup registara. Ova proces traje
neto due nego kada se novi kontekst nalazi u registima i zavisi od naina izbora
konteksta koji treba izubaciti iz skupa registara (kontekst kojeg procesa treba biti
izabran).
4.4 Koje dvije prednosti imaju thread-ovi u odnosu na viestruke procese? Koje su
osnovni nedostaci koje oni imaju? Navedite jednu aplikaciju koja bi mogla imati
koristi ako upotrebljava thread-ove i jednu koja ne bi imala koristi od njihove
upotrebe?

Odgovor: Thread-ovi su vrlo "zgodni" da bi se kreirali i unutili i dok postoje, koriste
veoma malo resursa. Na primjer, oni koriste vrijeme procesora ali nemaju potpuno
odvojen memorijski prostor. Naalost, thread-ovi moraju vjerovati jedan drugom da ne
otete djeljene podatke. Na primjer, jedan thread moe unititi podatak na koji su svi
drugi thread-ovi povezani. Isti sluaj se ne moe desiti sa procesima bez obzira da li
koriste sistemske mogu nosti koje im dozvoljavaju da dijele podatke. Bilo koji program
koji moe uraditi vie od jednog zadatka odjednom mogao bi imati koristi od
multithreading-a. Na primjer, koji ita ulaz, obrauje ga i smjeta na izlaz bi mogao
imati tri thread-a, po jedan za svaki posao. Procesi koji se izvravaju sekvencijalno u
njihovoj prirodi ne bi imali koristi od multitasking-a, na primjer, program koji ispisuje
vrijeme.

4.5 Koji se resursi koriste kad se thread kreira? Kako se razikuju od onih koje koristi
proces kad se kreira.?

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



63
4.6 Opiite akcije koje provodi kernel kod izmjene konteksta?

a) Meu thread-ovima
b) Meu procesima
Odgovor:

a) Kontekst thread-a mora biti spaen (registri i ostali podaci, recimo
raunovodstveni podaci ako postoje) i drugi thread-kontekst mora biti
napunjen.
b) Isto kao pod a) ali ovdje treba biti spaen kontekst memorije i onda se moe
slijedei proces napuniti.

4.7 Koje su razlike izmeu thread-ova na korisnikom nivou i thread-ova na
sistemskom nivou (thread-ovi podrani od kernela)? Pod kojim okolnostima je jedan
tip bolji od drugog?

4.8 Algoritam proizvoa - potroa dozvoljava samo n-1 bafera da bude puno u bilo
kojem vremenu. Modificiraj algoritam da dozvoli svim baferima da se u potpunosti
iskoriste.

Odgovor: Djeljene strukture su kao u rjeenju datom u ovom dijelu stim to treba
dodati slijede e:


Boolean full[n]

Pri emu inicijalno je full[i] =false za svako i.

Proces proizvoa ima lokalnu varijablu nextp u koju se novi element koji se proizvodi
smjeta.

repeat
...
produce an item in nextp
...
while full[in] do skip;
buffer[in]=nextp;
full[in]=true;
in := in+1 mod n;
until false;

Kod za proces potroa moe se modifikovati na slijedei na in:

repeat
while not full[out] do skip;
nextc = buffer[out];
full[out]= false;
out = out+1 mod n;
...
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi



64
consume the item in nextc
...
until false;

4.9 Razmotrimo emu meuprocesne komunikacije gdje se koriste mailbox-ovi.

a) Pretpostavimo da proces P eli da eka na dvije poruke, jednu od mailbox-a A i
jednu od mailbox-a B. Koji niz direktiva send i receive e se izvriti?
b) Koji niz direktiva send i receive bi trebao izvriti proces P ako eli da eka jednu
poruku ili od mailbox-a A ili od mailbox-a B (ili od oba)?
c) Operacija receive stavlja proces u stanje ekanja dok je mailbox neprazan. Ili
smisli emu koja e dozvoliti procesu da eka kad je mailbox prazan ili opiite
zato takva ema ne moe postojati.

4.10 Razmotrimo operacioni sistem koji podrava i IPC i RPC eme. Dati primjere
problema koji bi se mogli rijeiti sa svakim tipom eme. Opiite prednosti vae
metode?

Informacije na web-u
Process Scheduling in the Windows operating System
(http://www.gfdi.fsu.edu/~hitoshi/cop6611/node9.html)
Interprocess communication - semaphore tutorial
(http://freya.yggdrasil.com/bible/info-html/ipc_toc.html)
Computer science department web servers (http://www.cs.haverford.edu/CS-
Departments.html)


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

65
5. RasporedIvanje procesora 5. RasporedIvanje procesora 5. RasporedIvanje procesora 5. RasporedIvanje procesora

Uvod Uvod Uvod Uvod

Kada se spomene rIjec "rasporedIvac" onda se mIsII na pravIIa kojIma operatIvnI sIstem
odIucuje kojem od procesa medu spremnIm procesIma treba datI procesor I kada. U
sIIjedecem dIjeIu prodIskutujmo o ovIm pravIIIma I kako se ona ImpIementIraju.

RasporedIvanje prIstupa procesa nedjeIjIvIm resursIma je osnovna zadaca operatIvnog
sIstema. Procesor je najvaznIjI medu ovIm resursIma zato sto se najvIse korIstI. VIsoka
cIjena dodatnIh procesoIra, u smIsIu cIjene procesora I cIjene tehnoIogIje kod masIvnIh
paraIeInIh sIstema, obezbjeduje da vecIna sIstema nemaju dovoIjnu prednost
procesora koja ce dozvoIItI njIhovu "rasIpnIcku" uIogu.

OsnovnI cIIjevI rasporedIvanja procesora je da se obezbjedI da se sto je vIse moguce
posIova IzvodI na procesoru. Na sIstemu sa jednIm procesorom, cIIj je da jedan posao
se IzvodI cIjeIo vrIjeme.

MuItIprogramIranje dozvoIjava da se vIse posIova budu spremnI za Izvodenje cIjeIo
vrIjeme. Mada se ne moze konkurentno IzvrsItI vIse posIova nego sto Imamo
procesora, moze se dozvoIItI svakom procesoru da Izvrsava jedan posao dok drugI
ceka na zavrsetak U] zahtjeva III drugIh dogadaja.


Posmatranja prI Izvrsavanju procesa Posmatranja prI Izvrsavanju procesa Posmatranja prI Izvrsavanju procesa Posmatranja prI Izvrsavanju procesa

NekI procesI korIste procesor u toku duzeg vremenskog perIoda svog zIvota. Za takve
procese kazemo da su vezanI za procesor. NekI drugI procesI najvecI dIo svog zIvota
provedu u prIkupIjanu podataka, odnosno Izvrsavanju U] zahtjeva. Za takve posIove
kazemo da su vezanI za uIaz]IzIaz.

RasporedIvac procesora RasporedIvac procesora RasporedIvac procesora RasporedIvac procesora

RasporedIvac procesora se jos nazIva I kratkorocnI rasporedIvac kratkorocnI rasporedIvac kratkorocnI rasporedIvac kratkorocnI rasporedIvac III rasporedIvac na
nIzem nIvou (engI. Low-IeveI scheduIer). Zadatak ovog rasporedIvaca je da IzabIra
spremne procese za raspoIozIvI procesor.

NekI rasporedIvacI se ukIjucuju samo posIIje zavrsetka procesa III ako proces
dobrovoIjno preda procesor operatIvnom sIstemu. Ovaj tIp rasporedIvaca je poznat
pod nazIvom rasporedIvac bez praznjenja sa procesora (engI. non-preemptIve
scheduIer). AktIvIra se u sIIjedecIm sIucajevIma:

Kada se proces bIokIra cekajucI na trazenI resurs III dogadaj
Kada proces zavrsI Izvodenje

DrugI rasporedIvacI korIste hardverskI tImer da bI prekInuII proces kojI se Izvrsava.
Kada se hardverskI prekId desI. PrIIIkom Izvrsavanja servIsne rutIne prekIda (SR -
Interrupt servIce routIne) doIazI do aktIvIranja rasporedIvaca kojI tada moze nastavItI
prekInutI proces III IzabratI novI kojI ce se pocetI IzvrsavatI. PrIje pocetka Izvrsavanja
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

66
novog procesa, rasporedIvac postavIja hardverskI tImer da napravI novI prekId posIIje
jednog odredenog vremena. Ovo vrIjeme je poznato kao vremenskI odsjecak III
kvantum. To predstavIja Iznos vremena da se proces moze IzvrsavatI bez prekIda.

RasporedIvac sa praznjenjem (engI. preemptIve scheduIer) moze se aktIvIratI pod
sIIjedecIm okoInostIma:

1. proces se sam bIokIra cekajucI za odredenI resurs III dogadaj
2. Proces zavrsava svoje Izvodenje
3. PosIIje prekIda proces se premjesta Iz stanja "Izvrsava se" u stanje "spreman"
4. PosIIje premjestanja procesa Iz stanja "bIokIran" u stanje "spreman" nakon
sto se desIo prekId kojIm je razjesen usIov njegovog cekanja

Mjerenjem se pokazuje da se na procesoru najvIse Izvrsava kratkIh posIova kao je to
prIkazano na sIIcI I predstavIjeno je eksponencIjaInom krIvom. Ova krIvuIja za
odredene procese moze ImatI vaznu uIogu I Izboru odgovarajuceg aIgorItma
rasporedIvanja CPU-a.



Postoje veIIka skupIna dugorocnIh rasporedIvaca dugorocnIh rasporedIvaca dugorocnIh rasporedIvaca dugorocnIh rasporedIvaca III rasporedIvaca na vIsem nIvou
(engI. hIgh-IeveI scheduIers). KIasIcnI rasporedIvac na vIsem nIvou kod UNX-a se
nazIva swapper. To je prIvIIegovan process kojI pratI perIormance sIstema. Kada uocI
da postoje probIemI u perIormasama sIstema koje nastaju kada se vIse procesa natjece
za sIstemske resurse, on IzabIra procese I ukIanja Ih prIvremeno Iz sIstema (ovaj se
ponekad nazIva I srednjorocnI rasporedIvac srednjorocnI rasporedIvac srednjorocnI rasporedIvac srednjorocnI rasporedIvac).
KIasIcnI rasporedIvac na vIsokom nIvou na 8M enterprIse serveru radI sa redom
cekanja posIova. On IzabIra sIIjedecI posao kojI treba bItI ukIjucen u system Iz reda
spremnIh posIova kojI cekaju na Izvrsenje. Kada se posao Izvrsava on je pod kontroIom
kratkorocnog rasporedIvaca. DugorocnI rasporedIvacI korIste kompIeksne sIsteme
prIorIteta bazIrane na apsoIutnom prIorItetu, ocekujucI zahtjeve za resurse od posIova
I druga pItanja pomocu kojIh odreduje posao kojI ce aktIvIratI.

Na sIIcI je prIkazan jedan uobIcajenI zIvotnI cIkIus procesa. UocIte mjesto I uIogu
pojednIh rasporedIvaca u skIadu sa opIsom datIm u tekstu.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

67


DIspecer DIspecer DIspecer DIspecer

Kada rasporedIvac procesora Izabere proces kojI treba dovestI na procesor, tada se
posao predaje dIspeceru da bI pokrenuo IzabranI proces. Pokretanje Izabranog
procesa ukIjucuje sIIjedece korake:

1. zmjena konteksta
2. PreIazak u korIsnIckI nacIn rada
3. Skok na odgovarajucu IokacIju u programu da bI pokrenuo III nastavIo
Izvrsavanje procesa

Kasnjenje proIzvedeno prIIIkom Izvrsavanja ovIh koraka se nazIva kasnjenje nastaIo
usIjed dovodenja procesa na procesor (engI. dIspatch Iatency). ]asno je da ovo
kasnjenje bI trebaIo bItI sto je moguce manje a najkrItIcnIje je kod sIstema u reaInom
vremenu kojI moraju IzvrsItI zadatke u skIadu sa ogranIcenjIma koja se ne mogu
prekoracItI a nametnuta su od stvarnIh dogadaja kojI se desavaju. U stvarI, uIazak
procesa u ovakav sIstem je vaznIjI jer se uIazak u sIstem ne obavIja automatskI vec ce
proces ucI u sIstem samo ako sIstem Ima dovoIjno resursa na raspoIaganju da doIazecI
proces moze zadovoIjItI ogranIcenja reaInog vremena koja treba da Ima.

KrIterIj rasporedIvanja KrIterIj rasporedIvanja KrIterIj rasporedIvanja KrIterIj rasporedIvanja

RazIIcItI aIgorItmI rasporedIvanja proIzvodI sIsteme sa razIIcItIm karakterIstIkama. NekI
aIgorItmI IavorIzuju neke tIpove procesa nad drugIm, dok drugI aIgorItmI trose vrIjeme
u cIIju da obezbjede posten odnos medu procesIma. PostojI mnogo razIIcItIh nacIna
kojI karakterIsu perIormase rasporedIvaca. U nastavku su navedenI nekI od osnovnIh
krIterIja:

skorIscenje proces skorIscenje proces skorIscenje proces skorIscenje procesora: ora: ora: ora: CIIj rasporedIvaca procesora je da drzI procesor sto
je moguce zaposIenIjIm. skorIscenje procesora predstavIja procenat
vremena zauzetostI procesora.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

68

Propusnost (engI. throughput): Propusnost (engI. throughput): Propusnost (engI. throughput): Propusnost (engI. throughput): ]edan od nacIna da se procjene perIormanse
aIgorItama za rasporedIvanje je mjerenje broja procesa kojI se zavrse u nekoj
jedInIcI vremena. Ovaj parametar se zove propusnost. Propusnost je zavIsna
od opterecenja, odnosno, kracI procesI vode vecoj propusnostI dok duzI
procesI vode nIzoj propusnostI, To je cesto dobra mjera zato sto korIsnIk
kontroIIse samo da II mu je proces zavrsen prI cemu ne zna nIsta o njegovoj
veIIcInI III ne zeII da zna.

VrIjeme cekanja: VrIjeme cekanja: VrIjeme cekanja: VrIjeme cekanja: RazIIcItI procesI mogu se IzvrsavatI razIIcIte Iznose
vremena I ImatI razIIcIte karakterIstIke u pogIedu vezanostI za procesor I
uIaz]IzIaz. OvI IaktorI ne zavIse od aIgorItama rasporedIvanja. VrIjeme
cekanja se odnosI na vrIjeme provedeno u redu cekanja na procesor.

DeIInIrajmo I sIIjedece parametre:

VrIjeme Izvrsenja (Turnaround tIme) VrIjeme Izvrsenja (Turnaround tIme) VrIjeme Izvrsenja (Turnaround tIme) VrIjeme Izvrsenja (Turnaround tIme) - ukupno vrIjeme da se IzvrsI jedan
proces
VrIjeme odgovora (Responce tIme) VrIjeme odgovora (Responce tIme) VrIjeme odgovora (Responce tIme) VrIjeme odgovora (Responce tIme) - ukupno vrIjeme od pocetka Izvrsavanja
procesa do Izdavanja prvog odgovora (ne mIsII se na IzIaz kojI daje proces I
odnosI se na sIsteme sa djeIjenjem vremena)

OptImIzacIonI krIterIj OptImIzacIonI krIterIj OptImIzacIonI krIterIj OptImIzacIonI krIterIj

MaksImaIno IskorIscenje procesora MaksImaIna propusnost
MInImaIno vrIjeme Izvrsenja MImaIno vrIjeme cekanja
MInImaIno vrIjeme odgovora

AIgorItmI rasporedIvanja AIgorItmI rasporedIvanja AIgorItmI rasporedIvanja AIgorItmI rasporedIvanja

Za datI skup procesa kako rasporedIvac procesora III rasporedIvac thread-ova na
korIsnIckom nIvou odIucuju kojI od procesa III threadova da smjeste na raspoIozIvI
procesor.

FFO (FIrst n, FIsrt Out) III FCFS (FIsrt Come, FIrst Serve) FFO (FIrst n, FIsrt Out) III FCFS (FIsrt Come, FIrst Serve) FFO (FIrst n, FIsrt Out) III FCFS (FIsrt Come, FIrst Serve) FFO (FIrst n, FIsrt Out) III FCFS (FIsrt Come, FIrst Serve)

FCFS je najednostavnIjI aIgorItam. ma ga smIsIa korIstItI za nekog ko ceka u redu u
bancI, na kontroInom preIazu I sI. TehnIka je veoma jednostavna. Proces kada se
prIhvatI u sIstem, onda uIazI u red spremnIh procesa. StarIjI procesI kojI su vec bIII
rasporedenI su spremnI da se predaju na procesor. AIgorItam je non-premptIve (bez
praznjenja sa procesora) tako da ce se proces odvIjatI toIIko dugo dok sam,
dobrovoIjno, ne preda procesor svojIm bIokIranjem III svojIm zavrsetkom. PosIIje
dobIjanja usIova za IzIazak Iz stanja bIokIranja proces se smjesta u red cekanja
spremnIh procesa za Izvodenje I to na kraj reda cekanja.

Ovaj aIgorItam je jednostavan za ImpIementacIju I spada u Ier aIgorItme I kao takav
osIoboden je "umIranja" procesa. MedutIm, postojI nekoIIko nedostataka:

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

69
Posto se kratkI posIovI mogu rasporedIvatI posIIje posIova kojI su dugI u
Izvodenju, srednje vrIjeme cekanja se moze povecatI. Nasuprot
samoposIugama, ovaj aIgorItam nema "ekspres IInIju".
Posto je aIgorItam non-preemptIve moze postojatI probIem kod InteraktIvnIh
sIstema. DugI posIovI mogu usporItI vrIjeme odgovora ka korIsnIku.
Mada IzgIeda posteno, moguce je da jedan proces "zasjedne" na procesor I
korIstI ga duzI vremenskI perIod. U meduvremenu nekoIIko drugIh procesa
vezanIh za uIaz]IzIaz bI se mogII IzvrsavatI konkurentno sa procesom kojI je
na procesoru aII se ne mogu pokrenutI. Ovaj Ienomen se zove "koIonskI
eIekat" (engI. convoy eIIect), jer Iz cIkIusa u cIkIus procesI vezanI na
uIaz]IzIaz ce pratItI proces kojI drzI procesor bez prekIapanja.

PrImjer:
Proces VrIjeme Izvrsavanja u ms
------------ --------------------------
P1 24
P2 3
P3 3

PretpostavImo da procesI stIzu u redu P1,P2,P3. Cantt-ov dIjagram za ovaj
tIp rasporedIvanja je:

VrIjeme cekanja za proces P1=0; P2=24; P3=27
Srednje vrIjeme cekanja: (0+24+27)]3 = 51]3=17
PretpostavImo da procesI stIzu u redu P2,P3,P1
Cantt-ov dIjagram za ovaj tIp rasporedIvanja IzgIeda ovako:

VrIjeme cekanja za proces P1=6; P2=0; P3=3
Srednje vrIjeme cekanja: (6+0+3)]3=3
Mnogo boIje nego u predhodnom sIucaju
Convoy eIekat - kratkI procesI Iza dugIh procesa
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

70
S]F (engI shortest S]F (engI shortest S]F (engI shortest S]F (engI shortest- -- -job job job job- -- -IIrst) IIrst) IIrst) IIrst)

DrugI prIstup je da se posmatra ocekIvana duzIna svakog sIIjedeceg procesa kojI treba
da se prIdruzI procesoru I da se aktIvIra proces sa najkracIm trajanjem. Ovaj aIgorItam
optImIzIra srednje vrIjeme cekanja procesa. Zato sto smIjesta krace procese prIje duzIh
procesa pomaze Im da prIje zavrse dok duzI procesI manje "pate" zbog takve Izmjene.

NazaIost, ne postojI nacIn da se zna sIgurno duzIna preostaIog procesa kojI trazI
procesor. U praksI se vrse procjene korIstecI eksponencIjaIno usrednjavanje od procesa
kojI su do tada korIstIII procesor.

Ponekad je ovaj aIgorItam sa praznjenjem sa procesora. Proces se moze ukIonItI sa
procesora ako stIze drugI proces kojI Ima krace vrIjeme Izvrsenja. Cesto se ovaj
aIgorItam zove I "prvI sa najkracIm preostaIIm vremenom" (engI. shortest remaInIng
tIme IIrst - SRTF).

Postoje dvIje seme:
nonpreemptIve - jedanput kad proces dobIje procesor ne moze bItI prekInut
dok ne zavrsI svoje Izvodenje
preemptIve - ako stIze proces sa manjIm vremenom Izvrsenja na procesoru
od tekuceg procesa kojI se Izvrsava onda se vrsI Izmjena procesa na
procesoru. Ova sema poznata je kao Shortest RemaInIng TIme FIrst (SRTF).

S]F je optImaIan - daje mInImaIno vrIjeme cekanja za datI skup procesa


PrImjer za S]F PrImjer za S]F PrImjer za S]F PrImjer za S]F : :: :

Proces VrIjeme stIzanja VrIjeme Izvrsenja
------------ --------------------- ----------------------
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4

S]F bez praznjenja sa procesora S]F bez praznjenja sa procesora S]F bez praznjenja sa procesora S]F bez praznjenja sa procesora


Srednje vrIjeme cekanja = (0+6+3+7)]4 = 4






Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

71
S]F S]F S]F S]F - -- - sa praznjenjm sa procesora sa praznjenjm sa procesora sa praznjenjm sa procesora sa praznjenjm sa procesora

Proces VrIjeme stIzanja VrIjeme Izvrsenja
------------ --------------------- ----------------------
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4


Srednje vrIjeme cekanja = (9+1+0+2)]4=3

OdredIvanje duzIne sIIjedeceg Izvrsavanja na procesoru OdredIvanje duzIne sIIjedeceg Izvrsavanja na procesoru OdredIvanje duzIne sIIjedeceg Izvrsavanja na procesoru OdredIvanje duzIne sIIjedeceg Izvrsavanja na procesoru

Mogu se samo procIjenItI duzIne
Moze bItI Izrazeno preko duzIne predhodnog punjenja procesora
korIscenjem eksponencIjaInog usrednjavanja
1. tn = stvarna duzIna od n-og punjenja procesora
2. pn+1 = predvIdIva vrIjednost za sIIjedece punjenje procesora
3. a, 0<=a<=1
4. DeIInIsImo

p p p p n+1 n+1 n+1 n+1 = a t = a t = a t = a t n + n + n + n + (1 (1 (1 (1- -- -a) p a) p a) p a) p n nn n ; IormuIa deIInIse eksp. usrednjavanje

PrImjer eksponencIjaInog usrednjavanja: PrImjer eksponencIjaInog usrednjavanja: PrImjer eksponencIjaInog usrednjavanja: PrImjer eksponencIjaInog usrednjavanja:

a=0
p n+1 = p n
Predhodna IstorIja se ne uzIma u obzIr

a=1
p n+1 = t n
Uracunava se samo posIednje punjenje procesora

Ako prosIrImo IormuIu, dobIjamo

p n+1 = atn +(1-a)atn-1 +.+(1-a)
j
atn-j +.+ (1-a)
n+1
p0

Posto oba a I (1-a) manjI III jednakI 1 svakI sukcesIvnI cIan Ima manju tezInu
od njegovog predhodnIka.




Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

72
Shortest Shortest Shortest Shortest- -- -TIme TIme TIme TIme- -- -To To To To- -- -CompIetIon CompIetIon CompIetIon CompIetIon- -- -FIrst (STCF) FIrst (STCF) FIrst (STCF) FIrst (STCF)

Ovaj proces kojI ce zavrsItI Izvodenje prvI Izvrsava se kad god je to moguce. DrugI
procesI se Izvrsavaju samo kad prvI proces je zaposIen nekIm dogadajem vezanIm za
uIaz]IzIaz. AII kao II kod S]F, vrIjeme procesora koje ce trazItI proces nIje poznat
unaprIjed.

PrIorItetno rasporedIvanje (engI. PrIorIty ScheduIIng PrIorItetno rasporedIvanje (engI. PrIorIty ScheduIIng PrIorItetno rasporedIvanje (engI. PrIorIty ScheduIIng PrIorItetno rasporedIvanje (engI. PrIorIty ScheduIIng - -- - PR) PR) PR) PR)

PrIorItetno rasporedIvanje sIuzI da IorsIra odredene procese. VaznIjI procesI treba da
se Izvrsavaju prIje manje vaznIh procesa. Ako je ova dIscIpIIna rasporedIvanja
ImpIementIrana da bude sa praznjenjem procesa sa procesora, vaznIjI posIovI ce
ukIonItI manje vazne procese sa procesora cak Iako se onI Izvrsavaju.

NajvecI probIem kod ove dIscIpIIne usIuzIvanje je "umIranje" procesa. Moze se desItI da
procesI sa nIzIm prIorItetom se nIkada ne Izvrse ako vaznIjI procesI staIno doIaze.
Rjesenje je da procesI kojI se Izvode dobIjaju na prIorItetu tako da dodu u prIIIku sa se
prIje Izvrse (engI. AgIng - starenje procesa).

Round robIn rasporedIvanje Round robIn rasporedIvanje Round robIn rasporedIvanje Round robIn rasporedIvanje

Round robIn rasporedIvanje moze se posmatratI kao FCFS sa mogucnoscu praznjenja
procesa sa procesora. ProcesI se obraduju u redosIjedu njIhovIh doIazaka (FCFS). Kao I
kod FCFS dIscIpIIne ako se procesI bIokIraju sIIjedecI proces moze bItI rasporeden.
Kada se bIokIranI proces vraca u red spremnIh procesa onda se on smjesta na kraj.

RazIIka je sto u ovoj dIscIpIInI svakI proces Ima vremenskI odsjecak nazvan kvantum
(od 10 do 100 ms). Ako proces nastavI da se Izvrsava nakon sto je Istekao kvantum
prekId od tImer-a se desava I doIazI do praznjenja procesa sa procesora. Nakon toga
rasporedIvac moze prosIIjedItI sIIjedecI proces kojI ceka u redu cekanja na procesor.
OdgovarajucI kvantum vremena nudI boIje perIormase od FCFS III S]R kod koga je
potrebno vrsItI procjene.

Ako je kvantum veoma maII onda doIazI do Interesantnog eIekta. Ako postojI N
procesa u redu cekanja onda se svakI proces Izvrsava kao na svom vIastItIm procesoru
brzInom 1]N. Ovaj eIekat se nazIva djeIjenje procesora. djeIjenje procesora. djeIjenje procesora. djeIjenje procesora. NIjedan proces ne ceka vIse
nego (N-1)*q vremenskIh jednInIca. Ako je q maIo, onda q mora bItI dovoIjno veIIko s
obzIrom na Izmjenu konteksta, Inace nekorIstan rad (overhead) postaje veIIkI.

Ako je kvantum veoma dug, odnosno dovoIjno dug da procesI mogu zavrsI posao prIje
Isteka kvantuma, ovaj prIstup se moze aproksImIratI sa FCFS dIscIpIInom usIuzIvanja.
VremenskI kvantum moze bItI Izabran da baIansIra ova dva eIekta.

PrImjer: RR sa vremenskIm kvantumom = 20 ms PrImjer: RR sa vremenskIm kvantumom = 20 ms PrImjer: RR sa vremenskIm kvantumom = 20 ms PrImjer: RR sa vremenskIm kvantumom = 20 ms
Proces VrIjeme Izvrsenja u ms
------------ ----------------------
P1 53
P2 17
P3 68
P4 24
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

73

Cantov dIajgram IzgIeda ovako



TIpIcno, vece srednje vrIjeme Izvrsavanja od SRTF aII boIje vrIjeme odgovora

RasporedIvanje sa vIse nIvoa (engI. Mu RasporedIvanje sa vIse nIvoa (engI. Mu RasporedIvanje sa vIse nIvoa (engI. Mu RasporedIvanje sa vIse nIvoa (engI. MuItIIeveI Queue ScheduIIng ItIIeveI Queue ScheduIIng ItIIeveI Queue ScheduIIng ItIIeveI Queue ScheduIIng- -- -MQS) MQS) MQS) MQS)

MQS je sIIcna tehnIcI rasporedIvanja PR Izuzev sto se procesI kojI stIzu sortIraju sa
njIhovIm prIorItetom. Na prImjer, svI sIstemskI procesI mogu ImatI vIsI prIorItet od
InteraktIvnIh procesa, kojI opet Imaju vecI prIorItet od grupnIh (engI. batch) procesa.
ProcesI razIIcItog prIorIteta se smjestaju u razIIcIte redove cekanja.

U nekIm ImpIemetacIjama, svI procesI u redu cekanja vIseg prIorIteta moraju se IzvrsItI
prIje procesa kojI se naIaze u bIIo kojem redu cekanja nIzeg prIorIteta. Ovak prIstup
moze vodItI do "umIranja" procesa sIIcno kao kod tehnIke rasporedIvanja PR. U nekIm
ImpIementacIjama kod kojIh doIazI do praznjenja procesa sa procesora, procesI sa
nIzIm prIorItetom se vracaju u njegov red cekanja ako ga prekIne novI proces veceg
prIorIteta.


DrugI prIstup je da se dIjeIe vremenskI odsjeccI medu redovIma cekanja. RedovI
cekanja sa vIsIm prIorItetom mogu dobIjatI cesce vremenske odsjecke od redova
cekanja na nIzem prIorItetu. Ovaj prIstup, na nekkI nacIn, sprecava "umIranje" procesa.

RasporedIvanje sa vIse nIvoa sa povratnom spregom RasporedIvanje sa vIse nIvoa sa povratnom spregom RasporedIvanje sa vIse nIvoa sa povratnom spregom RasporedIvanje sa vIse nIvoa sa povratnom spregom
(engI. MuItIIeveI Feedback Queue(MFQ) (engI. MuItIIeveI Feedback Queue(MFQ) (engI. MuItIIeveI Feedback Queue(MFQ) (engI. MuItIIeveI Feedback Queue(MFQ)

U tehnIcI usIuzIvanja MQS ne postojI mobIInost procesa Izmedu nIvoa. To znacI da se
doIIazecI procesI smjestaju u redove cekanja na osnovu unaprIjed date kIasIIIkacIje I
ostaje u ovom redu cekanja dok god postojI.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

74
Kod tehnIke rasporedIvanja MFQ, prIorItetI procesa se moze mjenjatI na osnovu
rezuItata korIscenja procesora. ProcesI kojI zahtjevaju vIse procesor su nIzI po vaznostI
dok procesI kojI su vezanI za uIaz]IzIaz I cesce osIobadaju prerano procesor
bIokIranjem, vaznost Im se povecava.

Ova tehnIka sprecava umIranje procesa I daje procesIma kojI su vezanI za uIaz]IzIaz
promjene na osnovu kojIh se prosIIjedIju procesu prekIapajucI se sa procesIma
vezanIm za procesor. Pokazuje dobre osobIne u borbI sa "koIonskIm" eIektom.

RasporedIvanje medu razIIcItIm redovIma cekanja moze se IzvestI promjenom duzIne
III IrekvencIje vremenskog odsjecka. RasporedIvanje unutar svakog reda cekanja se,
takode, moze mjenjatI.

Mada ova tehnIka rasporedIvanje zvucI vrIo zgodno, ona je u sustI vrIo kompIeksna.
Ovaj tIp tehnIke rasporedIvanje je deIInIsan sa sIIjedecIm parametrIma:

8rojem redova cekanja
metodama za rasporedIvanje u svakom redu cekanja
metodom za rasporedIvanje Izmedu redova cekanja
metodom sa podIzanje prIorIteta procesu
metodom za smanjenja prIorIteta procesu


PrIorItetna InverzIja PrIorItetna InverzIja PrIorItetna InverzIja PrIorItetna InverzIja
MnogI komercIjaInI operatIvnI sIstemI u reaInom vremenu (RTOS - reaI tIme operatIng
system) korIste rasporedIvac sa praznjenjm sa procesora (engI. preemptIve). OvI
sIstemI prIdruzuju svakom procesu jednIstven nIvo prIorIteta. RasporedIvac
obezbjeduje da od spremnIh procesa kojI se naIaze u redu cekanja na processor,
process sa najvecIm prIorItetom se IzabIra I dovodI na procesor. Da bI mogao IspunItI
ovu IunkcIju, rasporedvac mora bItI u stanju da skIne sa procesora, u proces kojI Ima
nIzI prIorItet u toku njegovog Izvrsavanja.
Zbog toga sto procesI djeIe resurse, dogadajI kojI se desavaju Izvan kontroIe
rasporedIvaca mogu sprIjecItI Izvrsavanje spremnIh procesa vIsokog prIorIteta kad bI
trebaIo. Ako se ovo desI, process nece odgovorItI u predeIInIsanom perIodu I docI ce
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

75
do greske. PrIorItetna InverzIja je termIn za scenarIo u kojem spremnI procesI vIsokog
prIorIteta ne uspIjevaju da se Izvrse a trebaII bI.
DjeIjenje resursa DjeIjenje resursa DjeIjenje resursa DjeIjenje resursa
ProcesI treba da djeIe resurse da bI komunIcIraII I obradIvaII podatke. Aspekt
muItIthreadIng programIranja nIje posebno specIIIcan u sIstemIma reaInog vremena III
embedded sIstemIma.
U bIIo koje vrIjeme, kad dva procesa dIjeIe resurs, takav kao memorIjskI baIer, u
sIstemu kojI korIstI raspordIvac bazIran na prIorItetIma, jedan od njIh ce obIcno ImatI
vecI prIorItet. VIsoko prIorItetnI procesI ocekuju da budu usIuzenI sto je moguce prIje,
odnosno cIm postanu spremnI. MedutIm, ako process sa nIzIm prIorItetom korIstI
njIhov djeIjenI resurs kada prorItetnIjI process postane spreman za Izvrsenje onda vIse
prIorItetnI process mora cekatI na process kojI Ima nIzI prIorItet da zavrsI sa
korIscenjem resursa. Kazemo da prIorItetnIjI process ceka na resurs. Ako ovaj process
se mora IzvrsItI za neko odredeno vrIjeme onda se mora IznacI najgorI scenarIo
"otkIjucavanja" za sve djeIjene resurse I uzetI u obzIr prIIIkom projektovanja. Ako su
kumuIatIvno vremena otkIjucavanja veIIka, shema djeIjenja resursa mora se ponovno
projektovatI.
PrIorItetna InverzIja PrIorItetna InverzIja PrIorItetna InverzIja PrIorItetna InverzIja
PravI probIem nastaje kada process srednjeg nIvoa prIorIteta IzbacI sa procesora
process kojI je nIzeg nIvoa prIorIteta kojI korIstI, kazemo drzI, djeIjenI resurs na kojI
process vIseg prIorIteta ceka. S obzIrom da je proces veceg prIorIteta spreman da se
IzvrsI a Izvrsava se proces srednjeg nIvoa prIorIteta doIazImo do sItuacIje koja se zove
prIorItetna InverzIja.
OpIsana sekvenca dogadaja je
IIustrIrana na sIIcI. Proces
nIskog prIorIteta L I vIsokog
prIorIteta H djeIe IstI resurs.
Posto L dode do resursa,
process H postaje spreman da
se IzvrsI. MedutIm, process H
mora cekatI na process L da
se zavrsI I osIobodI resurs,
dakIe on ceka na resurs. PrIje
nego process L zavrsI sa
resursom, process M postaje
spreman da se IzvrsI I
Izbacuje sa procesora process
L. Dok se M Izvrsava, a mozda jos procesa tIpa M, process H sa najvecIm prIorItetom I
daIje ceka.
Mnoge prIorItetne InverzIje su bezopasne III ugIavnom uzrokuju kasnjenja procesa kojI
bI trebaII da se Izvrse na vrIjeme. AII ponekad se prIorItetna InverzIja desava I uzrokuje
krItIcan rad sIstema. Takav dogadaj se desIo na masIjI MARS PathIInder 1997. Ova
mIsIja je poznata po koIor sIIkama vIsoke rezoIucIIje koje su sIate na zemIju.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

76
Rjesenja prIorItetne InverzIje Rjesenja prIorItetne InverzIje Rjesenja prIorItetne InverzIje Rjesenja prIorItetne InverzIje
strazIvacI na ovom probIemu okrenuII su se ka dva rjesenja: Prvo se nazIva nasIjede nasIjede nasIjede nasIjede
prIrIteta prIrIteta prIrIteta prIrIteta kod koje process sa nIzIm prIorItetom nasIjeduje prIorItet procesa vIsokog
prIorIteta kojI ceka na djeIjenI resurs. Ovo ce se desItI cIm process H pocne cekatI. Ovaj
prIstup zahjeva podrsku operatIvnog sIstema.
Drugo rjesenje, tkz. prIorItetnI vrh prIorItetnI vrh prIorItetnI vrh prIorItetnI vrh, gdje se prIdruzuje prIorItet svakom resursu.
RasporedIvac onda prenosI prIorItet resursa na process kojI prIstupa resursu.PrIdruzenI
prIorItet resursu je prIorIte korIsnIka sa najvecIm prIorItetom puIs jedan. Kada takav
process zavrsI posao njegov prIorItet ostaje onakav kakav je bIo.
ReIerence ReIerence ReIerence ReIerence
Reeves, CIenn. "Re: What ReaIIy Happened on MarsZ," RIsks-Forum DIgest, VoIume 19:
ssue 58, ]anuary 1998.
Sha L., R. Rajkumar, and ].P. Lehoczky. "PrIorIty nherItance ProtocoIs: An Approach to
ReaI-TIme SynchronIzatIon,," EEE TransactIons on Computers, September 1990, p.
1175.

Uvod u rasporedIvanje procesa kod UNX Uvod u rasporedIvanje procesa kod UNX Uvod u rasporedIvanje procesa kod UNX Uvod u rasporedIvanje procesa kod UNX- -- -a aa a

neresantno je vIdjetI kako IzgIedaju ove tehnIke u jedno stvarnom operatIvnom
sIstemu, takvom kao sto je UNX. Ovakva tehnIka rasporedIvanja se korIstI, sa maIIm
varIjacIjama, kod AT&T SVR3 I 4.38SD. NovIjI UNX sIstemI korIste nesto sIozenIje
prIstupe.

PrIorItetI PrIorItetI PrIorItetI PrIorItetI

RasporedIvanje u UNX sIstemIma je bazIrano na prIorItetIma. PrIorIte procesa moze
bItI od 0 do 127 prI cemu nIzI broj oznacava vIsI prIorItet. Postoje opsezI prIorIteta
tako da prIorItetI od 0-49 predstavIjaju prIorItete sIstemskIh procesa. korIsnIckI I
sIstemskI procesI mogu ImatI prIorItet unutar punog opsega prIorIteta. Ovo sprecava
da korIsnIckI procesI mogu bItI ugrozenI sIstemskIm procesIma.

ParametrI ParametrI ParametrI ParametrI

ProcesI varIraju prIorIte rasporedIvanja korIstecI nekoIIko Iaktora. OvI IaktorI su
smjestenI u strukturI proc koja sadrzI sIIjedeca poIja:

pprI - tekucI prIorItet rasporedIvanja
pusprI - prIorItet procesa u korIsnIckom nacInu rada
pcpu - mjera korIscenja procesora
pnIce - korIsnIckI podatak kojI govorI o vaznostI procesa

PodIzanje prIorIteta u sIstemskom nacInu rada PodIzanje prIorIteta u sIstemskom nacInu rada PodIzanje prIorIteta u sIstemskom nacInu rada PodIzanje prIorIteta u sIstemskom nacInu rada

Podatak pprI predstavIja broj u opsegu od 0-127 kojI predstavIja prIorItet procesa.
Ovo je vrIjednost koju rasporedIvac korIstI da bI Izabrao proces kojI ce prosIIjedItI na
procesor. Ova vrIjednost je Ista kao pusrprI. MedutIm, ova vrIjednost moze bItI manja
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

77
cInecI na taj nacIn proces vaznIjIm, tacnIje prIorItetnIjIm u trenutku kada proces IzvodI
sIstemskI pozIv.

TradIcIonaInI UNX sIstem nema kerneI sa mogucnoscu praznjenja procesa sa
procesora. Ovo bI mogIo da znacI da samo jedan proces bI mogao bItI u sIstemskom
stanju. Ako je proces bIokIran, dok IzvodI sIstemskI pozIv, drugI korIsnIckI procesI bI
se mogII IzvrsavatI aII ne I drugI sIstemskI pozIvI I IunkcIje. z ovIh razIoga, proces
kojI je bIokIran dok IzvodI sIstemskI pozIv cesto bI mogao ImatI vrIjednost pprI nIsku
kako bI sto prIje zavrsIo svoj posao u kerneIu I vratIo se u korIsnIckI nacIn rada. Ovo
dozvoIjava drugIm procesIma kojI su bIokIranI po uIasku u kerneI da pocnu
napredovatI u Izvrsenju. Kada se zavrsI Izvodenje sIstemskog pozIva onda se
vrIjednost pprI procesa ponovno postavI na vrIjednost pusrprI.

PrIorItet korIsnIckIh procesa PrIorItet korIsnIckIh procesa PrIorItet korIsnIckIh procesa PrIorItet korIsnIckIh procesa

PrIorItet kojI proces dobIja unutar kerneIa posIIje povratka Iz reda cekanja bIokIranIh
procesa se nazIva prIorItet spavanja (engI. sIeep prIorIty). Postoje razIIcIte veIIcIne ovog
prIorIteta koje se mjenjaju u zavIsnostI od usIova bIokIranja. Na prImjer, kod
termInaIskog uIaza]IzIaza je 28 a za uIaz]IzIaz sa dIska je 20.
PrIorItet rasporedIvanja procesa u korIsnIckom nacInu rada zavIsI od trI Iaktora:

standarnI, unaprIjed deIInIsanI, prIorIte za korIsnIckI nacIn rada, PUSER je tIpIcno
jednak 50.
Dosadsnje korIscenje procesora, pcpu
VrIjednost prIdruzena procesu, pnIce

VrIjednost pusr je poznata sIstemu I u najvIse ImpIementacIja je jednaka 50 I ukazuje
na najvecI nIvo rasporedIvanja za korIsnIcke procese.

VrIjednost pnIce je predeIInIsana sa 0, aII je korIsnIk moze povecatI. PrIsjetImo se da
procesI koje treba rasporedItI na procesor su Inverzno proporcIonaInI prIorItetu.
Povecavanjem vrIjednostI pnIce proces smanjuje svoju vjerovatnocu da bude Izabran.
ProcesI to rade ako se dugo Izvrsavaju III su neInteraktIvnI pozadInskI procesI.

Vodenje evIdencIje Vodenje evIdencIje Vodenje evIdencIje Vodenje evIdencIje o korIscenju procesora o korIscenju procesora o korIscenju procesora o korIscenju procesora

VrIjednost koja se naIazI u pcpu je mjera korIscenja procesora do trenutka
posmatranja. VrIjednost joj moze bItI u opsegu od 0 do 127 I InIcIjaIno je postavIjena
na 0. Svake desetIne sekunde, servIsna rutIna prekIda koja radI sa prekIdIma sata
reaInog vremena InkrementIra vrIjednost pcpu za tekucI proces.

Svake 1 sekunde druga servIsna rutIna smanjuje vrIjednost pcpu svIh procesa kojI se
Izvrsavaju III ne. Kod SVR3 sIstema ovde se korIstI IIksno smanjenje vrIjednostI za 0.5.
ProbIem sa IIksnIm smanjenjem je da to podIze prIorItet gotovo svIm procesIma ako je
opterecenje sIstema veIIko, posto samo nekoIIko procesa dobIja procesor. Ovo dovodI
do sItuacIje da je poIje pcpu neznacajno. PrIjektantI 4.38SD razrIjesIII su ovaj
probIem uvodenjem varIjabIInog smanjenja (engI. decay) kojI je u IunkcIjI srednjeg
sIstemskog opterecenja, srednjeg broja procesa u redu spremnIh procesa u toku
posIednje sekunde. FormuIa IzgIeda ovako:

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

78
DecayIactor = (2 * Ioadaverage)]( 2 * Ioadaverage + 1)


FormuIa za prIorItet procesa u korIsnIckom nacInu rada FormuIa za prIorItet procesa u korIsnIckom nacInu rada FormuIa za prIorItet procesa u korIsnIckom nacInu rada FormuIa za prIorItet procesa u korIsnIckom nacInu rada

RasporedIvac Izracunava prIorItet korIsnIckIh procesa na osnovu sIIjedecIh Iaktora:

PusrprI = PUSER + (pcpu]4) + (2 * pnIce)

mpIementacIja mpIementacIja mpIementacIja mpIementacIja

Na starIm DEC VAX sIstemIma ovo je napravIjeno eIIkasnIje I 127 prIorIteta svrstanI su
u 32 reda cekanja od kojIh svakI drzI procese cIjI su prIorItetI u opsegu od 4 prIorItetna
nIvoa (0-3, 4-7, 8-11, 12-15, 16-19, Itd.)

SIstem odrzava 32bItnu masku. SvakI bIt predstavIja jedan red cekanja. Ako je bIt
postavIjen, tada Ima procesa u redu cekanja a ako je bIt jednak 0 tada je red cekanja
prazan. SIstem postavIja ovaj bIt na jednIcu cIm vIdI da red nIje prazan. Ra
rasporedIvanje proces Iz reda cekanja korIstI se round-robIn dIscIpIIna usIuzIvanja.
Round robIn sa kvantumom od 100 ms se prImjenjuje na sve procese u okvIru Istog
reda cekanja. Ako stIze proces sa nIzIm prIorItetom, odnosno vaznIjI proces, proces ce
bItI rasporeden na kraju tekuceg Izabranog kvantuma procesa.

ProcesI sa vecIm brojem prIorIteta, odnosno manje vaznIjI procesI, se nece IzvrsItI dok
se redovI cekanja sa nIzIm prIorItetnIm brojem ne Isprazne.

RedovI cekanja se provjeravaju pomocu maske bIta svakI put kada se proces III bIokIra
III vremenskI perIod prIdruzen nekom procesu Istekne.






Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

79
AnaIIza AnaIIza AnaIIza AnaIIza

Ova metoda rasporedIvanja predstavIja odrzIvu tehnIku koja se sIroko korIstI aII treba
ukazatI I na njene nedostatke:

Ako u sIstemu Ima preveIIkI broj procesa onda InternI rad kojI se tIce
preracunavanje prIorIteta za svakI proces svake sekunde je IsuvIse vIsok
VrIjednost P-nIce je vrIo sIaba I ne korIstI se dovoIjno
Kod kerneIa bez praznjenja procesa sa procesora postojI sItuacIja da vaznIjI
procesI moraju cekatI na procese nIzeg prIorIteta u kerneIu. PrIvremeno
rIjesenje sa sIeep prIorItetom je sIabo rIjesenje.

RasporedIvanje kod muItIprocesorskIh sIstema RasporedIvanje kod muItIprocesorskIh sIstema RasporedIvanje kod muItIprocesorskIh sIstema RasporedIvanje kod muItIprocesorskIh sIstema

RasporedIvanje procesor kod muItIprocesorskIh sIstema je znatno
kompIeksnIje
HomogenI procesorI unutar muItIprocesorskog sIstema
DjeIjenje punjenja; korIstIcemo zajednIckI red cekanja spremnIh procesa. SvI
procesI ce IcI u jedan red cekanja a bItI rasporedIvanI na pojedInacne
procesore
AsImetrIcno muItIprocesIranje - samo jedan procesor prIstupa sIstemskIm
strukturama podataka, oIaksavajucI zahtjeve za djeIjenje podataka. Ovo je
jednostavnIja varIjanta od sImetrIcnog muItIprocesIranja.

RasporedIvanje reaI tIme sIstema RasporedIvanje reaI tIme sIstema RasporedIvanje reaI tIme sIstema RasporedIvanje reaI tIme sIstema

zracunavanja u reaI-tIme sIstemIma je podjeIjeno u dva tIpa:
Hard reaI-tIme sIstemI zahtjevaju zavrsetak krItIcnog posIa unutar
garantIranog vremena
SoIt reaI-tIme sIstemI - zahtjeva da krItIcnI procesI dobIju prIorItet
vecI od ostaIIh

AIgorItam evaIuacIje AIgorItam evaIuacIje AIgorItam evaIuacIje AIgorItam evaIuacIje

DetermInIstIcko modeIIranje - uzIma u obzIr predeIInIsano punjenje I
deIInIse perIormanse za svakI aIgorItam za dato punjenje
ModeII cekanja
SImuIacIja
mpIementacIja

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

80
ZadacI: RasporedIvanje procesora ZadacI: RasporedIvanje procesora ZadacI: RasporedIvanje procesora ZadacI: RasporedIvanje procesora

5.1 AIgorItam rasporedIvanja procesora odreduje redosIIjed Izvrsenja procesa. Ako Ima
n procesa kojI treba da budu raspodjeIjenI na procesor koIIko postojI razIIcItIh
rasporedaZ DatI IormuIu u IunkcIjI od n.

Odgovor: n!. n IaktorIaI = n x n-1 x.x 2 x 1

5.2 ObjasnIte razIIku Izmedu rasporedIvanja sa praznjenjem (preemptIve) I bez
praznjenja (nonpreemptIve)Z FormuIIsIte zasto rasporedIvanje bez praznjenja je sIab
kandIdat za korIscenje u racunarskIm centrImaZ

Odgovor: RasporedIvanje sa praznjenjem dozvoIjava procesu da bude prekInut usred
njegova Izvrsenja, uzImajucI procesor od njega I dajucI ga drugom procesu.
RasporedIvanje bez praznjenja obezbjeduje da proces ostavI kontroIu procesora samo
kad zavrsI sa njegovIm tekucIm korIscenjem procesora.

5.3 Dat je skup procesa cIje su duzIne Izvrsavanja na procesoru date u msec.

Proces VrIje
Izvrsavanja
PrIorItet
P1 10 3
P2 1 1
P3 2 3
P4 1 4
P5 5 2

PretpostavImo da procesI stIzu u redosIIjedu P1, P2, P3, P4 I P5 I svI u vremenu t=0.

a) NacrtatI Cuntt-ove dIjagrame IIustrIrajucI Izvrsenje ovIh procesa korIstecI
FCFS, S]F, sa prIorItetom bez praznjenja procesora, RR raspodjeIu sa
kvantumom q=1.
b) KoIIko je ukupno vrIjeme zadrzavanja procesa u sIstemu za svakI proces I za
svakI aIogorItam rasporedIvanja dat u a)Z
c) KoIIko je vrIjeme cekanja za svakI proces I za svakI aIgorItam rasporedIvanja
dat u a)Z
d) KojI od aIgorItama rasporedIvanja daje mInImaIno srednje vrIjeme cekanja za
sve proceseZ

5.4 PretpostavImo da sIIjedecI procesI stIzu na Izvrsenje u vremenIma datIm u tabeII u
kojoj se naIazI I vrIjeme Izvrsavanja procesa. KorIstecI dIscIpIInu usIuzIvanja bez
praznjenja procesora odgovorIte na sIIjedeca pItanja:

Proces VrIjeme stIzanja VrIjeme Izvrsavanja
P1 0.0 8
P2 0.4 4
P3 1.0 1

a) Koje je srednje vrIjeme ukupnog boravka ovIh procesa u sIstemu ako se
korIstI FCFS aIgorItam rasporedIvanjaZ
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

81
b) Koje je srednje vrIjeme ukupnog boravka ovIh procesa u sIstemu ako se
korIstI S]F aIgorItam rasporedIvanjaZ
c) Za aIgorItam S]F se predpostavIja da ce poboIjsatI perIormase. PrImjetImo da
ako pocnemo IzvrsavatI proces P1 u trenutku 0, ne znamo da ce dva kraca
procesa brzo docI na sIstem. zracunajmo koIIko ce srednje vrIjeme boravka
procesa u sIstemu bItI ako procesor ostane prazan 1 jedInIcu vremena a
onda se korIstI S]F aIgorItam rasporedIvanja. PrImjetImo da procesI P1 I P2
cekaju u toku ovog praznog vremena tako da se njIhovo vrIjeme cekanja
moze povecatI. Ovaj aIgorItam mogao bI se zvatI rasporedIvanje sa znanjem
o buducem ponasanju.

5.5 RazmotrImo varIjantu aIgorItma rasporedIvanja RR gdje su uIazI u red spremnIh
procesa pokazIvacI na PC8-ove.
a) KojI ce bItI eIekat stavIjanja dva poIntera Istog procesa u red spremnIh procesa.Z
b) Koje ce bItI osnovne prednostI I mane ovakvog prIstupaZ
c) Kako se moze modIIIkovatI osnovnI RR aIgorItam da se postIgne IstI eIekat bez
dupIIcIranja pokazIvacaZ

Odgovor:
a) Proces ce povecatI svoj prIorItet dobIvanjem vremena vIse puta tako da
mozemo recI da proces Ima poseban tretman,
b) Prednost je da vaznIjI posIovI bI mogII ImatI vIse vremena, drugIm rIjecIma,
vecI prIorItet u tretmanu. PosIjedIce ovakvog ponasanja su u sporIjem
Izvodenju kracIh posIova.
c) DozvoIjavajucI vece vrIjeme procesIma koje zeIImo ubrzatI, drugIm rIjecIma,
dvIje III vIse vrIjednostI za kvantum predvIdjetI u semI RR.

5.6 Koje su prednostI ako postoje razIIcIte veIIcIne vremenskIh kvantuma na razIIcItIm
nIvoIma vIsenIvo-skog sIstema cekanjaZ

Odgovor: ProcesI kojI trebaju IrekventnIja servIsIranja, na prImjer InteraktIvnI proces
kao sto je edItor, mogu bItI smjestenI u red cekanja sa maIIm vremenskIm kvantumom.
ProcesI kojI nemaju potrebu za cestIm servIsIranjem mogu bItI stavIjenI u red cekanja
sa vecIm kvantumom cIme zahtjevaju manje Izmjena konteksta da bI zavrsIII obradu
cInecI eIIkasnIju upotrebu racunara.

5.7 RazmotrImo sIIjedecI aIgorItam za prIorItetno rasporedIvanje sa praznjenjem
bazIran na dInamIckoj IzmjenI prIorIteta. VecI brojevI prIorIteta znace vecI prIorItet.
Kada proces ceka na procesor (u redu spremnIh procesa ) njegov prIorItet se mjenja
na aIIa dok kad se Izvrsava njegov prIorItet se promjenI na beta. SvI procesI sa
prIorItetom 0 uIaze u red cekanja spremnIh procesa. ParametrI aIIa I beta mogu se
postavItI tako da daju razIIcIte aIgorItme za rasporedIvanje.

a) KojI je aIgorItam ako je beta>aIIa>0Z
b) KojI je aIgorItam ako je aIIa<beta<0Z

Odgovor:
a) FCFS
b) LFO

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

82
5.8 MnogI aIgorItmI rasporedIvanja su parametrIzovanI. Na prImjer, RR aIgorItam
zahtjeva parametar kojI IndIcIra vremenskI dIo Izvodenja procesa na procesoru.
RedovI cekanja sa vIse nIvoa zahtjevaju kao parametre broj redova cekanja, vrstu
aIgorItma rasporedIvanja za svakI red cekanja, krIterIj Izmjene procesa Izmedu
redova cekanja Itd. OvI aIgorItmI su dakIe skupovI aIgorItama (recImo, skup RR
aIgorItama za sve vremenske odsjecke I sI.). ]edan skup aIgorItama moze ukIjucItI
drugI (npr., FCFS aIgorItam je RR aIgorItam sa beskonacno veIIkom vrIjednoscu za
kvantum). Koja reIacIja postojI (ako postojI) Izmedu sIIjedecIh parova skupova
aIgorItamaZ

a) prIorItetnI I S]F
b) red cekanja sa vIse nIvoa I FCFS
c) prIorItetnI I FCFS
d) RR I S]F

Odgovor:
a) S]F Ima najvecI prIorItet
b) NajnIzI nIvo reda cekanja sa vIse nIvoa je FCFS.
c) FCFS daje najvecI prIorItet posIu kojI je bIo u toku nastajanja najduzI.
d) Ne postojI

5.9 PretpostavImo da je aIgorItam rasporedIvanja (na nIvou kratkorocnog
rasporedIvanja) IavorIzuje one procese kojI su korIstIII najmanje procesorskog
vremena u prosIostI. Zasto ovaj aIgorItam IavorIzuje U] programe a jos ne "ubIja"
programe vezane za procesorZ

Odgovor: FavorIzovace U] programe zato sto Im je reIatIvno kratko vrIjeme na
procesoru, medutIm, programI vezanI za procesor nece "umrIjetI" zato sto se
predhodnI odrIcu procesora reIatIvno cesto kad rade svoj U].

5.10 OpIsIte razIIke kod sIIjedecIh aIgorItama prema kratkIm posIovImaZ
a) FCFS
b) RR
c) red cekanja sa vIse nIvoa

Odgovor:
a) FCFS pravI razIIku kod kratkIh posIova posto posao kojI stIgne posIe jednog
dugog posIa ce ImatI duze vrIjeme cekanja.
b) RR tretIra sve posIove podjednako, dajucI Im jednako vrIjeme na procesoru
tako da kratkI posIovI ce moc napustItI sIstem brze posto ce pocetI prvI.
c) Red cekanja sa vIse nIvoa radI sIIcno RR aIgorItmu. On posebno razIIkuje
kratke posIove.

Web sadrzajI:

CPU ScheduIIng (http:]]www.IsI.edu]~govIndan]cs402]Iectures]sched.htmI)

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

83
6. Sinhronizacija procesa


Dijeljenje i natjecanje

Kooperirajuci procesi ili thread-ovi cesto dijele resurse. Neki od ovih resursa mogu se
koristiti konkurentno sa bilo kojim brojem procesa, dok drugi mogu biti korisceni samo od
jednog procesa u nekom trenutku vremena.

Zrak u prostoriuji moze se djeliti medu svim bez koordinacija jer nema potrebe da se
koordnira disnje prisutnih u prostoriji. Medutim stampac ne bi mogao biti koriscen na taj
nacin. Sigurno da postoji nacin, da se svi korisnici koji zele stampac, dogovore o redosljedu
njegovog koriscenja ili da se odloze datoteke materijala za stampu na disk a da sistem izvrsi
stampanje u skladu sa nekim pravilima. U svakom slucaju, osjecamo potrebu za
koordinacijom medu korisnicima koji zele pristupiti jednom resursu. Drugi primjer bi mogla
biti raskrsnica sa semaforima na kojoj ucesnici u saobracaju zele da produ raskrsnicu
bezbjedno (da koriste resurs) dok drugi cekaju da dodu u priliku da ga koriste.

Pravila koja definisu kako bi trebalo biti djeljeni resursi se naziva disciplinom djeljenja
resursa. Najcesca disciplina djeljenja resursa je medusobno iskljucivanje (engl. mutual
exclusion) ali postoje i druge discipline dijeljenja resursa. Kod pravila medusobnog
iskljucivanja imamo slucaj da kada proces koristi resurs onda niti jedan drugi proces ne
moze koristiti resurs.

Kako mi rukujemo sa resursima iz programa? Naravno, pisanjem koda. Dio programa koji
radi sa resursima na nacin da mu je potrebno medusobno iskljucivanje ili neki drugi tipovi
zastite se naziva kriticna sekcija. Primjetimo, u praksi, cak i jedna linija kod u jeziku visokog
nivoa moze predstavljati kriticnu sekciju jer je jedna linija koda u jeziku visokog nivoa
predstavljena sa nekoliko linija koda u masinskom jeziku koji se moze prekinuti.

Karakteristike rijesenja

Rjesenje za problem medusobnog iskljucivanja mora zadovoljiti slijedeca tri slucaja:

1. Medusobno iskljucivanja: samo jedan proces moze uci u kriticnu sekciju u jednom
trenutku vremena - inace sta predstavlja kriticna sekcija?
2. Napredak: niti jedan proces se ne primorava da ceka na raspolozivi resurs - inace je
vrlo nekorisno
3. Ograniceno cekanje: proces ne moze cekati beskonacno - inace postoji jednostavno
rjesenje: nijedan proces nece uci u kriticnu sekciju

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

84
Algoritam 1 (neispravan)

Jedan od pristupa da se razrijesi problem je ako imamo procese koji u redoslijedu pristupaju
resursu. Dato je slijedece predlozeno rjesenje za problem sa dva procesa:

/* i - je proces, j je drugi proces */

while (true)
{
while (turn != i ); /* vrti se dok nije redosljed i-tog procesa */
<<<kriticna sekcija >>>
turn = j;
<<< Kod izvan kriticne sekcije >>>
}

Da bi znali da li je ovaj kod korektan moramo pogledati karakteristike rjesenja
prodiskutovane ranije.

Rjesenje obezbjeduje medusobno iskljucivanje ali nije korektno. Predlozeno rjesenje
narusava kriterije napretka i ogranicenog cekanja:
Posto su procesi pristupaju resursu u zavisnosti od vrijednosti varijable "turn",
onda proces koji je u kriticnoj sekciji sprjecava drugi da pristupi kriticnoj sekciji.

Medutim, ako proces P0 mora biti u kriticnoj sekciji 70% vremena a drugi proces
P1 mora biti 1% vremena u kriticnoj sekciji tada proces P1 nefrekventno koristi
kriticnu sekciju i blokirace proces P0 najveci dio vremena cime je narusen kriterij
napretka procesa.

Pogledajmo i zavrsetak jednog od procesa. Kada proces zavrsi izvodenje tada je
tacno jedan od slijedecih iskaza:

1. proces je imao varijablu "turn"
2. proces ce opet dobiti varijablu "turn" uskoro.

Problem je, ako se proces ne izvrsava on ne moze dobiti vise varijablu turn.
Kada proces zavrsi svoje izvodenje on sa svojom vrijednoscu turn varijable umire dok
drugi proces ostaje blokiran zauvijek.

Posmatranja algoritma 1

Algoritam 1 nije dobar zato sto pretpostavlja da oba procesa treba da jednako
pristupaju kriticnoj sekciji a to ovdje nije slucaj.
Algoritam 1 nije dobar zato sto slijepo pretpostavlja da drugi proces treba
varijablu "turn" a sto ovdje nije slucaj.
Medusobno iskljucivanje je obezbjedeno koriscenjem varijable da ukaze da je
kriticna sekcija u upotrebi. Slicne analogije postoje u realnom svijetu sa natpisima
"zauzeto", "stop" i sl.
Varijabla se testira prije ulaska u kriticnu sekciju

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

85
Pokusajmo ponovo - Algoritam 2 (neispravan)

Dodajmo ono sto smo naucili u algoritmu 1 i pokusajmo ponovo. Ovog puta ne brinemo o
varijabli "turn". Varijabla "turn" ce biti data ako drugi proces je zeli . Ako ne zeli uci u
kriticnu sekciju necemo ga prisiljavati na to.

/* i - je proces, j - je drugi proces */

while (true)
{
while (state[j] == inside ); /* je li drugi proces u kriticnoj sekciji */
state[i] = inside; /* oznaci stanje za ulazak u kriticnu sekciju */
<<<kriticna sekcija>>>
state[i] = outside; /* oznaci stanje zavracanje iz kriticne sekcije */
<<< Kod izvan kriticne sekcije >>>
}

Ovaj prijedlog ima neke lijepe karakteristike:

Nema blokiranja bez obzira da li su drugi procesi unutar kriticne sekcije (kriterij
napretka procesa je zadovoljen)
U mjeri koju dozvoljava rasporedivac, postoji garancija da oba procesa ce moci
uci u kriticnu sekciju.

Dakle, ne postoji jos rjesenje. Da bi razumjeli da je ovaj kod nekorektan moramo se prisjetiti
dvije stvari:
Proces koji se izvrsava na procesoru moze se ukloniti sa procesora u svakom
trenutku ostavljajuci tekuce aktivnosti nezavrsenim.
Izvodenje izmjene konteksta moze proizvesti neocekivan nastavak izvodenja
procesa tako da oba procesa mogu uci u kriticnu sekciju

Atomicnost - je karakteristika izvrsavanja jedne jedinice koda bez prekida. Ovaj algoritam
pretpostavlja da je provjera iskaza (state[1] == inside) i postavljenje vrijednosti iskazom
(state[0] == inside) atomska. Drugim rijecima, ovaj algoritam pretpostavlja da nista ne
moze uci u kriticnu sekciju izmedu ove dvije operacije.

Ova pretpostavka je netacna. Stanje natjecanja postoji izmedu stanja testiranja i stanja
postavljanja. Proces P0 moze biti uklonjen sa procesora izmedu ove dvije operacije i
aktivirati P1. Zatim ce P1 testirati stanje[0] i naci da je false a zatim uci u kriticnu sekciju.

Pogledajmo slijedeci trag desavanja pri cemu varijable inside i outside mogu imati
vrijednosti, recimo, 1 i 0.

1. P0 nalazi da je (state[1] == outside)
2. Rasporedivac izvodi izmejenu konteksta
3. P1 nalazi da je (state[0] == outside)
4. P1 postavlja (state[0] == inside)
5. P1 ulazi u kriticnu sekciju
6. Rasporedivac izvodi izmejenu konteksta
7. P0 postavlja (state[1] == inside)
8. P0 ulazi u kriticnu sekciju
9. I P0 i P1 se nalaze u kriticnoj sekciji

Posto su oba procesa u kriticnoj sekciji, kriterij medusobnog iskljucivanja je bio narusen.


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

86
Algoritam 3 (neispravan)

Pokusajmo ponovo i ovaj put izbjegnimo stanje natjecanja izrazavanjem nasih interesa
unaprijed i onda kontrolisimo stanje drugog procesa.

/* i - je proces, j- je drugi proces */

while (true)
{
statep[i] == interested; /* navodimo zainteresovanost da udemo u kriticnu
sekciju */
while (state[j] == interested ); /* cekaj, da li je drugi zainteresovan */
<<<kriticna sekcija>>>
state[i] = noninterested; /* oznaci stanje pri povratku iz kriticne sekcije */
<<< Kod izvan kriticne sekcije >>>
}

Ovaj model garantira medusobno iskljucivanje ali ne i ograniceno cekanje. Ovaj pristup
dozvoljava tkz. zivo zakljucavanje (engl. livelock). Ovo zakljucavanje je specijalan slucaj
zastoja racunarskog sistema gdje procesi koji se natjecu za procesor trose procesorske
cikluse izvrsavajuci se u petlji beskonacno dugo.

Pogledajmo sljedecu situaciju koja se moze desiti:

1. P0 postavlja state[0] na stanje "zainteresovan" da iskaze svoju zelju za ulazak u kriticnu
sekciju
2. Desava se izmjena konteksta
3. P1 postavlja stanje[1] na "zainteresovan"
4. P1 se vrti u petlji
5. Desi se izmjena konteksta
6. P0 se vrti u petlji

Ova procesa se vrte u petlji beskonacno dugo. Ova situacija se naziva zivo zakljucavanje.

Algoritam 4: Peterson-ov algoritam (ispravan)

Ako algoritmu 3 dodamo varijablu "turn da razgranicimo procese koji zele pristupiti
kriticnoj sekciji, tada imamo slijedeci kod:

/* i - je proces, j- je drugi proces */
while (true)
{
state[i] == interested; /* navodimo zainteresovanost da udemo u kriticnu
sekciju */
turn = j /* dajem prednost drugom procesu */
while (state[j] == interested && turn == j ); /* cekaj ako je drugi
zainteresovan */
<<<kriticna sekcija>>>
state[i] = noninterested; /* oznaci stanje zavracanje iz kriticne sekcije */
<<< Kod izvan kriticne sekcije >>>
}

Ovaj kod zadovoljava sve tri karakteristike: medusobno iskljucivanje, napredak procesa i
ograniceno cekanje.


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

87
Algoritam 5: Dekker-ov algoritam (ispravan)

Treba napomenuti da je Petersonovo rjesenje pojednostavljen Dekkerov algoritam. Prikazano
rijesenje je prvo ispravno rijesenje, nastalo ranije nego Petersonov algoritam i izgleda
ovako.

while (true)
{
state[i] == interested; /* navodimo zainteresovanost da udemo u kriticnu
sekciju */
while (state[j] ); /* cekaj ako je drugi zainteresovan */
{
if (turn == j) /* je li on na potezu? */
{
state[i] = uninterested; /* oznaci stanje zavracanje iz kriticne sekcije */
while (turn == j); /* ..dok ne dode na red /*
state[i] = interested;
}
}
<<<kriticna sekcija>>>
turn = j; /* forsiraj izmjenu ako su oba zainteresovana */
state[i] = uninterested; /* treba pitati ponovo ako se zeli ponoviti*/
<<< Kod izvan kriticne sekcije >>>
}

Ovo rjesenje je nesto kompleksnije ali ispravno. Uvjerimo se da je to tako. Medusobno
iskljucivanje nije naruseno. Posmatrajmo slucaj kada jedan thread ulazi u kriticnu sekciju
prije drugog. Thred postavlja flag na true. Drugi thread ce se vrtiti u while petlji sve dok
drugi thread ne postavi njegov sopstveni flag i izade iz kriticne sekcije. Dakle, drugi thread
ne moze uci u kriticu sekciju dok prvi ne napusti kriticnu sekciju.

U povezanim slucajevima, varijabla "turn ce se postaviti tako da samo jedan thread moze
uci u kriticnu sekciju. Drugi thread se ''uhvatio'' u unutrasnjoj while petlji. Ne zna se koji ce
thread postaviti varijablu turn ali smo sigurni da ne mogu oba. U izlaznom dijelu varijabla ce
biti postavljena da dozvoli drugom thread-u da moze izaci. Jos jednom, thread ne moze uci
dok drugi ne izade iz kriticne sekcije. Medusobno iskljucivanje je zadovoljeno, dok napredak
nije narusen zato sto resurs nije nikad raspoloziv ali je cuvan. Ako postoji samo jedan
thread koji zeli uci varijabla turn ne predstavlja problem ulaska u kriticnu sekciju. U drugim
slucajevima varijabla turn u unutrasnjoj while petlji ce osiguravati da jedan od dva thread-a
ude u kriticnu sekciju. Stanje napretka je zadovoljeno i ograniceno cekanje nije naruseno.
Ako pretpostavimo da nema natjecanja za resurs onda ovaj slucaj postaje trivijalan. Thread
moze odmah uci (vidi diskusiju o napretku thread-a).

Drugi slucaj je interesantan kada treba obezbjediti ograniceno cekanje ako oba procesa zele
uci u kriticnu sekciju. U ovom slucaju treba da osiguramo da jedan proces ne moze biti
uvijek pobjednik u natjecanju. Ovo je zadovoljeno jer cim thread izade iz kriticne sekcije
daje sansu drugom thread-u da ude u kriticnu sekciju. Drugi proces moze odmah uci u
kriticnu sekciju i posto postavlja flag prvi proces ne moze ponovno uci u kriticnu sekciju.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

88
Rijesenje za visestruke procese: Lamportov algoritam (ispravan)

int choosing[N] = {false,false,.}; int number[N] = {0,0,.};

while (true)
{
choosing[i] = true; /* izabiramo nas broj - nije bas dobro */
new = 0; /* najmanji moguci broj */
for (x=0; x<N; x++) if (number[x]>new) new = number[x]; /* trazi se najveci broj*/
number[i] = new + 1; /* daj broj za jedan veci */
choosing[i] = false; /* zavrseno je uzimanje broja */
for (x=0; x<N; x++) /* . dok nije tvoj red */
{
while (choosing[x]) /* cekaj, mozda ima neko sa vecim brojem */
while ((number[x] != 0) && ((number[x]<number[i] ||
((number[x]==number[i] && (x<i))); /* ako neko ima manji broj onda cekaj, inace
nastavi*/
}
<<< kriticna sekcija >>>
number[i] = 0; /* resetovanje broja za slijedeci pristup */
<<< izlazak iz kriticne sekcije >>>
}

U ovom algoritmu se svakom thread-u daje broj kako bi usao u natjecanje za kriticnom
sekcijom. Threadovi dobijaju pravo pristupa kriticnoj sekciju u skladu sa njihovim brojevima.
Thread sa najvecim brojem ulazi prvi u kriticnu sekciju.

Pridruzivanje ovih brojeva nije kontrolisano tako da thread-ovi mogu dobiti isti broj. U
slucaju ove povezanosti, thread sa manjom identifikacijom procesa (komanda pid - process
id) ce uci u kriticnu sekciju prvi.

Mada ovo ne izgleda fer i ne mora biti. Princip ogranicenog cekanja ne trazi posten odnos
prema ucesnicima nego odredenost. Ovaj pristup garantira svakom thread-u da ce uci u
kriticnu sekciju. Mada je dio odluke o tome kada ce thread uci u kriticnu sekciju baziran na
arbitriranju, odnosno ID thread-a, pozicije thread-ova u redu cekanja je odredena
njegovim stizanjem. Ovo znaci da drugi thread ne moze narusiti redoslijed.

Hyman-ovo rijesenje medusobnog iskljucivanja

Potrosili smo dosta vremena u nalazenju kako da se napravi pogodan i snazan
sinhronizacioni alat i tehnike pocinjuci od malih obecanja o atomicnosti na hardverskom
nivou.
U nastavku je prikazan primjer moguceg rijesenja problema koje dokazuje medusobnu
iskljucivost izmedu dva procesa koji zele pristupiti kriticnoj sekciji. Ovo rijesenje je predlozio
Hyman 1966 god. Pitanje je da li da raspravljamo o korektnosti ponudenog rijesenja ili da
opisemo sekvencu rasporedivanja koja ilustrira nedostatak.

Rijesenju se vjerovalo dugi niz godina ali je cinjenica da ono vodi neekskluzivnom
izvrsavanju kriticne sekcije.

Shared boolean flag[2] = {0,0};
Shared int turn = 0;

Process (int id)
0. {
1. while(1)
2. {
3. flag[id] = 1;
4. while (turn != id)
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

89
5. {
6. while (flag[1-id] == 1)
7. ;
8. turn = id;
9. }
10.
11. <<< kriticna sekcija >>>
12. flag[id]=0;
13. <<< ne kriti;na sekcija >>>
14. }
15. }
Primjetili ste da slijedeca sekvenca rasporedivanja demonstrira mane ovakvog pristupa u
kome imamo da se jedan proces moze favorizovati nad drugim u zavisnosti od njegove
identifikacije pri cemu odredeni proces frekventnije prilazi kriticnoj sekciji?

Vrijeme P0 P1
0 1 1
1 1 3
2 1 4
3 1 4
4 3 6
5 4 6
6 11 6
7 11 6
8 11 8
9 11 9
10 11 4
11 11 11

Sta reci? Konkurentnost u ovom slucaju se tesko postize. Trebamo bolje alate i bolje
pristupe.

Zabrana prekida

Mada smo naucili kako da sinhroniziramo proizvoljan broj procesa bez hardverske podrske,
mora se primjetiti da je ovaj posao prilicno slozen. Kao sa mnogim drugim aspektima
sotvera, harverska podrska moze uciniti posao jednostavnijim i efikasnijim za programere.

Jedan od osnovnih oblika sinhronizacije podrzane hardverom i cesto koristena unutar
kernela je zabrana prekida (engl. disabling interrupts). Kernel cesto garantira da njegove
kriticne sekcije su medusobno iskljucive odrzavanjem kontrole kod izvrsavanja koda.
Uglavnom kerneli zabranjuju prekide oko mnogih kriticnih regiona osiguravajuci se da se ne
mogu prekinuti. Prekidi su omoguceni neposredno nakon izlaska iz kriticne sekcije.

Nazalost, ovaj pristup samo radi u sistemskom nacinu rada i moze proizvesti kasnjenja u
servisiranju prekida ili cak i gubitak prekida ako se dese dva prekida istog tipa prije nego sto
su se omogucili prekidi. Treba reci da to samo radi na jednoprocesorskim masinama zato
sto zabrana prekida moze trositi znacajno vrijeme i moze doci do problema ako se koriste
nekoliko procesora.
Disable_interrupt();
<<< Kriticna sekcija >>>
Enable_interrupt();

Specijalne instrukcije

Drugi pristup je da se napravi u harveru vrlo jednostavna instrukcija koja nam moze dati
ogranicene garancije medusobnog iskljucivanja u hardveru. Od ovih malih garancija mogu se
napraviti kompleksnije strukture u softveru.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

90
Test_and_Set

Jedna od takvih instrukcija koja je implementirana u hardveru je test_and_set instrukcija.
Ova instrukcija testira i postavlja vrijednost bez prekida (kazemo atomski ). Semantika ove
instrukcije prikazana je u slijedecem primjeru. Prisjetimo se samo da je atomska, odnosno
da je neprekidiva, odnosno da kada pocne njeno izvrsenje onda se zavrsi do kraja.

TS (<mem loc>)
{
if (<memloc> == 0)
{
<mem loc > = 1;
return 0;
}
else
{
return 1;
}
}

Sa datom test_and_set instrukcijom mozemo napraviti jednostavnu sinhronizacionu funkciju
nazvanu mutex ili spin-lock. Proces izvrsava zaposleno cekanje dok se test_and_set
instrukcija uspjesno ne izvrsi i tada se moze uci u kriticnu sekciju. Kada se zavrsi boravak u
kriticnoj sekciji tada se moze oznaciti sekcija kao raspoloziva za druge procese postavljajuci
vrijednost mutex na 0. Pretpostavlja se da je ova operacija atomska.

Acquire_mutex (<mutex>) /* prije ulaska u kriticnu sekciju */
{
while (TS(<mutex>))
}

Release_mutex (<mutex>) /* poslije izlaska iz kriticne sekcije */
{
<mutex> = 0;
}

Poredi i izmjeni

Druga hardverski podrzana instrukcija koja je korisna za izgradnju sinhronizacionih funkcija
je poredi i izmjeni (engl. compare and swap). Slicno kao i test_and_set instrukcija, ova
instrukcija je atomska jer se izvodi u harveru. Pseudo kod, prikazan ispod, samo ilustrira
njenu semantiku, pri cemu to ne znaci ni na koji nacin da se ona moze prekinuti.

CS (<mem loc>, <expected value>, <new value>)
{
if (<memloc> == <expected value>)
{
<mem loc > = <new value>;
return 0;
}
else
{
return 1;
}
}

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

91
Moze se primjetiti da je instrukcija test_and_set samo specijalan slucaj instrukcije
compare_and_swap:

TS(x) == CS(x,0,1)

Pseudo-kod, prikazan u nastavku, ilustruta kreiranje mutex-a (spin lock) koristeci
compare_and_swap:

Acquire_mutex (<mutex>) /* prije ulaska u kriticnu sekciju */
{
while (CS(<mutex>, 0, 1))
}

Release_mutex (<mutex>) /* poslije izlaska iz kriticne sekcije */
{
<mutex> = 0;
}

Semafori

Kako je rad sa ovim finkcijama, koje su podrzane od strane harvera, prilicno komplikovan,
pokusajmo sa sinhronizacionim konstrukcijama viseg nivoa koje ce nam znatno olaksati rad
na problemima koji nastaju konkurentnim izvodenjem procesa.

Prva od ovih finkcija visokog nivoa koja se spominje je novi tip varijable nazvan semafor. On
se inicijalno postavi na neku vrijednost. Poslije inicijalizacije ta vrijednost se moze promjeniti
jedino sa dvije operacije:

P(x), dolazi od holandske rijeci proberen koja znaci testiraj
V(x), dolazi od holandske rijeci verhogen koja znaci povecaj za jedan

Za operaciju P(x) koristi se i izraz wait(x) a za operaciju V(x) operacija signal(x). Pseudo
kod, prikazan ispod, ilustrira semantiku ove dvije operacije nad semaforom. Ovog puta
operacije su napravljene da budu atomske izvan hardvera koji koristeci hardversku podrsku,
diskutovanu ranije.

P(sem) /* proberen - testiraj, operacija wait(sem) */
{
while (sem <= 0);
sem = sem - 1;
}

V(sem) /* verhogen - inkrementiraj, opeacija signal(sem) */
{
sem = sem + 1;
}

U cilju da obezbjedimo da kriticna sekcija sa semaforima ostane zasticena koristicemo
mutex-e. Na ovaj nacin pomocu osnovih funkcija izgradujemo slozenije funkcije.

P(csem) {
While (1) {
Acquire_mutex (csem.mutex);
If (csem.value <= 0) {
Release_mutex (csem.mutex);
Continue;
}
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

92
else {
csem.value = csem.value - 1;
Release_mutex (csem.mutex);
Break;
}
}
}

V(csem)
{
Acquire_mutex (csem.mutex);
csem.value = csem.value + 1;
Release_mutex (csem.mutex);
}

Pogledajmo pazljivo implementaciju P(csem). Ako je natjecanje za kriticnu sekciju veliko i/ili
je kriticna sekcija dovoljno velika, onda se moze potrositi znacajno puno vremena. Mnogi
procesi ce zauzimati procesor i nece nista radini osim sto ce trositi cikluse cekajuci na proces
u redu spremnih procesa da se izvrse i oslobode kriticnu sekciju. Ovo zaposleno cekanje
cinu veliko natjecanje za kriticnom sekcijom jos gorim.

Ali nije sve izgubljeno. Uz pomoc operativnog sistema, mozemo implementirati semafore
tako da pozivajuci proces ce se blokirati umjesto da se vrti u operaciji P() i ceka na V()
operaciju da se probudi i izvrsi ponovno.Pseudo kod prikazuje implementaciju takvih
semafora koji se jos nazivaju blokirajuci semafori.

P(sem) {
While (1) {
Acquire_mutex (csem.mutex);
If (csem.value <= 0) {
Insert_queue (getpid(), csem.queue);
Release_mutex_and_block (csem.mutex); /* atomski: lost wake-up */
}
else {
csem.value = csem.value - 1;
Release_mutex (csem.mutex);
Break;
}
}
}
V(csem)
{
Acquire_mutex (csem.mutex);
csem.value = csem.value + 1;
dequeue_and_wakeup (csem.queue);
Release_mutex (csem.mutex);
}
Primjetimo da izvodenje funkcije P() nad procesom mora atomski postati blokiran i
osloboditi mutex. Ovo je zato da se ne desi rizik izgubljenog budenja procesa. Zamislimo
slucaj kada se izvrse dvije razlicite operacije: release_mutex(xsem.mutex) i sleep(). Ako se
desi izmjena konteksta izmedu ove dvije funkcije moze se doci u situaciju da drugi proces
izvrsi operaciju V() i pokusa da probudi uspavani proces i oslobodi iz reda cekanja. Nazalos,
prvi proces jos nije usao u red cekanja blokiranih procesa tako da budenje moze da ne
uspije, i kad proces opet nastavi izvodenje doci ce u stanje blokiranja i tada nece postojati
operacija budenja koja bi ga trebala izvaditi iz reda cekanja.

Operacioni sistemi obezbjeduju ovu podrsku u obliku sistemskog poziva sleep() koji uzima
semafor mutex kao parametar. Kernel onda moze osloboditi mutex i staviti proces u stanje
spavanja (blokiran i suspendovan) u jednoj okolini oslobodenoj od prekida, odnosno
zasticenu.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

93

Bulovi semafori

U mnogim slucajevima, nije potrebno da brojimo resurse posto postoji samo jedan. Poseban
tip semafora, nazvan bool-ov semafor se moze koristiti za te svrhe. Oni mogu imati samo
vrijednosti 0 i 1. U najvise sistema, bulovi semafori su poseban slucaj brojackih semafora,
poznatih pod imenom opsti semafori.

Problem proizvodac - potrosac

Jedan od klasicnih problema je problem proizvodac-potrosac, takode poznat pod
imenom problem ogranicenog bafera. U ovom slucaju postoje procesi proizvodac i
potrosac koji medusobno kooperiraju koristeci djeljeni bafer. Bafer se privremeno puni od
strane proizvodaca dok ga prazni proces potrosac. U slucaju da je bafer prazan, potrosac
treba da se zaustavi da ne bi praznio prazan bafer dok u slucaju da je bafer pun, proizvodac
treba da se zaustavi da ne bi punjenjem pregazio podatke koji jos nisu procitani. Znaci, oba
procesa moraju medusobno kooperirati nad djeljenim resursom kako bi se podaci od procesa
proizvodac ka procesu potrosac prenosili konzistentno.

Dato rijesenje predstavlja problem ogranicenog bafera koristeci semafore. Primjetimo da
koristimo brojacke semafore kako bi vodili evidenciju o stanju bafera. Dva semafora se
koriste, jedan za brojanje raspolozivih mjesta u baferima dok se drugi koristi za brojanje
popunjenih mjesta u baferu. Proizvodac koristi prazna mjesta u baferu (smanjujuci
vrijednost semafora sa funkcijom P()) i povecavajuci vrijednost zauzetih mjesta
(povecavanjem vrijednosti semafora sa funkciom V()). Ako nema praznih mjesta u baferu,
onda se proces blokira izvodenjem operacije P(). Potrosac radi na simetrican nacin.

Binarni semafori se koriste da zastite kriticne sekcije unutar koda - one sekcije gdje i
proizvodac i potrosac rade sa istim strukturama podataka. Ovo je potrebno, jer je moguce da
proces proizvodac i potrosac rade konkurentno ako postoje prazna ili puna mjesta unutar
bafera.

Producer()
{
while (1)
{
<<< proizvedi element >>>
P(empty); /* daj jedan prazan element bafera, blokiraj ako ga nema */
P(mutex); /* trazi kriticnu sekciju -djeljeni bafer */
<<< kriticna sekcija >>><
V(mutex); /* oslobodi kriticnu sekciju */
V(full); /* povecaj broj punih mjesta */
}
}

Consumer()
{
while(1)
{
P(full);
P(mutex);
<<< kriticna sekcija: ukloni element iz djeljenog bafera >>>
V(mutex);
V(empty);
}



Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

94
Problem citac-pisac

Ovaj problem je slucan prethodnom osim sto ima vise ogranicenja. Pretpostavimo da imamo
dvije vrste thread-ova, one koji citaju - citace, i one koji pisu - pisace. Citaci mogu
pregledavati elemente u baferima ali ne mogu mjenjati njihovu vrijednost. Pisaci mogu i
citati i mjenjati vrijednosti. Problem dozvoljava bilo koji broj konkurentnih threadova citaca,
dok thread pisac mora imati ekskluzivan pristup baferu.

U ovom slucaju koriste se binarni semafori kao sto je mutex. Primjetimo da se koristi i
oslobada unutar djelovanja pisaca da bi se osiguralo da samo jedan thread pisac moze biti
aktivan u isto vrijeme. Primetimo da drugi binarni mutex se koristi untar thread-a citaca da
se sprijeci visestrukim citacima promjena rd_count varijable u isto vrijeme.

Brojacki semafori se koriste da se vodi evidencija o broju citaca. Samo kada je broj citaca
jednak nuli tada pisac moze biti aktivan inace pisac se blokira sa funkcijom P().

Vazno je napomenuti da rjesenje navedeno ispod favorizuje citace nad pisacima. Ako su
citaci konstantno aktivni, pisaci mogu cekati beskonacno dugo. Naravno da je moguce
implementirati slicna rjesenja koja bi favorizovala pisace na racun citaca.

writer() /* Proces pisac, samo jedan sa ekskluzivnim pravom pristupa */
{
while(1)
P(writing);
<<< izvrsava operacije pisanja >>>
V(writing);
}
}
reader() /* procesi citaci - vise njih moze pristupiti kriticnoj sekciji */
{
while(1)
{
P(mutex);
Rd_count++;
If (rd_count == 1) /* ako smo prvi citac, onda prezmi semafor za pisanj e */
P(writing); /* kad ovo imamo tada drzimo pisace blokirane */
V(mutex);

<<< izvrsi citanje >>>
P(mutex);
Rd_count--:
If (rd_count == 0) /* ako smo poslednji citac koji napusta */
V(writing); /* dozvoli pisacima da pisu */
V(mutex);
}
}

Problem filozofa

Pravila:
Filozofi naizmjenicno misle i jedu
Da bi jeli potrebne su im dvije viljuske
Filozofi su dostojanstveni i nikada ne uhvate odmah za dvije viljuske vec u
jednu u jednom vremenskom trenutku
Filozof je uctiv i nikada ne bi ukrao viljusku od svog kolege
Filozofi ne smiju umirati od gladi
Vise od jednog filozofa mora moci da jede u bilo kojem vremenskom trenutku

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

95

Pristup #1

#define left(i) (i)
#define right(i) ((i-1) % 5)
MONITOR fork {
int avail[5] = {2, 2, 2, 2, 2 }; /* forks available to each phil */
condition hungry[5];

entry pickup_fork (int phil) {
if (avail[i] != 2) hungry[i].wait();
avail[left(I)]--; avail[right(I)]--;
}
entry putdown_fork (int phil) {
avail[left(i)]++: avail[right(i)]++;
if (avail[left(i)] == 2) hungry[left(i).signal();
if (avail[right(i)] == 2) hungry[right(i)].signal();
}
}

Ovaj pristup nije dobar jer pati od umiranja. Ovdje ne postoji garancija da pojedini filozof
ce moci ikad da jede. Umiranje je moguce zato sto postoje razlicite strane koje cekaju na
razlicita stanja a da pri tome ne postoji nacin njihovog izbora. Svi djelovi ce cekati na ista
stanja. Jednostavna dorada bi vodila zajednickom redu cekanja procesa.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

96
Drugi pristup

Pogledajmo rjesenje bazirano na semaforskom pristupu.

Semaphore chopstick[5] = { 1, 1, 1, 1, 1 };

while (1)
{
P(chopstick[i]);
P(chopstick[(i+1) % 5]);
<<< eat >>>
V(chopstick[i]);
V(chopstick[(i +1) % 5]);
<<< think >>>
}

Ali ovo rjesenje, takode, nije u redu. Sta se sada desava. Da li je moguce da filozofi se mogu
medusobno dogovoriti kao posljedica toga nece biti hrane ni za jednog. Pogledajmo sta ce
se desiti ako svaki filozof uhvati njegovu lijevu viljusku. Ni jedan nece moci jesti zato sto ce
svi cekati da neko spusti svoju viljusku. Ovakva situacija je poznata kao zastoj (engl.
dadlock).

Umiranje procesa, zasto?
Ovaj pristup nije dobar zato sto se moze desiti umiranje procesa. Ovdje ne postoji garancija
da jedan od filozofa bi mogao ikada moci da jede.
Uopste receno, umiranje ce se desiti, jer razliciti djelovi cekaju na razlicita stanja bez
zahedbickog nacina koji bi se mogao primijeniti medu njima. Rjesenje je prilicno
komplikovano. Svu ucesnici bi trebali cekati na isto stanje. Jedno jednostavno rijesenje
moglo bi biti preko zajednickog rea cekanja za procese koji cekaji.

Zadaci: Sinhronizacija procesa

6.1 Sta znaci iskaz "zaposleno cekanje"?. Koje druge vrste cekanja postoje u operativnom
sistemu? Moze li se "zaposleno cekanje" u potpunosti eliminisati?

Odgovor:
Proces koji ceka da se desi neki dogadaj i pri tome izvrsava instrukcije
Proces koji ceka da se desi neki dogadaj u redu cekanja (recimo, U/I, semafor) i
nije mu procesor alociran (ne izvrsava instrukcije u tom momentu).
"Zaposleno cekanje" se ne moze eliminisati u potpunosti.

6.2 Dokazati da u "bakery" algoritmu vaze slijedeci iskazi:

Ako je Pi u njegovoj kriticnoj sekciji i Pk (k/=i) je vec izabran i njegov number(k)=/0
onda je (number(i),i) < (number(k),k).


6.3 Cesto onemogucavanje prekida bi moglo uticati na sistemski sat. Opisite zasto bi se to
moglo desiti i kako takvi efekti bi se mogli minimizirati?

Odgovor:

Odrzavanje vremena je obicno bazirano na prekidima koji se generisu od strane kristala sata.
Poslije fiksnog broja oscilacija koje su jednake nekom iznosu vremena desava se prekid i
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

97
racunar azurira njegovo interne vrijeme. Ako su prekidi onemoguceni ovi djelovi sata mogu
biti izgubljeni i nece doci do azuriranja vrijednost internog sata u racunaru.


6.4 Pokazite da ako se operacije wait i signal ne izvrsavaju atomski da moze doci do
narusavanja medusobne iskljucivosti?
6.5 Problem berbera koji spava. Brijacnica se sastoji od jedne sobe za cekanje i n stolica i
sobe za brijanje sa jednom stolicom. Ako nema korisnika berber spava. Ako korisnik ude
u radnju i sve stolice su zauzete onda korisnik izlazi iz radnje i ceka pred radnjom. Ako je
berber zauzet ali stolica ima praznih onda korisnik sjeda na jednu od 3 stolice. Ako
berber spava korisnik budi berbera. Napisite program koji ce koordinirati berbera i
korisnike.
6.6 Problem cigarete-pusaci. Dat je sistem sa tri procesa "pusac" i jedan proces "agent".
Svaki pusac pravi cigaretu motanjem a zatim pusi. Medutim, da bi napravio cigaretu i
pusio je potrebna su mu tri cinioca: duhan, papir i sibice. Jedan od procesa "pusac" ima
papir, drugi duhan a treci sibice.Agent snabdjeva sa materijalima za izgradnju cigareta
neograniceno. Agen stavlja dva materijala na sto. Pusaci uzimaju materijal koji nemaju
da bi napravili cigaretu signalizirajuci agentu da su uzeli materijal. Onda agent stavlja
druga dva materijala i ciklus se ponavlja. Napisite program koji ce sinhronizovati agenta i
pusace.

Odgovor

Djeljena struktura podataka su semafor a(3) inicijalizirani na 0 i semafor agent inicijaliziran
na 1. Kod procesa agent je slijedeci:

While(1)
{
// Postavi i,j na vrijednosti izmedu 0 i 2.
wait(agent); operacija P(agent)
signal(a[i]); operacija V(a[i])
signal(a[j]); operacija V(a[j])
}

Svaki proces pusac treba dva materijala predstavljena cijelim brojevima r i s sa
vrijednostima izmedu 0 i 2.




While(1)
wait(a[r]); operacija P(a[r])
wait(a[s]); operacija P(a[s])
``pusi''
signal(agent); operacija V(agent)
}

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

98
Sadrzaj na web-u

Proces sinhronizacije i konkurentnost procesa

Process Synchronization (http://www.gfdi.fsu.edu/~hitoshi/cop6611/node3.html)
Fork Join Construct (http://userpages.umbc.edu/~glennon/CMSC421/fork_join)
Navigating Inter Process Communication
(http://cne.gmu.edu/modules/ipc/map.html)
Chapter 8: Concurrent Processes
(http://www.scism.sbu.ac.uk/jfl/Chapter8/chap8.html)
CIS 307: Precedence Graphs, Concurrency Grain, Fork and Join, CoBegin CoEnd
(http://www.cis.temple.edu/~ingargio/cis307/readings/precedence.html)

Kriticna sekcija i hardverska pomoc kod sinhronizacije

A Survey of Mutual-Exclusion Algorithms for Multiprocessor Operating Systems
(http://tofu.alt.net/~lk/242.paper/242.paper.html)
Critical section problem (http://phoenix.goucher.edu/~kelliher/cs42/sep27.html)
Mutual Exclusion and Critical Regions
(http://joda.cis.temple.edu/~ingargio/old/cis307f95/readings/mutex.html)
Process Interaction (http://www2-cne.gmu.edu/modules/ipc/green/solution.html)
Fast Mutual Exclusion for Uniprocessors
(http://pecan.srv.cs.cmu.edu/afs/cs/project/mach/public/www/doc/abstracts/Rcs.ht
ml)
Algorithms for scalable synchronization on shared-memory multiprocessors
(http://www.acm.org/pubs/toc/Abstracts/tocs/103729.html)

Semafori u klasicni problemi alokacije resursa

Semaphores (http://www.mcs.drexel.edu/~shartley/OSusingSR/semaphores.html)
Classical Problem : Producer-Consumer Problem
(http://cne.gmu.edu/modules/ipc/purple/prodsem.html)
Concurrency (http://www.cim.mcgill.ca/~franco/OpSys-304-427/lecture-
notes/node29.html)
Programming : General Interface for Semaphores (http://www.mathematik.uni-
ulm.de/oberon/0.5/lib/man/Semaphores.html)
Summary of Java Concurrency Constructs (
http://gee.cs.oswego.edu/dl/cpj/JavaSummary.html

99
Monitori

Monitor je sinhronizacioni alat projektovan da ucini programerski zivot
jednostavnijim. Monitor se moze predstaviti sa blokom. Programer moze staviti
procedure/funkcije/metode u ovj blok i monitor ih cini jednostavnijim za
koriscenje pri cemu ce se, unutar monitora, izvrsavati samo jedna funkcija u
jedinici vremena. Medusobno iskljucivanje ce biti garantovano.

Osim toga, monitor moze zastititi djeljene podatke. Podacima u monitoru se moze
pristupiti samo preko funkcija/procedura/metoda koje su definisane u monitoru.
Stoga, je medusobno iskljucivanje garantovano i za ove podatke.
Funkcije/procedure/metode izvan monitora ne mogu pristupiti, odnosno unistiti
podatke.

Ako se nista ne izvrsava u monitoru, jedan thread moze izvrsiti jednu od njegovih
procedura/metoda/funkcija. Inace, thread se stavlja u ulazni red cekanja (engl.
entry queue) i ceka da bude prozvan. Cim jedan thread izade iz monitora on
"budi" slijedeci proces u ulaznom redu cekanja.






















Monitor se sastoji od kljuca i jedne ili vise uslovnih varijabli. Medusobno
iskljucivanje u monitoru se postize upoitrebom kljuca, odnosno, ko ima kljuc
moze uci u monitor. Sta se desava u slucaju kad neki thread koji se izvrsava u
monitoru zahtjeva neraspolozivi resurs? U tom slucaju, thread ceka na ovaj
resurs koristeci operaciju wait jedne uslovne varijable, izlazeci privremeno iz
monitora. U ovom trenutku, drugi thread je slobodan da ude u monitor.

U toku izvrsavanja drugog thread-a u monitoru dolazi do oslobadanja resursa koji
je trazio prvi thread. Tekuci thread signalizira prvom thread-u da je resurs sada
raspoloziv. Sta ce se desiti? Da li ce se prvi thread odmah biti probuden ili ce
drugi thread prvo zavrsiti svoje izvodenje? Ova situacija daje razlicite verzije
razrjesavanja ovih problema u monitoru i ti razliciti pristupi se nazivaju razlicitim
semantikama montora.

Poznate su tri vreste semantika: Mesa, Hoare-ova i BH semantika. Razmotrimo,
u nastavku svaku od njih.


Ulazni red ekanja za monitor





Red ekanja blok- Red ekanja na
iranih thread-ova signaliziranih threadova


Djeljeni podaci
Int x,y,z;
Procedura A
Procedura B
Procedura C


100
Mesa semantika

Kod Mesa semantike, kada resurs koji je trazio prvi thread postane raspoloziv, on
se premjesta iz reda cekanja blokiranih thread-ova u ulazni red cekanja. Drugi
thread zavrsava izvodenje i onda ce prvi thread, eventualno, biti preuzet iz
ulaznog reda cekanja.





















Ova interpretacija mada je jednostavna ima mali nedostatak. Mozda, ako prvi
proces pocne da se izvrsava ponovo, dogadaj koji ga je odveo u cekanje je
prosao i resurs je ponovno postao neraspoloziv. Ciklus se moze ponavljati.

Hoare-va semantika

Hoare zastupa malo drugaciju interpretaciju. Ako je uslov prvog thread-a
zadovoljen on ce se odmah izvrsiti. Drugi thread se stavlja u signalni red cekanja.
Kada thread izade iz monitora, thread iz signalnog reda cekanja ce se aktivirati.
Samo u slucaju da je signalni red cekanja prazan koristice se ulazni red cekanja.
Ovaj pristup je nesto kompliciraniji ali vodi nekim ljepsim karakteristikama.



















Ulazni red ekanja za monitor
4 3
1




Red ekanja blok- Red ekanja
iranih thread-ova signaliziranih thred-ova







8 6






2

4


5

Djeljeni podaci
Int x,y,z;
Procedura A
Procedura B
Procedura C




Ulazni red ekanja za monitor
3
1




Red ekanja blok- Red ekanja
iranih thread-ova signaliziranih thred-ova


5




6 8






2

4
7



Djeljeni podaci
Int x,y,z;
Procedura A
Procedura B
Procedura C


101
Navedimo postupno sta se desava kada dva thread-a pristupaju monitoru
koristeci Hoare-u semantiku.
1. Thread A ulazi u monitor
2. Thread A ceka na resor koji u tom trenutku nije raspoloziv (recimo, slog
podataka iz datoteke)
3. Thread B ulazi u monitor (prije toga cekao je u ulaznom redu cekanja na
monitor).
4. Thread B signalizira na raspolozivost resursa i ulazi u signalni red cekanja.
5. Thread A ponovno ulazi u monitor.
6. Thread A napusta monitor
7. Thread B ponovno ulazi u monitor
8. Thread B napusta monitor
9. Slijedeci thread moze biti primljen u ulazni red cekanja na monitor.

Brinch Hanson semantika

Postoji i treca vrsta semantike koja postoji u monitorima poznata pod nazivom
Brinch Hanson semantika. Ona ukljucuje samo uniju mesa i Hoare semantike.
Brinch Hansen monitor samo dozvoljava procesu ili thread-u da signalizira nakon
izlaska iz monitora. U tom momentu thread ili proses kojim je signaliziran
raspolozivi resurs moze se izvrsiti dok je proces koji je signalizirao vec napusti
monitor.













7
Navedimo postupno sta se desava kada dva thread-a pristupaju monitoru
koristeci Hoare-u semantiku.
1. Thread A ulazi u monitor
2. Thread A ceka na resor koji u tom trenutku nije raspoloziv
3. Thread B ulazi u monitor (prije roga cekao je u ulaznom redu cekanja na
monitor).
4. Thread B izlazi iz monitora i signalizira na raspolozivost resursa
5. Thread A ponovno ulazi u monitor.
6. Thread A napusta monitor
7. Drugi proces moze biti prihvacen u ulazni red cekanja na monitor


Ulazni red ekanja za monitor
3
1




Red ekanja blok-
iranih thread-ova


5




6 4






2






Djeljeni podaci
Int x,y,z;
Procedura A
Procedura B
Procedura C


102
Monitori u Javi

Java programski jezik omogucuje podrsku za monitore preko sinhronizacionih
metoda unutar klase. Uvjereni smo da bar jedna sihronizaciona metoda unutar
pojedinacne klase moze biti aktivna u bilo koje vrijeme, cak i u aplikacijama sa
visestrukim thread-ovima. Java ne zahtjeva da sve metode unutar klase budu
sinhronizovane, odnosno, svaka metoda klase nije obavezno dio monitora vec su
samo sinhronizovane metode klase zasticene od konkurentnog izvodenja.
Jasno je da je ovo prilika za programera da unisti dodatak sa masivnim i brzim
pristupom.

Java monitori su umjereno ograniceni, posebno kada se suprostavlja sa
monitorima koji koriste Hoare ili Mesa semantiku. Kod Jave, moze postojati samo
jedan razlog za cekanje (blokiranje) unutar monitora a ne visestruki uslovi. Kada
jedan thread ceka onda je on neizvrsiv. Kada je signaliziran da se probudi onda
on moze postati izvrsan i izvrsice se slijedeci bez obzira sta ce se desiti sa
rasporedivacem da bi ga izvrsio. Nasuprot BH monitora signal se moze desiti bilo
gdje u kodu. Nasuprot Hoare semantici, signaliziranje thread-a ne predaje se
odmah signaliziranom thread-u. Nasuprot sva tri, moze postojati samo jedan
razlog za cekanje/signal.

Da bi cekali na uslov, Java thread izdaje wait(). Da bi signalizirali thread-u koji
ceka da mu se kaze da moze nastaviti svoje izvrsenje (stanje zbog kojeg ceka je
zadovoljeno) Java thread izdaje notify().

Primjer monitor u Javi

Dati primjer je iz knjige Concurrent Programming: The Java Language, Stephen
Hartley, Oxford Univerity Press, 1998.
Prvi primjer je rjesenje za problem ogranicenog bafera poznat pod imenom
proizvodac-potrosac. Ovo rjesenje podrzava jedan thread proizvodac i jedan
thread potrosac.

Primjetimo da proizvodac signalizira potrosaca koji ceka da napuni prvi element
bafera. Ovo je zato sto potrosac moze biti blokiran ako bafer nije popunjen.
Potrosac prati slicnu praksu, ako uzima poslednji element iz bafera, mogao bi
proizvodac biti blokiran cekajuci na raspolozivi prostor u baferu.

class BoundedBuffer {// designed for a single producer thread and a single
consumer thread
private int numSlots = 0;
private double[] buffer = null;
private int putIn = 0, takeOut = 0;
private int count = 0;

public BoundedBuffer(int numSlots) {
if (numSlots <= 0) throw new IllegalArgumentException("numSlots<=0");
this.numSlots = numSlots;
buffer = new double[numSlots];
System.out.println("BoundedBuffer alive, numSlots=" + numSlots);
}

public synchronized void deposit(double value) {
while (count == numSlots)
try {
wait();
} catch (InterruptedException e) {
System.err.println("interrupted out of wait");
103
}
buffer[putIn] = value;
putIn = (putIn + 1) % numSlots;
count++; // wake up the consumer
if (count == 1) notify(); // since it might be waiting
System.out.println(" after deposit, count=" + count
+ ", putIn=" + putIn);
}

public synchronized double fetch() {
double value;
while (count == 0)
try {
wait();
} catch (InterruptedException e) {
System.err.println("interrupted out of wait");
}
value = buffer[takeOut];
takeOut = (takeOut + 1) % numSlots;
count--; // wake up the producer
if (count == numSlots-1) notify(); // since it might be waiting
System.out.println(" after fetch, count=" + count
+ ", takeOut=" + takeOut);
return value;
}
}

Rjesenje citac-pisac na fer osnovi

Sa slijedecim rjesenjem problema citac-pisac nije dozvoljeno umiranje ni
proizvodaca ni potrosaca. Samo lukavim kodom je izbjegnuto umiranje pisaca
nad citacima sto vodi ranijem izdavanju zahtjeva.

class Database extends MyObject {
private int numReaders = 0;
private int numWriters = 0;
private int numWaitingReaders = 0;
private int numWaitingWriters = 0;
private boolean okToWrite = true;
private long startWaitingReadersTime = 0;

public Database() { super("rwDB"); }

public synchronized void startRead(int i) {
long readerArrivalTime = 0;
if (numWaitingWriters > 0 || numWriters > 0) {
numWaitingReaders++;
readerArrivalTime = age();
while (readerArrivalTime >= startWaitingReadersTime)
try {wait();} catch (InterruptedException e) {}
numWaitingReaders--;
}
numReaders++;
}
public synchronized void endRead(int i) {
numReaders--;
okToWrite = numReaders == 0;
if (okToWrite) notifyAll();
}
public synchronized void startWrite(int i) {
if (numReaders > 0 || numWriters > 0) {
numWaitingWriters++;
okToWrite = false;
while (!okToWrite)
try {wait();} catch (InterruptedException e) {}
numWaitingWriters--;
104
}
okToWrite = false;
numWriters++;
}
public synchronized void endWrite(int i) {
numWriters--; // ASSERT(numWriters==0)
okToWrite = numWaitingReaders == 0;
startWaitingReadersTime = age();
notifyAll();
}
}

Uslovne varijable

Uslovna varijabla je sinhronizaciona primitiva koja obezbjeduje red cekanja na
resurs za thread-ove. Thread testira da vidi da li je resurs raspoloziv. Ako jeste
on ga koristi. Inace, dodaje sam sebe u red cekanja thread-ova na resurs. Kada
thread zavrsi koriscenje resursa om probudi jedan thread iz reda cekanja ili
nijedan ako je red cekanja prazan. U ovom slucaju djeljivog resursa, broadcast
poruka ce biti poslana svima da probudi sve uspavane thread-ove.

Ispravno koriscenje uslovne varijable obezbjeduje se siguran pristup za red
cekanja i test resursa cak sa konkurentnoscu. Implementacija uslovne varijable
ukljucuje nekoliko mutex-a.

Uslovna varijabla podrzava tri operacije:

Wait - dodaje thread pozivaoc u red cekanje i stavlja ga u stanje
"spavanja"
Signal - uklanja thread iz reda cekanja i budi ga
Broadcast - uklanja i budi sve tread.-ove u redu cekanja.

Kada koristimo uslovnu varijablu, dodatni mutex se moze koristiti da zastiti
kriticnu sekciju koda da bi se testirao stanje zakljucanosti ili promjenilo stanje
zakljucanosti.

Tipicno koriscenje uslovne varijable
Slijedeci kod ilustrira tipicno koriscenje uslovne varijable da bi se dobio
resurs. Primjetimo da su mutex mx i uslovna varijabla cv proslijedeni u
funkciji wait.
Ako ispitujete implementaciju funkcije wait, naci cete da wait funkcija
automatski oslobada mutex i stavlja thread u stanje "spavanja". Poslije
signaliziranja thread-a i njegovog budenja on ponovno dobija resurs. Ovo je
nacin da se sprijeci izgubljeno budenje. Ova situacija je prodiskutovana u
dijelu koji opisuje implementaciju uslovne varijable.

spin_lock s;
GetLock (condition cv, mutex mx)
{
mutex_acquire (mx);
while (LOCKED)
wait (c, mx);

lock=LOCKED;
mutex_release (mx);
}
105

ReleaseLock (condition cv, mutex mx)
{
mutex_acquire (mx);
lock = UNLOCKED;
signal (cv);
mutex_release (mx);
}


Implementacija uslovnih varijabli

Data je jedna od mogucih implementacija uslovnih varijabli.
Struktura podataka
Struktura podataka uslovne varijable sadrzi duplo povezanu listu koju koristi
kao red cekanja. Ona ukljucuje i semafor koji stiti operacije nad redom
cekanja. Ovaj semafor bi mogao biti i spin-lock zato sto ce se zadrzavati
veoma malo vremena.

struct condition {
proc next; /* Implementacija duplo povezane liste */
proc prev; /* red cekanja za blokirane thread-ove */
mutex mx; /* zastita reda cekanja */
};

Operacija wait()

Operacija wait() dodaje thread u listu i onda ga stavlja u stanje blokiranja
(spavanja). Varijabla mutex stiti kriticnu sekciju kod poziva funkcija i
proslijeduje se kao parametar operaciji wait(). Ovo dozvoljava operaciji
wait() da automatski oslobodi varijablu mutex i stavi proces u stanje
blokiranosti.
Ako ova operacija nije atomska i desi se izmjena konteksta poslije
realise_mutex (mx) i prije nego sto thread ode u stanje blokiranosti, moguce
je da proces signalizira prije nego se blokira. Kada proces koji je cekao se
ponovno vrati na izvrsenje, uci ce u red cekanja blokiranih procesa, ali ce
poruka koja ga je trebala probuditi, nestati zauvjek.

void wait (condition *cv, mutex *mx)
{
mutex_acquire(&c->listLock); /* zastiti red cekanja */
enqueue (&c->next,&c->prev,thr_self());/*izvadi iz reda cek.*/
mutex_release (&c->listLock); /* zavrsi smo sa listom */
/*Operacije suspendiranja i release_mutex()trebaju biti atomske */
release_mutex (mx));
thr_suspend (self); /* Spavaj dok te neko ne probudi */
mutex_acquire (mx); /* probuden-vas je red, preuzmi zakljucavanje resursa */
return;
}


106
Operacija signal

Operacija signal uzima slijedeci thread iz reda cekanja i budi ga. Ako je
red cekanja prazan ova operacija ne radi nista.

void signal (condition *c)
{
thread_id tid;
mutex_acquire (c->listlock); /* zastiti red cekanja */
tid = dequeue(&c->next, &c->prev);
mutex_release (listLock);

if (tid>0)
thr_continue (tid);

return;
}

Operacija broadcast

Operacija broadcast budi svaki thread koji ceka na neki resurs. Ovo ima
smisla ako se koristi djeljivi resurs. Recimo, pisac je upravo zavrsio tako
da sve citace treba probuditi.
void broadcast (condition *c)
{
thread_id tid;

mutex_acquire (c->listLock); /* zastiti red cekanja*/
while (&c->next) /* ako red cekanja nije prazan */
{
tid = dequeue(&c->next, &c->prev); /* probudi */
thr_continue (tid); /* ucini ga izvrsivim */
}
mutex_release (c->listLock); /* zavrsi sa redom cekanja*/
}

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




107


7. Zastoj u racunarskom sistemu

Sta je zastoj?

Najprije definirajmo pojam resurs:

Resursi su apstrakcije na koje se ceka iz bilo kojeg razloga
Postoje razliciti tipovi resursa i moze postojati razlicit broj resursa svakog tipa
Proces/thread moze dobiti resurs, koristiti ga i osloboditi ga
U ovom kontekstu resursi su nedjeljivi - oni se serijski ponovno koriste

Sada dajmo formalnu definiciju zastoja (engl. deadlock):

Stanje koje proizilazi kada postoji skup procesa (ili thread-ova) takvih da
svaki proces drzi jedan resurs koji drugi proces u skupu ceka da dobije.
Ovakva situacija dovodi sve procese u stanje da cekaju beskonacno dugo.

Navedimo primjere:

Primjer1: Sistem ima dva uredaja za trake, Procesi P1 i P2 drze po jedan i traze
da dobiju jos jedan, odnosni drugi uradaj.
Primjer2: Semafori A i B su inicijalizirani na 1. Procesi P0 i P1 izgledaju ovako;

P0 P1
-------------- ----------------
P(A) P(B)
P(B) P(A)

Primjer 3: prelazak preko mosta

Saobracaj se odvija samo u jednom smjeru
Svaki dio mosta moze biti posmatran kao jedan resurs
Ako se zastoj desi moze biti razrjesen ako jedan se auto vrati (oslobadanje
resursa)
Nekoliko auta mozda se treba povratiti ako se zastoj desi
"umiranje je moguce
Karakteristike resursa

Resursi tipa R1,R2,.,Rm (procesorski ciklus, memorijski prostor, U/I uredaji)
Svaki resur tipa Ri ima Qi primjerke
Svaki proces koristi resurse na slijedeci nacin:
zahtjev
upotreba
oslobadanje


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




108


Zasto se zastoji desavaju?

Zastoji se desavaju ako su ova stanja zadovoljena:


Medusobno iskljucivanje (mutual exclusion): samo jedan proces u vremenu
moze koristiti jedan resurs

Drzi i cekaj (hold and wait): proces koji drzi bar jedan resurs ceka da dobije
dodatni resurs koji drze drugi procesi

Nema praznjenja procesora (No preemption): resurs moze biti osloboden
samo dobrovoljno od strane procesa koji ga drzi, posto proces zavrsi svoj posao.
Jedan proces ne moze uzeti resurs drugog procesa u smislu da napravi napredak
u izvodenju. To cak ne moze uraditi ni operativni sistem.

Cirkularno cekanje (circural wait): postoji cirkularni niz procesa od kojih svaki
ceka na resurs koji drzi slijedeci proces u nizu.



Jednostavna odbrana: serijalizacija

Ovo predstvalja napad na stanje cirkularnog cekanja.

Jednostavna odbrana od zastoja u racunarskom sistemu je da se zahtjevi za
resursima serijalizuju
Numerisati sve resurse dajuci svakom resursu broj
Zahtijevati da svi procesi koji traze resurse u redoslijedu njihove numeracije.
Ovo implicira da proces nikada nece zahtijevati resurs sa manjim brojem ako
drzi resurs sa vecim brojem
Cirkularno cekanje je sada nemoguce zato sto se lanac procesa koji cekaju ne
moze zatvoriti od najveceg broja resursa ka najmanjem broju resursa.


Serijalizacija problema filozofa

Ako numerisemo viljuske i od filozova trazimo da uzme najprije najnizi broj viljuske onda se
zastoj nece desiti. Ovo je jednako za svakog filozofa koji uzima viljusku sa lijeve strane
izuzev za P4. P4, koji je posljedni u lancu, ce najprije pokupiti desnu viljusku posto treba da
razbije cirkulano cekanje i na taj nacin proizvodi prekid cirkularnog cekanja. Primjetimo da
ne postoji ciklus zavistnosti medu filozofima.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




109




Semaphore chopstick[5] =
{ 1, 1, 1, 1, 1 };

while (1)
{
if (i < ((i+1) % 5)) {
P(chopstick[i]);
P(chopstick[(i+1) %
5]);
} else {
P(chopstick[(i+1) %
5]);
P (chopstick[i]);
}
<<< eat >>>
V(chopstick[i]);
V(chopstick[(i +1) %
5]);
<<< think >>>
}

Grafovi za alokaciju resursa

Grafovi za alokaciju resursa se mogu koristiti da bi opisali koriscenje sistemskih resursa i
ukazali na postojanje zastoja. Razmotrimo alokacioni graf G kao skup vektora {V,E}, gdje je
V skup elemenata i E je skup strijelica.

Postoje dva tipa u skupu elemenata:

Procesi - predstavljaju se krugovima i oznacavaju sa identifikacijom procesa
(PID)
Resursi - predstavljaju se pravougaonikom i oznacavaju se sa tipom resursa.
Pojedinacan primjerak resursa se oznacava tackom unutar pravougaounika

Postoje dva tipa strijelica:

Zahtjevi - on se oznacava strjelicom od procesa koji zahtjeva resurs ka
resursu koji se zahtjeva. Posto proces ne zna koji primjerak resursa ce dobiti
od odredenog tipa resursa onda se strjelica crta do pravougaonika a ne do
tacke unutar pravougaonika.
Koriscenje resursa - oznacimo ovo sa jednom strijelicom od pojedinacnog
primjerka resursa ka procesu koji ga trenutno koristi. Posto proces koristi
iskljucivo pojedinacan primjerak resursa strjelica se crta od pojedinacne tacke
do procesa koji je koristi.


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




110







Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




111


Detekcija zastoja


Za dati alokacioni graf resursa moze se izvrsiti detekcija zastoja, mozda kao dio nul
procesa. Ovo dobro izgleda, jer ako zastoj postoji, procesi koji uzrokuju zastoj ce biti
blokirani, odnosno njihovi resursi slobodni tako da se stice prilika da se nastavi izvrsavanje
procesa.

Ako postoji samo jedan primjerak svakog tipa resursa onda je racunarski sistem u zastoju
ako postoji ciklus u grafu.

Visestruki primjerci svakog tipa resursa

Ako postoje visestruki primjerci jednog tipa resursa, onda se mora reducirati graf prije
kontrole postojanja ciklusa. Ako ne reduciramo graf ciklusi ne ukazuju na postojanje
zastoja.

Reduciranje zastoja ukljucuje postavljanje pitanja: Sta ce se desiti kada proces koji se
izvrsava zavrsi svoje izvodenje. U stvari, pretpostavimo da neki proces koji nije cekao na
resurs zavrsi svoje izvodenje i oslobodi resurse koje je drzao. U tom momentu ovi resursi
postaju raspolozivi za druge procese. Postupak pronalazenja procesa koji se izvrsavaju i
uklanjaju, po njihovom zavrsetku izvodenja, iz grafa je ponavljajuci sve dok ne postoji niti
jedan procesa koji se izvrsava.

Racunarski sistem je u stanju zastoja samo ako se graf ne moze reducirati.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




112








Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




113


Metode za rad sa zastojima

Treba da obezbjede da sistem nikad ne ude u stanje zastoja (sprijecavanje
zastoja)
Da dozvoli da sistem ude u stanje zastoja i onda da se oporavi (izbjegavanje
zastoja)
Ignorise problem i ponasa se kao da se zastoji nece nikada desiti u sistemu;
koristi se kod mnogih sistema, ukljucujuci i UNIX

Sprecavanje zastoja

Sprecavanje zahtjeva ima za cilj da se ne dozvoli da se ostvare stanja koji bi mogla dovesti
u stanje zastoja racunarskog sistema. Pogledajmo kako se moze za svako od stanja sprijeciti
da se ne bi ostvario uslov ulaska u zastoj.

Medusobno iskljucivanje - ucini resurse djeljivim, na primjer, datoke koje
se samo citaju
Drzi i cekaj - ako zahtjevani resurs nije na raspolaganju, oslobodi sve
resurse prije prelaska u stanje cekanja. Drugi pristup je da se svi potrebni
resursi unaprijed zahtjevaju kroz jedan zahtjev. Ako se potvrdi takav zahtjev
onda nece doci do situacije da neko drzi resurs i ceka na drugi i nece doci do
tkz. zaposlenog cekanja.
Nema praznjenja sa procesora - treba uciniti resurse takvim da periodicno
mogu biti slobodni kako bi se sa njima moglo upravljati
Cirkularno cekanje - dozvoljava procesima da cekaju na resurse ali
osigurava da cekanje ne moze biti cirkularno. Jedan pristup bi bio da se
resursima pridruzi broj koji oznacava prioritet i da procesi alociraju resurse u
redosljedu povecavanja prioriteta. Ovim se zeli reci da proces koji drzi resurs
sa najvecim prioritetom onda proces ne moze traziti resurs sa prioritetom
manjim od tekuceg prioriteta. Ovo dozvoljava da procesi koji alociraju resurse
prate logiku koja ne dovodi do cirkularnog zakljucavanja resursa. Ovo se
omogucava tako da proces moze drzati samo jedan resurs i ako zeli drugi
resurs onda mora osloboditi resurs koji drzi. Drugi nacin je da se trazi vise
resursa izdavajuci jedan zahtjev kojim se specificiraju tipovi i uzorci resursa sa
odgovarajucim prioritetima. Ako su prioriteti zahtjeva za resurse veci od
tekuceg onda zahtjev moze biti odobren.

Izbjegavanje zastoja

Zahtjeva da sistem ima neke dodatne informacija a priori poznate

Jednostavan i najkorisniji model koji zahtjeva da svaki proces deklarise
maksimalan broj resursa svakog tipa koje treba
Algoritam izbjegavanja zastoja dinamicki ispituje stanje alokacije resursa da bude
siguran da nece doci u stanje cirkularnog cekanja
Stanje alokacije resursa je difinisano sa brojem raspolozivih i alociranih resursa i
maksimalnim zahtjevima procesa

Stabilno stanje sistema

Kada jedan proces trazi raspolozivi resurs sistem mora odluciti da li trenutno
alociranje dovodi sistem u nestabilno stanje
Sistem je u stabilnom stanju ako postoji siguran slijed sistema nakon izvrsavanja
svih procesa
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




114


Sekvenca <P1, P2, .,Pn> je stabilna ako za svaki proces Pi, resursi koje proces
Pi moze traziti mogu biti zadovoljeni sa tekucim raspolozivim resursima + resursi
koje drze svi procesi Pj, j<i.
Ako proces Pi treba resurs koji nije trenutno raspoloziv onda Pi moze cekati
dok svi procesi Pj ne zavrse sa koriccenjem resursa
Kada proces Pj zavrsi, proces Pi moze tada dobiti trazeni resurs, koristiti
ga, vratiti alocirani resurs i zavrsiti izvodenje.
Kada proces Pi zavrsi svoje izvodenje, onda proces Pi+1 moze dobiti
njegove trazene resurse itd.

Osnovne cinjenice

Ako je sistem u sigurnom stanju tada ne moze doci do zastoja
Ako je sistem u nesigurnom stanju tada postoji sansa da dode do zastoja
Tehnika izbjegavanja zastoja obezbjeduje da sistem nece nikada uci u nesigurno
stanje

Algoritam za alokaciju resursa pomocu grafa

Zahtjevna grana PiRj pokazuje da proces Pi smije zahtjevati Rj i predstavljen je
isprekidanom linjom.
Zahtjevna grana se konvertuje u trazenu granu onda kad jedan proces trazi
resurs
Kad se jedan resurs oslobodi od strane procesa grana pridruzivanja se konvertuje
u zahtjevnu granu
Resursi moraju biti zahtjevani a priori u sistemu

Implementacija izbjegavanja zastoja - Bankarski algoritam

Postoje visestruki primjerci resursa
Svaki proces mora a priori zahtjevati maksimalno koriscenje
Kada jedan proces zahtjeva resurs onda on mora da ceka
Kad jedan proces dobije sve svoje resurse onda ih on mora vrati u konacnom
periodu

Struktura podataka za bankarski algoritam

Naka je n broj procesa a m broj tipova resursa.

Raspolozivost: je vektor duzine m koji pokazuje broj raspolozivih resursa svakog
tipa. Ako je raspolozivost[j] = k, onda postoji k primjeraka resursa tipa Rj
raspolozivo
Max: nxm matrica definise maksimalne zahtjeve svakog procesa. Ako je max[i,j]
= k onda proces Pi smije zahtjevati najvise k primjeraka resursa tipa Rj
Alokacija: nxm matrica pokazuje broj resursa svakog tipa alociranih svakom
procesu.. Ako je alokacija[i,j] = k, onda proces Pi u datom trenutku alocira k
primjeraka resursa Rj
Potrebe: nxm matrica pokazuje preostale resurse potrebne svakom procesu. Ako
potrebe[i,j] = k, onda proces Pi smije traziti jos k primjeraka resura tipa Rj da
zavrsi svoj posao.

Potrebe[i,j] = Max[i,j] - Alokacija[i,j]


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




115


Sigurnosni algoritam

1. Neka vektori Work i Finish budu vektori duzine m i n respektivno. Inicijalizirajmo
ih

Work := Raspolozivost
Finish[i] := false za i:=1,2,.,n

2. Nadi i takvo da vaze oba uslova:

a. Finish[i] = false
b. Potrebe[i]<= Work

Ako takav i ne postoji idi na korak 4.

3. Work:=Work + Alokacija[i]
Finish[i] := true
Go to 2

4. Ako je finish[i] = true za svko i, onda je sistem u sigurnom stanju.

Algoritam prihvatanja zahtjeva za resursa

Zahtjev[i] je tabela zahtjeva za proces Pi. Ako je zahtjev[j] =k onda proces Pi trazi k
primjeraka resursa tipa Rj. Kada se napravi zahtjev za resurse od strane procesa Pi slijedeci
algoritam se izvrsava:

1. Ako je zahtjev[i] <= potrebe[i] ido na korak 2. Inace to je stanje greske posto
proces prekoraciti svoje zahtjeve
2. Ako je zahtjev[i] <= Raspolozivost[i] idi na korak 3, inace Pi mora cekati posto
resursi nisu raspolozivi
3. Pokusaj da alociras zahtjevane resurse procesu Pi modifikovanjem stanja na
sledeci nacin:

Raspolozivost[i] := Raspolozivost[i] - Zahtjev[i]
Alokacija[i] :=Alokacija[i] + Zahtjev[i]
Potrebe[i] := Potrebe[i] - Zahtjev[i]

ako je stanje sigurno onda su resursi alocirani procesu Pi
ako je stanje nestabilno onda proces Pi mora cekati i staro stanje alokacije
resursa se vraca
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




116


Primjer bankarskog algoritma

Pet procesa P0 do P4; tri tipa resursa tipa A(sa 10 primjeraka), B(5 primjeraka) i
C(7 primjeraka)
U trenutku T0 imamo sljedece stanje:



Alocirano Max Raspolozivo Potrebe
------------ ------------ ----------------- ----------
A B C A B C A B C A B C
P0 0 1 0 7 5 3 3 3 2 7 4 3
P1 2 0 0 3 2 2 1 2 2
P2 3 0 2 9 0 2 6 0 0
P3 2 1 1 2 2 2 0 1 1
P4 0 0 2 4 3 3 4 3 1

Sadrzaj matrice Potrebe je definisana kao Max - Alokacija
Sistem je u sigurnom stanju posto sekvenca <P1,P3,P4,P2,P1> zadovoljava
kriterij sigurnosti.

Pretpostavimo da proces P1 zahtjeva dodatne resurse tipa A(1) i C(2), tj, proces P1 zahtjeva
(1,0,2)

Provjeri da li je Zahtjev <= Raspolozivost tj. (1,0,2)<=(3,3,2) true.

Alokacija Potrebe Raspolozivost
------------- ----------- -----------------
A B C A B C A B C
P0 0 1 0 7 4 3 2 3 0
P1 3 0 2 0 2 0
P2 3 0 2 6 0 0
P3 2 1 1 0 1 1
P4 0 0 2 4 3 1

Izvrsavanje algoritma sigurnosti pokazuje se da sekvenca <P1,P3,P4,P0,P2>
zadovoljava zahtjeve sigurnosti.
Moze li zahtjev za (3,3,0) od procesa P4 biti dodjeljen? (ne, resursi nisu
raspolozivi)
Moze li zahtjev za (0,2,0) od procesa P0 biti dodjeljen? (cak i da su raspolozivi,
sistem je u nesigurnom stanju)

Detekcija zastoja

Dozvoljava sistemu da ude u stanje zastoja
Algoritam detekcije
Shema ozdravljenja (povratka iz zastoja)
Kada se vrsi detekcija zastoja
Nakon svakog zahtjeva - to je takozvana rana detekcija zastoja ali je veoma
cesta i skupa
Kada je proces nezaposlen - najbolje vrijeme da se uradi detekcija zastoja
Kada je mnogo procesa blokirano (vjerovatno zbog zastoja)
Periodicno
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




117



Slucaj jednog primjerka resursa svakog tipa

Odrzava graf wait-for:
Cvorovi su procesi
Pi Pj ako Pi ceka na Pj
Periodicno se poziva algoritam da pretrazi da li postoji ciklus u grafu
Algoritam koji detektuje ciklus u grafu zahtjeva n na kvadrat operacija, gdje je n
broj vrhova u grafu.

Sta uraditi kada se zastoj desi

Najprije napasti na stanje no preemption
o Uzmi proces i stavi ga u stanje cekanja a njegove resurse stavi na
raspolaganje drugim procesima
o Kada drugi procesi zavrse onda pokusaj deblokirati procese
o Pretpostavimo da su resursi jos vazeci poslije deblokiranja procesa.
Ovo je tacno u nekim slucajevima: RAM, disk ali nije tacno u drugim
slucajevima: magnetna traka je ispisana do polovine,
o Uzimanje zrtve je stvar odabira

Ako se mora pronaci zrtva
o Ubiti "zrtve cineci njihove resurse raspolozivim. Ciscenje moze
proizvesti dodatne probleme - datoteke do pola zapisane, djelomicno
zavrsena bankarska transakcija itd.

Sistemi bazirani na transakcijama koje podrzavaju atomske transakcije cine
zivot jednostavnijom. Ciscenje se obavlja automatski nakon nasilnog prekida
transakcije, odnosno pri dizanju sistema ako je doslo do gasenja sistema.

Slucaj vise primjerka resursa svakog tipa

Strukture podataka

Raspolozivost: Tabela duzine m indicira broj raspolozivih resursa svakog tipa
Alokacija: Matrica nxm definise broj resursa svakog tipa trenutno alociranih
svakom procesu
Zahtjev: matrica nxm koja pokazuje tekuci zahtjev svakog procesa. Ako je
zahtjev[i,j] =k onda proces Pi zahtjeva k primjeraka resursa tipa Rj.

Algoritam detekcije

1. Neka su tabele Work i Finish duzina m i n respektivno. Inicijaliziraj

a. Work := Raspolozivost.
b. Za i:=1,2,.,n, ako alokacija(i) =/ 0 onda Finish[i] :=false inace
Finish[i] :=true.

2. Nadi index i takav da oba

a. Finish[i] = false
b. Zahtjev(i) <= Work(i)

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




118


Ako nema takvog i, idi na korak 4.
3. Work := Work + Alokacija
Finish[i] := true
go to 2

4. Ako je Finish[i] = false za neko i, 1<=i<=n, onda je sistem u stanju zastoja,
inace ako je finish[i] = false onda je proces Pi prouzrokovao zastoj.

Primjer algoritma detekcije

Pet procesa P0 do P4; tri tipa resursa A(7 primjeraka), B (2 primjerka) i C(6
primjeraka)
U trenutku P0 imamo slijedecu sliku:

Alokacija Zahtjev Raspolozivost
------------ ------------ -----------------
A B C A B C A B C
P0 0 1 0 0 0 0 0 0 0
P1 2 0 0 2 0 2
P2 3 0 3 0 0 0
P3 2 1 1 1 0 0
P4 0 0 2 0 0 2

Skvenca <P0,P2,P3,P1,P4> ce proizvesti Finish[i] :=true za svako i ( sistem nije u
stanju zastoja)
P2 zahtjeva jedan dodatni primjerak resursa tipa C, tada matrica zahtjeva izgleda
ovako

Zahtjev
---------
A B C
P0 0 0 0
P1 2 0 2
P2 0 0 1
P3 1 0 0
P4 0 0 2

Stanje sistema?
Mogu li se popraviti resursi drzani od procesa P0, sa drugim zahtjevima
Zastoj postoji, i cine ga procesi P1,P2,P3 i P4 (prekoracenje u raspolozivim
resursima)

Upotreba Algoritma detekcije

Kada i kako cesto upotreba algoritma zavisi od
Kako se cesto zastoj desava desava?
Koliko procesa ce biti potrebno ponovno pokrenutu (roll back)
Ako je algoritam detekcije prozvan regularno tada moze postojati mnogo ciklusa u
grafu resursa i necemo moci reci koji od procesa uzrokuje zastoj

Oporavak od zastoja - zavrsetak procesa

Nasilno prekini (abort) sve procese koji uzrokuju zastoj
Nasilno prekidaj jedan po jedan proces sve dok ciklus zastoja se ne eliminise
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




119


Kojim redom ce se prekidati nasilno procesi?
Prioritet procesa
Koliko se proces odvijajo kao i koliko vremena mu je jos ostalo do
zavrsetka
Resursi koje je proces koristio
Resursi koje proces treba da zavrsi
Koliko procesa treba nasilno zaustaviti
Da li je proces interaktivan ili pozadinski?

Oporavak od zastoja - praznjenje resursa

Izborom "zrtve minimizira se cijena
Rollback - povratak na neko sigurno stanje i ponovni nastavak procesa od te tacke
Starvation - isti procesi mogu biti "zrtva; ukljucivanje broja rollback-ova u faktor
cijene

Kombinovani pristupi kod manipulisanje zastojem

Koriste se tri osnovna pristupa
sprecevanje
izbjegavanje
detekcija

dozvoljavajuci da se koristi optimalni pristup za svaku klasu resursa u sistemu
Djeljenje resursa u hijerarjijski uredene klase
Koriscenje najpogodnije tehnike za manipulisanje zastojem unutar svake klase.

Zadaci:

7.1 Navedite tri primjera zastoja koji se ne odnose na opremu sa racunaskim sistemima?

7.2 Da li je moguce imati zastoj koji ukljucuje samo jedan proces? Objasnite odgovor.

Odgovor: Ne. Ovo proizilazi is uslova "hold-and-wait", jer nema nikoga ko bi ga mogao
dovesti u takvu poziciju.

7.3 Korisnici kazu da spooling ce eliminisati probleme zastoja u racunaskom sistemu. To
dolazi zbog toga sto se spooling procesi (izbaceni iz memorije na disk) ne natjecu za
dobivanje resursa racunarskog sistema kao sto su stampaci, crtaci, itd. Cak je moguce i
sadrzaje traka staviti na disk (engl. tape staging) pri cemu se ostavlja dovoljno resursa
racunarskog sistema tipa procesorskog vremena i memorije. Da li je moguce da se desi
zastoj u racunarskom sistemu u ovom slucaju. Ako jeste, kako bi se mogli takvi zastoji
desiti? Ako ne, objasnite zasto? Koje seme zastoja bi izgledale najboljim da se elimisu
zastoji (ako mogu da se dese), ili koje stanje je naruseno (ako nije moguce da se desi)?

Odgovor: Jos je moguce da dode do zastoja. Proces P1 drzi memorijske stranice koje se
traze od procesa P2 dok P2 drzi procesor koji trazi proces P1. Najbolji nacin da se eliminsu
ovi tipovi zastoja je da se koristi praznjenje procesa sa procesora (preemption).

7.4 Razmotrimo zastoj u saobracaju na raskrsnici gdje u svakoj ulici postoji vozilo koje zeli
da nastavi svoj tok:

a) Pokazite da cetiri potrebna stanja za zastoj postoje na ovom primjeru?
b) Objasnite jednostavno pravilo kako da izbjegnete zastoj u ovom slucaju?
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




120



7.5 Pretpostavimo da je sistem u nesigurnom stanju. Pokazite da je moguce za procese da
zavrse svoje izvodenje bez ulaska u stanje zastoja.

Odgovor: Razmotrimo slijedecu sliku sistema:

Aloc. Maks. Raspolozivo
ABCD ABCD ABCD
P 0 0012 0012 1520
P 1 1000 1750
P 2 1354 2356
P 3 0632 0652
P 4 0014 0656

Dozvoljavajuci procesu P1 da zavrsi i vrati njegove resurse u listu raspolozivih resursa,
mozemo nastaviti sa izvrsenjem proces P3. Kada P3 zavrsi svoje izvodenje i oslobodi resurse
tada imamo raspolozivih resursa (2,8,8,6), dovoljno da ostali procesi zavrse u bilo kojem
redoslijedu.

7.6 U jednom racunarskom sistemu, niti raspolozivost resursa niti zahtjevi procesa za resurse
nisu konzistentni u nekom duzem vremenskom periodu (mjeseci). Kod kvara nekod od
resursa dolazi do njegove zamjene da bi se proces mogao izvrsavati, tako da imamo
situaciju kada se resursi udaljavaju ili dodaju u sistem (kupovinom odgovarajuceg
resursa). Ako je zastoj kontrolisan bankarskim algoritmom, koje od slijedecih promjena
mogu se napraviti sigurno (bez uvodenja novih zastoja) i pod kojim okolnostima.

a) Povecanje tabele Raspolozivost (dodavanje novih resursa )
b) Smanjenje tabele Raspolozivost (resursi stalno uklonjeni iz sistema)
c) Povecanje tabele Max za jedan proces (proces trazi vise resursa nego sto je
dozvoljeno, smije traziti vise)
d) Smanjenje tabele Max za jedan proces (proces odluci na ne treba toliko resursa)
e) Povecanje broja procesa
f) Smanjenje broja procesa

7.7 Dokazite sigurnos bankarskog algoritama zahtjeva nxm
2
.

Odgovor: Korak 2 moze se izvrsiti n + (n-1) + .+3+2+1=n x (n-1)/2. U svakoj iteraciji, m
tipova resursa mora biti ispitano. Dakle algoritam zahtjeva m x n x (n+1)/2 koraka.


7.8 Dat je sistem koji se sastoji od cetiri resursa istog tipa koje djelimo sa tri procesa, od
kojih svaki treba bar dva resursa. Pokazite da je sistem u stanju bez zastoja.

Odgovor: Predpostavimo da je sistem u zastoju. Ovo implicira da svaki proces drzi po jedan
resurs i ceka na drugi. Posto postoji tri procesa i cetiri resursa jedan proces morao bi dobiti
dva resursa. Ovaj proces ne zahtjeva vise resursa i po svom zavrsetku vretice resurse.

7.9 Dat je sistem koji se sastoji od m resursa istog tipa koji su djeljeni od n procesa. Resursi
mogu biti trazeni i oslobadani samo jedanput. Pokazite da je sistem u stanju bez zastoja
ako vrijede slijedeca dva uslova:

a) Maksimalna potreba za svaki od procesa je izmedu 1 i m resursa.
b) Suma svih maksimalnih potreba je manja od n+m.


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




121


Odgovor:
a. # n
i =1 Max i < m + n

b. Max i # 1 za svako i
Dokaz: Need i = Max i - Allocation i
Ako postoji stanje zastoja onda

c. # n
i =1 Allocation i = m
Koristi a. da bi dobio: # Need i + # Allocation i = # Max i < m + n
Koristi c da bi dobio: # Need i + m < m + n

Iz ovog slijedi:
# n
i =1 Need i < n

Ovo implicira da postoji proces Pi takav da je Need i = 0. Posto Max i#1 vrijedi da P ima
najmanje jedan resurs koji moze osloboditi. Dakle sistem ne moze biti u stanju zastoja.

7.10 Dat je racunarski sistem koji izvrsava 5000 job-ova mjesecno bez ikakve seme za
specavanje zastoja i seme za izbjegavanje zastoja. Zastoji se desavaju dva puta
mjesecno i operator po jednom zastoju treba zavrsiti i ponovno pokrenuti oko 10 job-
ova. Svaki job ima vrijednost od 2 dolara ( u procesorskom vremenu) i smatra se da je
pri padu job polovicno zavrsen. Sistem programer je procijenio da algoritam za
izbjegavanje zastoja, takav kao sto je bankarski algoritam, bi se mogao instalisati u
sistem sa povecanjem srednjeg vremena izvrsenja po job-u oko 10 %. Posto sistem ima
30% vremena slobodnog, svih 5000 poslova mjesecno ce se moci izvrsiti dok ce ukupno
vrijeme izvsenja job-a se povecati za oko 20 %.

a) Koji su argumenti za instaliranje algoritma za izbjegavanje zastoja?
b) Koji su argumenti protiv instalisanja algoritma za izbjegavanje zastoja?

Odgovor:
a) U cilju da odredimo da li ce se desiti ili ne zastoj u racunarskom sistemu, u ovom
slucaju, potrebno je instalisati ili semu za sprecevanje zastoja ili semu za
izbjegavanje zastoja. Instaliranjem algoritma za izbjegavanje zastoja, znacajna
odstupanja od srednjeg vremena cekanja ce biti izbjegnuta.
b) Ako popstoji prioritet za minimizacijom varijansi u vremenu cekanja, onda
neinstaliranje ove seme bi znacilo redukciju konstantne cijene.

7.11 Moze se dobiti bankarski algoritam za jedan tip resursa iz opsteg bankarskog
algoritma jednostavnom redukcijom dvodimenzionalnosti raznih nizova na jednu
dimenziju. Pokazite, na jednom primjeru, semu bankarskog algoritma za visestruke
resurse koja se ne moze implementirati individualnom aplikacijom i semom samo sa
jednim resursom za svaki tip resursa.

Odgovor: Dat je sistem sa resursima tipa A,B i C sa dva procesa P0 i P1 i slijedeca slika
sistema:

Allocation Max Need Available
P 0 122 234 112 111
P 1 112 233 121
Sistem nije u sigurnom stanju. Medutim, ako primjenimo bankarski algoritam za jedan
resurs na svaki resurs dobicemo slijedece:
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




122



Niz <P0,P1> zadovoljava sigurnosne zahtjeve za resurs A,
Niz <P0,P1> zadovoljava sigurnosne zahtjeve za resurs B,
Niz <P1,P0> zadovoljava sigurnosne zahtjeve za resurs C i ,dakle, sistem ce biti u
sigurnom stanju.

7.12 Moze li sistem detektovati da neki od njegovih procesa "umiru". Ako odgovorite sa
da, objasnite zasto, a ako odgovorite sa ne objasnite sta sistem moze raditi sa
problemom "umiranja" procesa.

Odgovor: Detekcija "umiranja" zahtjeva karakteristicno znanje, tako da se iz karakteristika
procesa zapisanih u odgovarajucim strukturama ne moze odrediti da li proces "napreduje" ili
ne. Medutim, umiranje moze biti sprijeceno "starenjem" procesa. Ovo znaci da se odrzava
brojac za svaki proces tako da se na osnovu tog brojaca moze izabrati "zrtveni" proces kod
izmene procesa.

7.13 Razmotrimo slijedecu sliku sistema:

Alocirano Maksimalno Raspolozivo
------------- --------------- ---------------
A B C D A B C D A B C D
P0 0 0 1 2 0 0 1 2 1 5 2 0
P1 1 0 0 0 1 7 5 0
P2 1 3 5 4 2 3 5 6
P3 0 6 3 2 0 6 5 2
P4 0 0 1 4 0 6 5 6

Odgovorite na slijedeca pitanja koristeci bankarski algoritam:

a) Koji je sadrzaj matrice Potrebe?
b) Da li je sistem u sigurnom stanju?
c) Ako stize zahtjev od procesa P1 za (0,4,2,0) moze li zahtjev biti potvrden odmah?

7.14 Razmotrimo slijedeca pravila za alokaciju resursa. Zahtjevi za resursima i
oslobadanje resursa su dozvoljeni u bilo koje vrijeme. Ako neki zahtjev za resursima ne
moze biti odobren zato sto nema raspolozivih resursa onda provjeravamo procese koji su
blokirani a cekaju na resurse. Ako oni imaju zeljene resurse onda se ti resursi uzimaju od
njih i daju zeljenom procesu. Vektor resursa procesa koji je blokiran se uvecava za
resurse koji su mu uzeti.

Na primjer, u sistemu sa tri tipa resursa i vektorom raspolozivih resursa Raspolozivo
iniciranih na (4,2,2). Ako proces P0 zahtjeva (2,2,1) odmah ih dobija. Ako P1 trazi
(1,0,1) i on ih dobija. Ako zatim P0 trazi (0,0,1) on se blokira i resursi postanu
neraspozivi. Ako sada P2 trazi (2,0,0) dobice (1,0,0) i jedan od procesa P0 posto je
proces P0 blokiran. Tada vektor alociranih resursa procesa P0 postaje (1,2,1) a njegov
vektor Potreba raste na (1,0,1).

a) Moze li se zastoj desiti? Ako moze dati primjer, ako ne moze koja potrebna stanja
se ne mogu desiti?
b) Moze li se desiti beskonacno blokiranje?

Odgovor:
a) Zatoj se ne moze desiti zato sto postoji praznjenje procesora.
b) Da. Proces ne smije nikad dobiti sve resurse koje treba ako se oni kontinualno
razmjenjuju izmedu serije zahtjeva koji dolaze na sistem.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi




123



7.15 Pretpostavimo da ste napisali algoritam za sigurno izbjegavanje zastoja i sada treba
da implementirate algoritam za detekciju zastoja. Moze li se ovo uraditi jednostavnim
izmjenom algoritma redefinisuci da
Max
i
= Wainting
i
+ Alocirano
i
, gdje Waiting
i
je vektor koji specificira resurse koje proces i
ceka, dok Alocirano
i
je vektor alociranih resursa sa procesom.

Odgovor:
Redefinisanjem Max u algoritmu mora se redefinisati i Potrebe(i)=waiting(i). Sada su
Potrebe iste kao Zahtjevi(i) kod algoritma za detekciju zastoja, odnosno algoritmi su
ekvivalentni.

Informacije na web-u

Zastoji: Potrebni uslovi, grafovi za alokaciju resursa, sprecavanje zastoja

CIS307: Deadlocks (Temple University)
(http://www.cis.temple.edu/~ingargio/old/cis307f95/readings/deadlock.html)
CS3204: Deadlocks (Virginia Tech)
(http://ei.cs.vt.edu/~cs3204/fall.97/Notes/deadlock/deadlock.html)
Deadlock... The Deadly Embrace (Millersville University)
(http://cs.millersv.edu/cs382.dir/300.html)
Java Applet showing deadlock in Dining Philosophers
(http://java.sun.com/docs/books/tutorial/essential/threads/deadlock.html)

Detekcija zadtoja, posebni slucajevi detekcije zastoja

Deadlock Detection Agents: A Distributed Deadlock Detection Scheme
(http://www.db.fmi.uni-passau.de/publications/techreports/dda.html)
Deadlock Detection in Multi-database Systems: a Performance Analysis
(http://www.irisa.fr/bibli/publi/pi/1995/949/949.html)
Distributed Deadlock Detection (http://www.cs.orst.edu/~rudd/511.html)
Deadlock Detection in Distributed Database
(http://www.acm.org/pubs/toc/Abstracts/0360-0300/46163.html)
The Distributed Deadlock Detection Algorithm
(http://www.acm.org/pubs/toc/Abstracts/0734-2071/6516.html)

Izbjegavanje zastoja i oporavak od zastoja

University of Wisconsin Madison lecture notes on deadlock avoidance ( CS 537 )
(http://www.cs.wisc.edu/~cs537-1/)
University of Missouri-Kansas city lecture notes on deadlock avoidance ( CS 431 )
(http://www.cstp.umkc.edu/~hines/431/deadlock_avoid.html)
University of Wales, Cardiff lecture notes on Bankers algorithm
(http://www.cstp.umkc.edu/~hines/431/deadlock_avoid.html)
Bankers Algorithm for a single resource
(http://www.cis.temple.edu/~ingargio/old/cis307f95/readings/deadlock.html#5 )
University of Wales, Cardiff lecture notes on Deadlock recovery
(http://www.cm.cf.ac.uk/User/O.F.Rana/os/lectureos12/node9.html)
University of Missouri-Kansas city lecture notes on deadlock recovery
(http://www.cstp.umkc.edu/~hines/431/deadlock_rec.html)


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

124
S. Upravljanje memorijom

Uvod

Dio operativnog sistema koji upravlja memorijskom hijerarhijom se naziva upravljac memorijom
(engl. Nemory menager). Njegov zadatak je:

da vodi evidenciju o memoriji, odnosno, da zna koji djelovi memorije su u upotrebi a
akoji nisu
da alocira memoriju procesima kad to oni zahtjevaju ili je oslobodi ako oni zavrse sa
izvodenjem
i da upravlja izbacivanjima cijelih procesa iz memorije i njihovim vracanjem u
slucajevima kad je memorija mala da bi drzala sve procese.

Sistemi za upravljanje memorije mogu se podjeliti u dvije klase:

one koje premjestaju procese iz memorije na disk i obrnuto (swapping and paging)
one koje to ne rade (jednostavniji za upotrebu)

Ciljevi upravljanja memorijom

Da se ucini efektivnim koriscenje raspolozive memorije
o Osigurava povecanje nivoa konkurentnosti
o Obezbjeduje visoko iskoriscenje
o Nekada to nije vazno u sistemima gdje je memorija jeftina ali je vrlo vazno
kod malih, prenosivih sistema, baterijski pokrenutih kao sto je PalmPilot.
Podrska memorijskoj paradigmi se koristi u programskim jezicima
o Svaki programski jezik ima razlicit pogled na memoriju
o Fortran nema dinamicku memoriju i moze da je trazi samo na pocetku
o Java ima razrijeseno automatsko ciscenje memorije (engl. garbage collection)
Sigurnost i robusnost
o Bez obzira na greske u memoriji mogu se greske minimizirati, na primjer,
drzanjem razlicitih procesa u razlicitim adresnim prostorima.

Povezivanje instrukcija i podataka u memoriji

Povezivanje instrukcija i podataka u memoriji preko adresa moze se desiti u tri razlicite faze:

1. Za vrijeme kompiliranja (compile-time): Ako je memorijska lokacija poznata a priori
onda se moze generisati apsolutni kod koji ce biti na toj lokaciji. Kod se mora ponovno
kopilirati ako se pocetna lokacija promjeni.

2. Za vrijeme punjenja (Load time): U ovom slucaju mora se generisati relokatibilni kod
ako memorijska lokacija nije poznata za vrijeme kompiliranja.

3. Za vrijeme izvrsenja (Execution time): U ovom slucaju se povezivanje instrukcija sa
podacima odlaze do vremena izvrsenja ako proces moze biti premjestan u toku
njegovog izvrsenja iz jednog memorijskog segmenta u drugi. U ovom slucaju potrebna
je hardverska pomoc za mapiranje adresa (t.j. bazni i granicni registri).

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

125
Dinamicko punjenje:

Rutine se ne pune u memoriju sve dok ne budu pozvane, cime se postize bolje
iskoriscenje memoriskog prostora.
To znaci da rutine koje nikad ne budu prozvane nece se nikad ni napuniti u
memoriju.
Ova osobina je korisna uslucaju kada je ogroman dio koda potreban samo u
nefrekventnim slucajevima.
Ne zahtjeva se posebna pomoc operativnog sistema i implementira se se kroz fazu
projektovanja programa.

Dinamicko povezivanje:
Povezivanje je odlozeno do vremena izvrsavanja programa.
U ovom slucaju mali dio koda naznav "stub" se koristi da locira odgovarajuce
bibliotetske rutine moje su rezidentne u memoriji.
"Stub" zamjenjuje sam sebe sa adresama rutine i na taj nacin izvrsava rutinu.
Operacioni sistem bi trebao da kontrolise da li je rutina u adresnom prostoru
procesa

Logicki - Fizicki adresni prostor

Koncept logickog adresnog prostora koji je ogranicen na poseban fizicki adresni prostor
je osnovni za korektno upravljanje memorijom.
Logicke adrese - generisane od strane CPU; zovu se jos virtualne adrese
Fizicke adrese - to su adrese koje vidi jedinica za upravljenje memorijom.

Logicke i fizicke adrese su iste u semama adresiranja compile-time i load-time. ali
logicke(virtualne) i fizicke adrese se razlikuju u adresnim shemama za vrijeme
izvrsavanja programa.

Jedinica za upravljanje memorijom {Memory menagement unit - MMU)

Predstavlja hardverski uredjaj koji prevodi, kaze se mapira, virtuelne u fizicke adrese.
U shemi NNU, vrijednost u relokatibilnom registru se dodaje na svaku adresu
generisanu od strane korisnickog procesa u trenutku kad se sanje u memoriju.
Korisnicki program radi sa logickim adresama i nikada ne vidi prave fizicke adrese.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

126
Overley - i

Kod ove tehnike u memoriji se drze samo one instrukcije i podaci koji su potrebni
u svakom trenutku.
Koristi se kada je proces veci od memorije alocirane za njega.
!mplementira se od strane korisnika i ne treba posebna pomoc od operativnog
sistema.
Projektovanje overley struktura programa je veoma kompleksno i prepusteno
programeru koji poznaje kod.



Swapping

Proces moze biti izbacen iz memorije privremeno na perifernu memoriju a onda
vracen u memoriju da bi nastavio izvrsenje.
Ova periferna memorija brzi disk dovoljno velik da prihvati kopije svih memorijskih
procesa (memoriske slike - memory images) za sve korisnike. On mora obezbjediti i
direktan pristup ovim memorisjskim slikama radi brzine i zelje da se nastavi izvrsenje
procesa.
Proces zapisa memoriske slike na perifernu memoriju se zove swap-out a proces
dovlacenja memorijske slike sa diska u memriju radi ponovnog aktiviranja procesa se
zove swap-in.
Roll-out, roll-in predstavlja swapping varijantu koriscenu za algoritme rasporedjivanja
bazirane na prioritetu, t.j. proces sa nizim prioritetom se izbacuje na perifernu
memoriju da bi proces sa visim prioritetom mogao biti napunjen i izvrsen.
Osnovni dio vremena koje se trosi na izbacivanje procesa je vrijeme prenosa koda.
Ukupno vrijeme prenosa koda je direktno proporcionalno velicini memorijske slike
koja je izbacena.
Nodifikovane verzije swapping-a se nalaze u mnogim sistemima, UN!X-u i NS
Windows-ima.
Tabela simbola - 20K
Zajednike rutine - 30 K
Overley driver - 20 K
Prolaz 1 - 70 K
Prolaz 2 - 56 K
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

127

Sematski prikaz swap operacija

Kontinualna alokacija memorije

Monoprogramiranje

Kod ove alokacije memorije centralna memorija je obicno podjeljena u dva dijela:
rezidentni operacioni sistem, obicno drzan u niskoj memoriji sa tabelom interrupt
vektora
korisnicki procesi obicno drzani u visoj memoriji.
Alokacija jedne particije:
Shema relokacionih registara se koristi da zastiti korisnicke procese jedan od
drugog, i od promjene koda i podataka operacionog sistema.
Relokaciono registar sadrzi vrijednost najmanje fizicke adrese. Granicni
registar sadrzi opseg logickih adresa - svaka logicka adresa mora biti manja
nego granicni registar.

Multiprogramiranje sa statickim particijama

Kod kontinualne alokacije memorije sa visestrukim particijama
(multiprogramiranje)
Dolazi do smjestanja procesa u memoriju u praznom prostoru memorije koja
moze prihvatiti dati proces.
Pri punjenju memorije na ovaj nacin dolazi do stvaranja praznih prostora u
kojih moze biti vise u memoriji.
Operacioni sistem odrzava informacije o alociranim particijama i slobodnim
particijama (praznim prostorima u memoriji).


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

128
Multiprogramiranje sa dinamickim particijama

Pokusaj da se odrzi slobodna memorija u velikim djelovima
Alocira se samo sto je potrebno za proces
Po zavrsetku proccesa dolazi do oslobodanja memorije i njenjog
sjedinjavanja
Dijeljenje procesa i sjedinjenje memorijskih dijelova trosi procesorsko vrijeme

Ovaj pristup moze voditi malim djelovima memorije koji su toliko mali da mogu zadovoljiti svaki
zahtjev. Ovaj tip gubitka memorije se naziva eksternom fragmentacijom. Rijesenje je da se
memorija drzi u vecim dijelovima nego u manjim.




Podjela tehnika za alokaciju memorije

-
Naziv alokacione tehnike Tip alokacionog djela Relacija programa prema
alokacionom djelu
Fiksne particije
jednake velicine
nejednake velicine

Uvijek kontinualne
Dinamicke particije varijablilne
Segmentacija varijabilne
Stranicenje Djelovi fiksne velicine


Cijeli program napunjen u
memoriju

Preklapanje (engl.
Overlay)

veliki djelovi koda definisani od
strane korisnika
virtualna memorija
segmentacija
stranicenje

Promjenljive velicine
Fiksne velicine

Program napunjen
parcijalno u memoriji

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

129
Upravljanje slobodnim prostorom u memoriji

Upravljanje slobodnim prostorom u memoriji (engl. Free space menagement) se implementira
kao apstraktni tip podataka nad kojim se realizuju dvije operacije: alociraj i dealociraj memoriju.
Tri implementacije ovog apstraktnog tipa podataka su: bit mape, liste slobodnih blokova i Buudy
sistem. U nastavku za svaku implementaciju razmotrimo koriscene structure podataka i
algoritme za implementaciju funkcija alociraj i dealociraj. S respektom na perfromase,
parametric su prostor i vrijeme. Prostor znaci fragmentaciju (internu, eksternu i sistemsku) pri
cemu sistemska znaci prostor koji se trosi sa strukturama podataka za alociranje slobodnog
prostora. vrijeme znaci kod izvrsavanja operacija alociraj i dealociraj.

Upravljanje memorijom sa mapama bita

Postoje dvije metode sa kojima se upravlja slobodnim, odnosno zauzetim, prostorom u
memoriji. To su mape bita i liste.

Kod upravljanja meorijom sa mapama bita, memorija je podjeljena u djelove odredene velicine
(od nekoliko rijeci do nekoliko kilobita). Svaki od dijelova se predstavlja bitom u mapi bitova
tako da vrijednost 0 predstavlja prazan dio memorije dok 1 predstavlja popunjen dio memorije.

velicina alokacione jedinice je vazno pitanje kod projektovanja sistema za upravljanje
memorijom. Ako je alokaciona jedinica mala onda se dosta memorije koristi za njeno formiranje
( za alokacionu jedinicu od + bajta, 32 bita ce zahtjevati samo jedan bit u mapi, dok 32*n bita
ce zahtijevati mapu bita velicine 1f33 memorije). Ako se alokaciona jedinica izabere velikom,
onda ce mapa bita biti manja ali ce doci do znatnijeg gubljenja memorije u poslednjoj
alokacionoj jedinice kod punjenja procesa ako velicina procesa nije umnozak alokacionih
jedinica, sto je cest slucaj).

Osnovni problem kod ove tehnike je dovlacenje k jedinica procesa u memoriju pri cemu
upravljac memorije mora pretrazivati mapu bita da bi nasao k susjednih jedinica u mapi bita.
Ovaj process moze biti veoma spor sto predstavlja osnovnu manu kod koriscenja ove tehnike.


Upravljanje memorijom sa ulancanim listama

Drugi nacin je lista, naznava lista slobodnih blokova, sortirana po adresama sa po jednim
elementom po slobodnom djelu memorije specificiran sa pocetmom adresom i velicinom. Zato
sto se broj elemenata liste mjenja najbolje je implementirati ovakvu listu preko pokazivaca. Kod
ove liste, alokaciona jedinica je jedan bajt tako da nema interne fragmentacije. Sistemska
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

130
fragmentacija je obicno mala zato sto ne postoji mnogo elemenata liste. Noze postojati eksterna
fragmentacija.

Operacija alociranja podrazumjeva linearno pretrazivanje liste. Kao i u slucaju fiksnih particija,
pravila za izbor djela memorije koji ce se koristiti kod alokacije mogu ukljuciti jednu od metodan
navedenu u sljedecem poglavlju (FF, BF, WF i QF). Ako je velicina procesa jednaka velicini
slobodnog prostora onda se samo pobrise element liste. U suprotnom element liste ostaje u listi
i mjenja mu se pocetna adresa i velicina.

Operacija dealokacije ukljucuje dva koraka. Prvo, se kreira element liste sa pocetnom adresom i
velicinom procesa. Onda se pretrazuje lista slobodnih blokova da bi se naslo izmedu koja dva
elementa liste je smjesten novi element. Drugo, novi element je mozda moguce spojiti sa
jednim elementom koji se nalazi prije ili poslije datog elementa. Nekada je novi slobodni prostor
koji nastaje dealokacijom procesa moguce spojiti sa jednim elementom, recimo predhodnim a
nekada sa dva elementa liste slobodnih blokova i na taj nacin tri elementa mogu biti spojena u
jedan element.

Dinamicke alokacije prostora

Kako se moze rijesiti problem alokacije memorije: moguca su tri nacina smjestanja procesa u
memoriju odnosno u slobodni prostor u memoriji.

Prvo poklapanje {engl. first-fit) - lista raspolozivog prostora se odrzava u
neuredenoj listi. Prvi raspolozivi blok koji moze zadovoljiti zahtjev se koristi.
Neiskorisceni dio se dodaje na kraj liste. veliki djelovi memorije se nagomilavaju na kraju
liste zato sto im se cesto pristupa iduci od vrha.
Najbolje poklapanje {engl. best fit) - Lista se odrzava sortiranom od najmanjeg
(glava liste) do najveceg (rep liste). Prvi najmanji blok koji moze zadovoljiti zahtjev se
koristi. Ostatak se dodaje u listu na odgovarajucu poziciju. Ovo moze dovesti do
stvaranja mnogo malih djelova memorije koja ne moze zadovoljiti niti jedan zahtjev.
Tehnika je sporija jer lista mora biti sortirana a i linearno se pretrazuje od pocetka liste
svaki put.
Najgore poklapanje {engl. worst fit) - Lista je sortirana od najveceg (pocetak liste)
do najmanjeg (kraj liste). Alokacija se vrsi uvijek na pocetku liste tako da nema
pretrazivanja. Ostatak memorijskog prostora se dodaje na odgovarajuce mjesto u listi a
da ostane uredena. Pristup omogucava vracanje velikih djelova memorije u listu i nadu
da taj dio moze dalje biti iskoriscen. Empirijske studije nisu pokazale prednost kod ove
tehnike ako su opterecenja velika.
Brzo poklapanje {engl. quick fit) - odrzava posebne liste za neke uobicajene velicine
memorije koje se zahtijevaju. U zavisnosti potrbne velicine samo se pretrazuje lista koja
najbolje" zadovoljava zahtijev.

Niti jedan pristup nije najbolji u svim prilikama. U praksi, first-fit se koristi zato sto je
jednostavan za implementaciju i ne trosi vrijeme na sortiranje. U praksi poklapanje se nalazi
brzo uprkos cinjenici da je lista nesortirana. First Fit i Best Fit su bolji algoritmi od Worst Fit u
smislu smanjenog vremena pretrazivanja i koriscenju prostora.

Buddy sistem

Jasno je da lista slobodnih blokova treba da bude sortirana inace ce biti tesko da se detektuje
kada treba napraviti spajanje dva susjedna slobodna prostora u jedan. Sortiranje liste slobodnih
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

131
blokova po adresama znaci da pretrazivanje algoritmom best-fit kod alociranja djela memorije
jer treba da pristupimo svakom elementu liste. Ako se lista slobodnih blokova uredi po
velicinama i tada pretrazivanje sa algoritmom best-fit treba pristupiti svakom elementu liste.
Pretrazivanje liste slobodnih blokova je brze ako se koristi vise lista slobodnih blokova razlicitih
velicina blokova. Na taj nacin ovim algoritmom je moguce pristupiti onoj listi slobodnih blokova
koja bi mogla sadrzavati slobodan prostor sa najboljim poklapanjem i na taj nacin eliminisati
ostale liste slobodnih blokova.

Buddy sistem predstavlja pristup kojim se pokusava kombinovati karakteristike spajanja liste
slobodnih blokova sortirane po adresama za brzo pretrazivanje koja ima vise listi slobodnih
blokova sortiranih po velicini. Kod ovog sistema posebna lista slobodnih blokova sortiranih po
adresama koristi kao adrese stepen broja 2. Operacija alociranja memorije pretrazuje listu
slobodnig blokova sa velicinom jednakom bar stepenu 2. Ako ta lista nije prazna onda se alocira
memorijski prostor u listi. Ako je ta lista prazna, ide se na listu sa sljedecim stepenom od 2.
Opraciju ponavljaj dok ne nades listu koja ce zadovoljiti zahtjev za alokacijom zeljenog djela
memorije.

Primjer: Proces za upravljanje memorijom (engl. Nemory menager) odrzava liste slobodnih
blokova velicina 1,2,+,8,16 i sve ukupne velicine memorije. U primjeru sa 1Nb memorijom
postojace 21 lista slobodnih blokova iste velicine. U pocetku cijela memorija je prazna i postoji
samo jedna jedan slobodni prostor od 1 Nb. Druhe liste su prazne. Pocetna konfiguracija je
prikazana na slici:

0 128 256K 38+K 512K 6+0K 768K 896K 1N
-------------+-------------+-------------+-------------+-------------+-------------+-------------+-------------+
Pocetak { {
{--------------------------------------------------------------------------------------------------------------------{
Zhtjev 70k { A { 128 { 256 { 512 {
{--------------------------------------------------------------------------------------------------------------------{
Zahtjev 35k { A { B { 6+ { 256 { 512 {
{--------------------------------------------------------------------------------------------------------------------{
Zahtjev 80k { A { B { 6+ { C { 128 { 512 {
{--------------------------------------------------------------------------------------------------------------------{
A zavrsio { 128 { B { 6+ { C { 128 { 512 {
{--------------------------------------------------------------------------------------------------------------------{
zahtjev 60k { 128 { B { D { C { 128 { 512 {
{--------------------------------------------------------------------------------------------------------------------{
B zavrsio { 128 { 6+ { D { C { 128 { 512 {
{--------------------------------------------------------------------------------------------------------------------{
D zavrsio { 256 { C { 128 { 512 {
{--------------------------------------------------------------------------------------------------------------------{
C zavrsio { 102+ {
{--------------------------------------------------------------------------------------------------------------------{

Kada dode zahtjev da se ubaci process od 70 K a imamo cijelu memoriju od 1N, tada se taj
slobodni prostor djeli na dva dijela ponavljauci operaciju sve dok dio ne odgovara trazenom
djelu, u ovom slucaju 128K koji je dovoljan da se smjesti process od 70K. Sljedeci process dolazi
sa zahtjevom od 35K za memorijom. Kako nam treba za njega 6+K onda se prazan prostor od
128K djeli na dva djela i jedan dio se alocira za dati process. Slicno se alocira slijedeci procesa
sa 80K. Zatim process A zavrsava izvodenje i oslobada blok od 128K. Za slijedeci modul od 60K
ima slobodan blok na adresi 192K. Zatim se zavrsava izvodenje procesa B i on oslobada blok od
6+K. Blok od 128K i blok od 6+K se ne mogu spojiti jer to ne predstavlja vbelicinu koja je
rezultat stepena 2. Pri zavrsetku procesa D nastajanje spajanje dvije supljine od 6+K sa jednom
od 128K cineci na taj nacin supljinu od 256K.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

132
Primjetimo da je blok za process A koji je veliki 70K zauzeo cijeli blok od 128K. Preostalih 58K se
ne moze koristiti i ovaj slucaj se naziva internom fragmentacijom. Eksterna fragmentacija je
slucaj kada postoji jedan regularan prazan prostor koji se ne moze iskoristiti ili se za duzi period
ne moze koristiti(zbog svoje velicine - isuvise mali da bi semogao iskoristiti).

Fragmentacija

Fragmentacija je postupak podjele memorije u sitne djelove (slobodne prostore). Razlikujemo
eksternu i internu fragmentaciju.

Eksterna fragmentacija - postoji slobodni memorijski prostor koji moze zadovoljiti
zahtjev za alokacijom memorije ali nije kontinualan (u jednom komadu).
!nterna fragmentacija se pojavljuje kada je alocirana memorija znacajno veca od
zahtjevane memorije. Ova velicina je interna u memorijskoj particiji i ne moze se
koristiti.
Eksterna fragmentacija se moze redukovati sa sabijanjem slobodnih djelova
memorije koji se zove kompakcija.
U ovom slucaju se slobodni memorijski prostori se sabijaju tako da dolazi do
formiranja jednog velikog bloka slobodne meorije.
Kompakcija je moguca samo ako je relokacija dinamicka i izvodi se u
vremenu izvrsenja procesa.
Kod ulazno izlaznih problema proces se zadrzava u memoriji dok god ima
aktivne ulazno izlazne operacije.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

133
Napredne tehnike alokacije memorje

Hardver i operativni sistem medusobno saraduju da bi osigurali preslikavanje adresa iz virualnog
adresnog prostora u fizicki adresni prostor. Ovo prelikavanje moze biti vidljivo korisnickom
procesu sa minimalnim utjecajem na performanse.

Postoje dvije razlicite strategije: stranicenje i segmentiranje. Stranicenje djeli adresni prostor
procesa u jednake velicine koje se zovu stranice. Segmentacija djeli memoriju u nejednake
jedinice koje mogu imati velicinu znatno vecu. Ove dvije ideje mogu biti kombinirane. !z
prakticnih razloga stranicenje se lakse implementira nego segmentiranje.

Stranicenje

1. Podjeli se fizicka memorija u jednake velicine memorije koji se zovu stranicni okviri
(engl. page frame). velicina okvira bi trebala da bude jednaka broju stepenovanom
sa 2 zato sto poboljsava performanse podrzane hardverom (od 512 bajta do 6+ KB).
2. Podjeli logicku memoriju procesa u jedinice nazvane stranice. Stranice moraju biti
iste velicine kao memorijski okviri.
3. Definisi preslikavanje iz logickog adresnog prostora u fizicki adresni prostor.
+. Tehnika alokacije memorije stranicenjem (engl paging) omogucuje da logicki adresni
prostor jednog procesa moze biti ne kontinulan, sto znaci da proces alocira memoriju
gdje god je to moguce.
5. Da bi pokrenuli jedan program koji ima n stranica potrebno je pronaci n slobodnih
okvira i napuniti program.
6. Za svaki process formira se tabela stranica preko koje se definise preslikavanje
logickih u fizicke adrese

Preslikavanje mora biti brzo i jednostavno. Tipicno se to radi preko tabele.

virtualna adresa se dijeli na dva dijela pri cemu prvi dio predstavlja broj stranice a drugi dio
pomjeraj koji definise pomjeraj unutar date stranice. Na primjeru navedenom ispod, prikazana
je virtualna adresa racunara sa 32 bitnim adresiranjem pri cemu prvih 20 bita odreduje broj
stranice a zadnjih 12 bita odreduje pomjeraj (engl. offset), odnosno velicinu stranice. Sa
pomjerajem se specificira svaka adresa unutar stranice, u ovom primjeru stranica je jednaka +
KB (2
12
)

Koraci kod prevodenja adresa
1. Podjeli se virtualna adresa
2. Broj stranice indeksira tabelu u kojoj se nalazi broj okvira fizicke memorije.
3. Spaja se broj memorijskog okvira sa pomjerajem da bi se proizvela fizicka adresa.
+. Pravi se pristup fizickoj memoriji

Preslikavanje iz virtualnih adresa u fizicke adrese

Ovdje postoji tabela preslikavanja nazvana tabelom stranica koja postoji u fizickoj memoriji.
Svaki adresni prostor se nezavisno preslikava unutar adresnog prostora procesa. Koraci od 1 do
+ se obicno izvrsavaju u hardveru iz razloga povecanja performansi jer prevodenje adresa na
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

134
softverski nacin mogla bi srusiti performanse sistema. Korak 2 je interesantan a drugi su
trivijalni.
Shema prevodjenja adresa


Adresa koju generise CPU se djeli na:
Broj stranice p (Page number) koji se koristi kao indeks u tabelu stranica koja
sadrzi bazne adrese svake stranice u fizickoj memoriji.
Pojeraj unutar stranice d (Page offset) - koji u kombinaciji sa baznom adresom
definise fizicku
memorijsku adresu kojoj se pristupa.

Slika prevodenja adresa bez koriscenja TLB-a


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

135
Tabela stranica

Tabela stranica sluzi za preslikavanja logickih adresa u fizicke u toku izvodenja programa.
Osnovne osobenosti su date u nastavku:

Tabela stranica se cuva u glavnoj memoriji.
Na pocetak tabele stranica pokazuje bazni registar na tabelu stranica PTBR (Page-
table base register).
velicinu tabele stranica odreduje registar duzine tabele stranica PTLR (Page-table
length register).
U ovoj semi alociranja memorije svaki pristup podatkufinstrukciji zahtjeva dva
memorijska pristupa, jedan za tabelu stranica i jedan za podatakfinstrukciju.
Problem dvostrukog pristupa memoriji moze biti rjesen upotrebom specijalnig
hardverskog kesa za brzo pretrazivanje koji se zove pridruzeni registri (associative
registers ili translation look-aside buffers -TLBs)

Osnovna pitanja su:

Jedna po procesu ili za cijeli sistem?
Da li je tabela stranica neprikladna? Tabele stranica sa jednim nivoom su vrlo velike i
zahtjevaju veliki iznos kontinualne memorije. Tabele stranica sa visestrukim nivoima
zahtjevaju manje memorije u opstem slucaju, ali mogu povecati broj memorijskih
pristupa. Paradoksno zvuci, tabele stranica sa vise nivoa mogu zauzeti vise prostora
nego proces koji koristi cijelu raspolozivu memoriju.

Tabela stranica sa jednim nivoom

Broj stranice u virtualnoj adresi je indeks u tabelu stranica. Tabela stranica, pored drugih
pokazatelja, sadrzi i fizicku adresu okvira u memoriji.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

136




















Spremnik za prevodenje

Posto se tabela stranica smjesta u fizicku memoriju, pristup tabeli stranica uzrokuje pristup
memoriji tako da i kada se koristi kes prevodenje adresa moze biti veoma skupo. Spremik za
prevodenje je specijalizovana vrsta kesa koja se jos zove TLB (engl. Translation Lookaside
Buffer).

TLB smjesta skoro koristena preslikavanja iz virtualnih u fizicke adrese. On postoji u hardveru i
nije vidljiv od operativnog sistema izuzev da operativni sistem ima mogucnost da ga pobrise i
mozda ponovno napuni. Ovo je potrebno zato sto svaki proces ima svoj vlastiti virtualni adresni
prostor tako da stari sadrzaj TLB-a moze biti nevazeci poslije jedne izmjene procesa. Ako se ne
pobrise TLB tada se pravi greska. Neki TLB cuvaju identifikaciju procesa sa preslikavanjem da bi
se sprijecila potreba za brisanjem.

TLB radi sa brzinom kesa i mnoge arhitekture mogu raditi sa TLB i pretrazivanjem kesa
paralelno.

Sta ako se desi greska kod pretrazivanja TLB-a

Ako se desi greska kod pretrazivanja onda ce se prevodenje adresa obaviti preko tabele stranica
i ovo novo preslikavanje se smjesta u TLB. Na C!SC masinama ovo je uradeno u potpunosti u
hardveru. Tabela se odrzava u hardverski specificnom formatu i vraca adresu obicno u registru.
Na R!SC masinama, azuriranje procesa se radi sa softverom. Operativni sistem je informisan o
gresci kod pretrazivanja TLB-a preko prekida koji generise hardver.

Vrijeme efektivnog pristupa memoriji

Neka je pretrazivanje asocijativnih registara prestavlja a" vremenskih jedinica
Naka je pristup memoriji oznacen sa mp" (recimo, 100 ns).
Procenat pogodka (engl. Hit ratio) predstavlja procenat da se informacije o jednoj
stranici, iz tabele stranica, nadju u TLB-u
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

137
Oznacimo ga sa b".
Efektivno vrijeme pristupa memoriji (EAT - effective access Time) se izracunava

EAT = {1*mp +a)*b + {2*mp+a)*{1-b) = 2*mp + a - b

Za b=80 imamo 0.80*(100+20)+0.20*(2*100+20)=1+0 ns, gdje je a=20, a pristup
memoriji 100 ns.
Za b=98 imamo 0.98* 120+0.02 *220 = 122 ns (gubitak 22 usporenje pristupa memoriji)
vise asocijativnih registara implicira visi hit ratio i manji gubitak performansi u pristupu
memoriji. Broj registara je od 16 do 512 a hit ratio od 80 do 98. Npr. Notorola 68030
(koriscen kod Nacintosh sistema) ima 22 ulaza u TLB, dok !ntel +86 ima 32 registra i veci hit
ratio.

Zastita memorije

Zastita memorije se implementira pridruzivanjem zastitnog bita za svaki okvir.
Za svaki ulaz u tabelu stranica pripisan je jedan bit (vazifnevazi) gdje
vazi indicira da pridruzena stranica je u logickom adresnom prostoru procesa i dakle
je legalna stranica
nevazi indicira da stranica nije u logickom adresnom prostoru procesa.

0 2 v Tabela stranica sa 3 stranice za proces od kojih su dvije u
memoriji a jedna
1 3 v izvan memorije
2 + n

Tabele stranica sa visestrukim nivoima

Najveca mana tabela stranica sa jednim nivoom je njegova velicina. Ona mora sadrzati jedan
ulaz za svaku virtualnu adresu. Ovo predstavlja enormno veliki broj ulaza posebno posmatrajuci
virtualni adresni prostor koji bi mogao biti veci od ikad zahtjevanog. Pogledajmo na ogromnu
supljinu izmedu steka i heap-a: postoji ulaz za svaku nekoriscenu stranicu.
Tabele stranica sa vise nivoa su jedno rijesenje ovog problema. Razmotrimo
u praksi najpopularniji tip ovih tabela stranica, tkz. dvonivoisku tabelu
stranica. Noze se posmatrati kao tabela stranica od tabele stranica. Na taj
nacin moze se podjeliti virtualni adresni prostor u tri djela: direktorij (tabela
stranica 1), broj stranice (tabela stranica 2) i pomjeraj.
Nora se kreirati ulazi za direktorij da se obuhvati nas virtualni adresni
prostor ali ovi ulazi su grublje granulirani. Nanje ulaza moze pokriti cijeli
adresni prostor.

Primjer:
Ako pretpostavimo 32 bitne adrese i 4Kb stranice, 4Gb adresni prostor zauzima minilon
stranica, tanije 2
20
= 1 048 576. Ako je element stranice 4 bajta onda samo stranica zauzima
4Mb. Ova struktura se moe organizovati od dvije stranice, prva koja ima 1024 elementa i
koja se moe zapisati u jednom fizikom okviru i druga, na drugom nivou koja ima milin elemenata. Poto je ova
prva tabela stranica mala, ona bi mogla biti u memoriju cijelo vrijeme dok bi se druga prettraivala samo djelimino,
odnosno 1024 elementa na koji pokazuje prva tabela stranica. Prva tabela stranica se esto naziva i direktorij ili
korjenska tabela stranica i ona ukazuje na drugi nivo. Na ovaj nain se postie da se manji dio stranica pretrauje,
odnosno bre doe do eljene stranice.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

138



Uopste receno, procesi sa rijetkom memorijskom upotrebom cuvaju prostor ali to dovodi do
gubitka vremena. Sada treba napraviti dodatni pristup memoriji da bi izvrsili pretrazivanje
tabele stranica. vazno je napomenuti da ove tabele stranica sa vise nivoa trose vise memorije
nego tabele stranica sa jednim nivoom ako se najvise adresnog prostora koristi.

Organizacija stranicenja na dva nivoa

Na sljedecoj slici je pokazana zavisnost logicke adrese i hijerarhijske organizacije stranica.
Primjetiti da 10 bita sluzi za pristup elemetu korjenske stranice dok drugih 10 bita u logickoj
adresi sluzi za pristup tabeli stranica na drugom nivou i to samo onoj na koju ukazuje element iz
prve tabele.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

139

Primjer stranicenja sa dva nivoa

Logicka adresa (na 32 bitnim masinama sa velicinom stranice od +k) se djeli na:
broj stranice predstavljen sa 20 bita
ofset stranice predstavljen sa 12 bita
Posto je tabela stranica stranicena ( u dva nivoa) broj stranice se dalje djeli na:
10 bitni broj stranice
10 bitni ofset stranice
Dakle, logicka adresa bi izgledala ovako:
gdje je P1 indeks u vanjsku tabelu stranica, p2 je pomjeraj unutar stranice na koju
ukazuje vanjaska stranica.

Shema prevodenja adresa

Shema prevodenja adresa za arhitekturu stranicenja sa dva nivoa izgleda ovako


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

140
Stranicenje sa vise nivoa i performanse

SPARC - 3 nivoa, Notorola 68030 - + nivoa
Posto je svaki nivo smjesten kao posebna tabela u memoriji konvertovanje jedne
logicke adrese u fizicku moze zahtjevati cetiri memorijska pristupa
Kod visestrukog pristupa memoriji kesiranje dozvoljava da performanse ostanu
zadovoljene
Efektivno vrijeme pristupa kod hr=98 i cetiri nivoiske organizacije stranica izgleda
ovako:

efektivno vrijeme pristupa = 0.98 x 120 + 0.02 x 520 = 128 nsec

sto predstavlja 28 usporenje u pristupu memorije.

Druge alternative - Invertovana tabela stranica

Kod invertovane tabele stranica svaki elemet tabele stranica pokazuje ne jedan fizicki okvir u
memoriji a ne na logicku stranicu nekog procesa. Na ovaj nacin tabela stranica zauzima fiksan
prostor u memoriji i proporcionalan je velicini memorije a ne virtualnom adresnom prostoru.

Kako je ovo izvodljivo? Kako translirati viruelne adrese koje su vece od velicine fizicke
memorije? Potpuna tabela stranica se smjesta na disk. Nada to izgleda da ce dovesti do
degradacije u performasama kod transalcije virualnih u fizicke adrese to nije tako. Objasnimo
zasto je to tako.

!nvertovana tabela stranica je globalna struktura, tj. postoji samo jedna u cijelom sistemu. Ona
sadrzi obrnutu translaciju adresa za sve procese. Svaki ulaz u invertovanu tabelu stranica sadrzi
jednu oznaku koja sadrzi identifikaciju procesa i virtualnu adresu za svaku stranicu. !dealno bi
bilo kada bi ovu tabelu mogli smjestiti u asocijativnu memoriju ali kako je nemamo dovoljnom,
za pretrazivanje takve tabele koristicemo hes (engl. hash) algoritme.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

141
Djeljene stranice

Djeljeni kod
Jedna kopija read-only (reentrant) koda se djeli medu procesima (t.j. tekst
editori, kompajleri, widows sistem)
Djeljeni kod se mora pojaviti na istoj lokaciji u logickom adresnom prostoru
svih procesa
Privatni kod i podaci
Svaki proces drzi posebnu kopiju koda i podataka
Stranice za privatni kod i podatke se mogu pojaviti bilo gdje u logickom
adresnom prostoru

Primjer djeljenih stranica




Segmentacija

Segmentacija je tehnika za alokaciju memorije u dijelovima koji variraju znacajno u velicini
nasuprot stranici koja ima fiksnu velicinu. Posto se velicine segmenta biraju preko prevodioca
jezika visokog nivoa, interna fragmentacija se reducira. Naravno, posto su segmenti razliciti u
velicini postoji problem sa eksternom fragmentacijom i sabijanjem koda o kojoj smo govori
kod alokacije memorije sa varijabilnim particijama. !z ovih razloga, izmedu ostalih, moze se
iznaci da mada je segmentacija podrzana sa popularnim procesorima kao sto su oni iz familije
x86, stranicenje se cesce koristi kod procesora koji ih podrzavaju ukljucujuci i one iz familije
x86.

Kada programer razmislja o memoriji on je vidi kao skup razlicitih objekata a ne kao linearnu
listu bajta ili stranica. Ovi objekti, nasuprot stranicama, variraju u velicini. Ovakav pogled na
memoriju segmentacija zeli da podrzi.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

142
Program moze biti podijeljen u segmente za kod, stek i heap. Pored toga posebni segmenti
mogu biti kreirani za strukture staticki alociranih podataka takve kao heap-ovi i nizovi. Svaki od
ovih segmenata je potrebne velicine tako da nema interne fragmentacije.
Zatim se ovi segmenti numeriraju. Nemorijska adresa se sastoji od para koji sacinjavaju broj
segmenta i pomjeraj unutar segmenta.
Tabela segmenata
Kao u slucaju stranicenja, potrebno je osigurati mehanizam za prevodenje adresa iz logickog
adresnog prostora u fizicki adresni prostor. Ovaj mehanizam predstavlja tabelu segmenata.

Posto se segmenti definiraju sa prevodiocem, tabela segmenata moze se formirati u toku
procesa povezivanja programskih modula. Tabela sadrzi po jedan ulaz za svaki segment. Pored
toga svaki ulaz sadrzi i adresu pocetka segmenta kao i duzinu segmenta. Posljednja adresa u
segmentu specificirana je kao suma adrese pocetka segmenta i njegove duzine.

Posto svaki program koristi svoj vlastiti virtualni adresni prostor, svaki proces ima svoju tabelu
segmenata. Tabela segmenata za tekuci proces se drzi u memoriji i na nju pokazuju dva
hardverska registra, registar pocetka tabele segmenata (engl. STBR - Segment-table base
registar) i registar duzine tabele segmenta (engl. STLR - Segment-table length register). Kod
nekih arhitektura, ako je tabela segmenata dovoljna mala, moze biti smjestena u potpunosti u
registre procesora.

Koristenje tabele segmenata

Kada se adresa dobije kao par, hardver je prevodi u fizicku adresu koristeci tabelu segmenata.
Hardver kontrolira ulaz u tabelu segmenata specificiran sa brojem segmenta i nalazi osnovnu
fizicku adresu segmenta. Ukoliko je broj segmenta izvan granica segmenta onda se adresa
smatra nevazecom. Zatim se kontrolira pomjeraj unutar segmenta i ako je pomjeraj unutar
segmenta veci od duzine segmenta, adresa se smatra nevazecom. Ako je adresa vazeca onda se
ona prevodi u fizicku adresu koja se izracunava kao suma adrese pocetka segmenta i pomjeraja.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

143
Zastita i djeljenje
Posto segmenti predstavljaju logicke jedinice programa oni su pogodni za dijeljenje. Na primjer,
logicno je da se segment koda dijeli izmedu nekoliko procesa. Odgovarajuce zastite i sigurnost
mogu se izvesti dodavanjem ovih informacija u tabelu segmenata.

Kada se staticki alocirani nizovi i druge kompleksne strukture se nalaze u sopstvenom
segmentu onda kontrola granica gotovo da ne postoji. Ovo se desava kao prirodna posljedica
pretrazivanja tabele segmenata i ne zahtjeva dodatne instrukcije.
Fragmentacija
Nada segmentacija eliminira internu fragmentaciju ali je zastupljena znacajna eksterna
fragmentacija. Noguce je da postoji dovoljno memorije a li je podijeljena u male dijelove sa
postojecim segmentima i kao takva postaje nekorisna i mnogi zahtjevi se ne mogu ispuniti.

Utjecaj na eksternu fragmentaciju zavisi od srednje velicine segmenta. Ako su segmenti mali
onda se oni mogu uklopiti bolje u raspolozivi memorijski prostor. Ukoliko su segmenti veliki
postoji veliki izgledi da ce raspolozivi prostor biti podijeljen u slobodne blokove koji su isuvise
mali da bi se mogli iskoristiti.

Kao sto je diskutovano u kontekstu multiprogramiranja sa varijabilnim particijama, smjestanje i
strategije zamjene mogu uticati na fragmentaciju. U zavisnosti od koristenih pravila kod
struktura podataka i njihovog odrzavanja moze znacajno doprinijeti povecanju internog rada
procesa za upravljanje memorijom.

Sistemi za sabijanje su u stanju da relociraju segmente postojecih procesa cineci ih
kontinuiranim. Ovaj pristup je izuzetno skup jer zahtjeva znacajna kopiranja iz jednog dijela
memorije u drugi. Ovo zahtjeva da postoji runtime loader koji omogucava ove funkcije.
Podrzavanje virualnog adresnog prostora vecim od fizicke memorije

Podrska virtualnog adresnog prostora koji je veci od fizickog adresnog prostora zahtjeva
dodatnu memoriju (engl. backing store) koja se smjesta na brzom perifernom uredaju kao sto je
disk. Ova dodatna memorija je dovoljno velika da moze drzati sve podatke koji bi se mogli
nalaziti u vitualnom adresnom prostoru.

Kada posmatramo memoriju iz ove perspektive, uocavamo da manji, brzi i skuplji memorijski
uredaji se koriste kao kes za vece, sporije i jeftine memorijske uredaje. Ovaj model memorijskih
sistema je poznat pod nazivom memorijska hijerarhija.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

144

Segmentacija sa stranicenjem - MULTICS

NULT!CS sistem rjesava problem eksterne fragmentacije i znacajno vrijeme
pretrazivanja sa stranicenjem segmenata
Rjesenje se razlikuje od ciste segmentacije u tome da tabela segmenata ne sadrzi
adresu pocetka segmenta, nego adresu tabele stranica za dati segment.
Segment 18 bita, 16 bita ofset, rijec je 36 bita ( s1,s2,d1,d2 (8,10,6,10))

S1 S2 D1 D2
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

145
Segmentacija sa stranicenjem - Intel 3S6 - OSJ2

Kao sto je pokazano na slijedecem dijagramu, !ntel 386 koristi segmentaciju sa
stranicenjem kao tehniku za upravljanje memorijom sa semom stranicenje na dva
nivoa.
Naksimalan broj segmenta po procesu je 16K i svaki segment moze biti veliki do
+Gb. velicina stranice je +Kb. Logicki adresni prostor procesa je podjeljen u dvije
particije (prva, sa do 8K segmenata je privatna za dati proces a druga je djeljiva od
strane svih drugih procesa).
!nformacije o prvoj particiji se drze u LDT - Local Descriptor Table a informacije o
drugoj particiji se cuvaju u GDT - Global Descriptor Table. Element tabele je 8 bajta i
detaljno specificira informacije o datom segmentu.
Logicka adresa predstavljena je parom (selector,ofset) gdje je selector 16 bitni broj i
sastoji se od (s,g,p) (13,1,2) gdje je s oznacava broj segmenta, g oznacava u kojoj
je particiji segment, LDT ili GDT a p predstavlja bite zastite. Ofset je 32 bitni broj
koji predstavlja lokaciju bajta unutar specificiranog segmenta.
Fizicka adresa se formira na slijedeci nacin: segmentni registri pokazuju na
odgovarajuce ulaze u LDT i GDT. Pocetna adresa segmenta i njegova duzina se
koriste da se formira fizicka adresa. velicina se koristi da se kontrolise validnost
adrese. Ako adresa nije validna desice se prekid (trap) i bice pozvan operacioni
sistem. Ako je adresa vazeca onda se vrijednost ofseta dodaje na vrijednost pocetne
adrese segmenta formirajuci pocetnu fizicku adresu.
Svaki segment je stranicen i stranica je velika + K. Jedna tabela stranica moze
sadrzati milion ulaza. Posto adresa zauzima + bajta to znaci da bi svaki procesa za
svoju tabelu trebao do + Nb memorije. Jasno je da je ovo veliko opterecenje za
sistem i u tom smislu se koristi 2 nivo-ska organizacija tabele stranica.
Linearna adresa je podjeljena na broj stranice (20 bita) i ofset (12 bita). S obzirom
da se koriste dva nivoa u stranicenju to je ova nadalje podjeljena na stranice p1(10
bita) i p2(10 bita) tako da se logicka adresa sada izgleda ovako:

Broj stranice ofset stranice
P1 (10
bita)
P2(10
bita)
D
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

146
Zbog efikasnosti tabela stranica mnoze biti swap-ovana na disk i po potrebi vracena.


Poredenje strategija za upravljanje memorijom
Nogucnosti hardvera
- registri koji pokazuju na osnovicu segmenta i ofset kako bi se prevodenje
adresa odvijalo hardverski
Performase - kompleksnost algoritama za upravljanje memorijom
Fragmentacija -
Relokacija, Swapping, Djeljenje, Zastita
Zadaci:

8.1 Objasnite razliku izmedu logicke i fizicke adrese?

Odgovor: Logicke adrese se generisu od strane korisnickih programa i relativne su od lokacije 0
u memoriji.
Fizicke adrese su stvarne adrese koriscene da se preuzmu i smjeste podaci u memoriju.

8.2 Objasnite razliku izmedu interne i eksterne fragmentacije.

Odgovor: !nterna fragmentacija je dio u segmentu ili stranici koji se ne koristi od stane procesa
koji zauzima taj segment ili stranicu. Dakle prostor nije raspoloziv za upotrebu od strane sistema
dok proces ne zavrsi svoje izvodenje i dok se dati segment ili stranica ne oslobode.

8.3 Objasnite slijedece alokacione algoritme:

a) Prvo poklapanje
b) Najbolje poklapanje
c) Najgore poklapanje

Odgovor:
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

147
a) Prvo poklapanje: pretrazuje se lista raspolozive memorije i alocira prvi blok koji je
dovoljno velik da zadovoljava zahtjev.
b) Najbolje poklapanje: pretrezuje se lista raspolozive memorije i alocira se najmanji od
onih blokova memorije koji su dovoljni za dati zahtjev
c) Najgore poklapanje: Pretrazuje se cijela lista raspolozive memorije i alocira najveci
blok koji zadovoljava zahtijev. Ovim pristupom u tom dijelu nam nakon popunjavanja
ostaje dovoljno veliki blok u koji bi se mogao slijedeci zahtjev realizovati, recimo sa
najboljim poklapanjem.

8.+ Kada se proces izbaci iz memorije on gubi mogucnost da koristi procesor, bar za neko
vrijeme. Opisite drugu situaciju gdje proces gubi mogucnost koriscenja procesora a da procesi
nisu izbaceni iz memorije.

Odgovor: Kad se desi prekid, u tom momentu procesor koristi operacioni sistem (dio za obradu
prekida)

8.5 Date su memorijske paricije od 100K, 200K, 300K i 600K (u redoslijedu). Kako bi svaki od
algoritama smjestio procese od 212K, +17K, 112K i +26K (u redoslijedu). Koji algoritam
najefikasnije koristi memoriju.

8.6 Razmotrimo sistem gdje program moze biti podjeljen u dva dijela: kod i podatke. Procesor
zna da li je to instrukcija (pa ce vrsiti preuzimanje instukcija) ili podatak (pa ce vrsiti
preuzimanje podatka ili smjestanje podatka). Znaci dva bazna-granicna para registara se
koriste: jedan za instrukcije i jedan za podatke. !nstrukcijski par bazno-granicnih registara je
automatski read-only, tako da programi mogu biti djeljeni medu razlicitim korisnicima.
Prodiskutuj prednosti i mane ovakve seme.


Odgovor: Glavna prednost ovakve seme je to jedan efikasan mehanizam za djeljenje koda i
podataka. Na primjer, samo jedna kopija tekst editora ili kopilera je potrebna da bi se drzala u
memoriji. Druga prednost je zastita koda protiv nenamjernih ili namjernih modifikacija. Jedina
mana je da kod i podaci moraju biti odvojeni i u skladu je sa planom kod generisanja koda od
strane kompiler-a.

8.7 Zasto su velicine stranica uvijek stepen od 2?

8.8 Razmotrimo logicki adresni prostor od osam stranica po 102+ rijeci svaka, mapiranih u
fizicku memoriji od 32 okvira (okvir je jednak velicini stranice)

a) Koliko bita postoji u logickoj adresi?
b) Koliko bita postoji u fizickoj adresi?

Odgovor:
a) Logicka adresa: 13 bita
b) Fizicka adresa: 15 bita

8.9 Zasto je to tako da u sistemu sa stranicenjem, proces ne moze pristupiti memoriji ako nije u
njegovom vlasnistvu? Kako bi operativni sistem mogao dozvoliti pristup drugoj memoriji?
Zasto je to potrebno ili zasto to nije potrebno.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

148
Odgovor: Adresa u sistemu stranicenja je predstavljena brojem logicke stranice i pomjerajem
(ofsetom). Fizicka stranica se nalazi pretrazivanjem tabele bazirane na broju logicke stranice da
bi pronasli broj fizicke stranice. Posto operativni sistem kontrolise pristup ovim tabelama, on
moze ograniciti proces da pristupa samo svojim stranicama. Ne postoji nacin da proces pristupi
stranici koja nije njegova zato sto nije u tabeli stranica tog procesa. Da bi dozvolio takav
pristup, operativni sistem dozvoljava pristup u memoriju koja ne pripada drugim procesima s
namjerom da se taj okvir doda u tabelu stranica procesa koji je zahtjevao. Ovo je korisno kada
dva ili vise procesa treba da razmjene podatke - oni pisu i citaju sa istih fizickih adresa (cije
logicke adrese mogu biti cak i razlicite). Na ovaj nacin se radi efikasan nacin komunikacija
izmedu procesa.

8.10 Razmotrimo sistem stranicenja sa tabelom stranica smjestenih u memoriju.

a) Ako referenciranje memorije uzima 200 nsec, koliko dugo traje referenciranje stranicne
memorije
b) Ako dodamo TLB (pridruzene registre na procesoru) koliko ce biti vrijeme referenciranja
memorije? (Pretpostavimo da se ulazi u tabele nalaze u pridruzenim registrima i
izvrsavaju se za 0 sec, ako se stranica nalazi u njima).

8.11 Koji su efekti ako dozvolimo dva ulaza u tabelu stranica koji bi mogli pokazivati na isti
okvir u memoriji. Opisite kako bi se ovaj efekat mogao iskoristiti da se smanji iznos
potrebnog vremena za kopiranje velikog iznosa memorije sa jednog mjesta na drugo. Kakav
bi bio efekat azuriranja nekih djelova na jednoj stranica na drugu stranicu?

Odgovor: Dozvoljavajuci dva ulaza u tabelu stranica da pokazuju na isti okvir u memoriji
korisnici mogu djeliti kod i podatke. Ako je kod viseulazan (engl. reentrant ) mnogo memorije
moze biti sacuvano djeljenjem velikih programa takvih kao sto su tekst editori, kompileri, sistemi
baza podataka itd. Kopiranje velikog iznosa memorije moze se postici sa efektom dvije tabele
stranica koji pokazuju na iste memorijske lokacije. Nedutim, djeljenje koda koji nije viseulazan
ili podatka znaci da bilo koji korisnik koji ima pristup kodu moze ga modifikovati i to bi se
reflektovalo i na drugi kod koji nije njegov (kopirani na ovaj nacin).

8.12 Zasto se segmentacija i stranicenje ponekad kombinuju u jednu semu?

Odgovor: Segmentacija i stranicenje se cesto kombinuju u cilju da se iskoriste prednosti jednog
i drugog. Segnetirano stranicenje je korisno kad tabela stranica postane prevelika. veliki
kontinualni dio tabele stranica koji se ne korisni moze biti skupljen u jedan ulaz u tabelu
segmenta sa adresom 0 u tabeli stranica. Stranicna segmentacija se koriste kod vrlo velikih
segmenata koji zahtjevaju veliko vrijeme alokacije. Stranicenjem segmenta redukuju se gubitci
memorije zbog eksterne segmentacije cime se pojednostavljuje alokacija.

8.13 Opisite mehanizam sa kojim jedan segment bi mogao pripadati adresnom prostoru dva
razlicita procesa.

Odgovor: Posto su tabele segmenata skupine baznih-granicnih registara, segmenti mogu biti
djeljeni kada su ulazi u tabelu segmenata od dva razlicita procesa pokazuju na istu fizicku
lokaciju. Dvije tabele segmentata moraju imati identicne bazne pokazivace i broj djeljenog
segmenta morao bi biti isti u dva procesa.

8.1+ Objasnite zasto je lakse dijeliti reentrant modul koristeci segmentaciju nego u slucaju
kada se koristi stranicenje?
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

149

Odgovor: Posto je segmentacija bazirana vise na logickoj organizaciji memorije nego na
fizickoj, segmenti bilo koje velicine mogu biti djeljeni sa samo jednim ulazom u tabelu
segmenata za svakog korisnika. Sa stranicenjem, mora postojati vise ulaza u tabelu stranica za
svaku stranicu koja se dijeli.

8.15 Djeljenje segmenata medu procesima ne zahtjevajuci isti broj segmenta je moguce u
dinamicki povezanom sistemu segmentacije.

a) Definisite sistem koji dozvoljava staticko povezivanje i djeljenje segmenata ne
zahtijevajuci da brojevi segmenata budu isti.
b) Definisite semu stanicenja koja dozvoljava da stranice budu djeljene ne zahtijevajuci da
broj stranica bude isti.

Odgovor:
Oba ova problema se svode na program koji je u stanju da referencira i kod i podatke
bez znanja broja segmenta ili stranice pridruzenih ovom adresnom prostoru. NULT!CS rijesava
ovaj problem pridruzujuci cetiri registra svakom procesu. Jedan registar ima adresu tekuceg
programskog segmenta, drugi ima baznu adresu za stek, zatim baznu adresu za globalne
podatke itd. !deja je da sve reference koje moraju biti indirektne kroz registre se mapiraju u
tekuci segment ili broj stranice. !zmjenom ovih registara, isti kod moze se izvrsiti za razlicite
procese bez znanja broja iste stranice ili segmenta.

8.16 Data je slijedeca tabela segmenata:


Segment Pocetak
segmenta
Duzina
0 219 600
1 2300 1+
2 90 100
3 1327 580
+ 1952 96


Koje su fizicke adrese za slijedece logicke adrese:

a) 0,+30
b) 1,10
c) 2,500
d) 3,+00
e) +,112

Odgovor:
a) 219 + +30 = 6+9
b) 2300 + 10 = 2310
c) nelegalna referenca, prekid u operativni sistem
d) 1327 + +00 = 1727
e) nelegalna referenca, prekid u operativni sistem

8.17 Razmotrimo adresnu semu !ntela 80386.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

150

a) Opisite sve korake koji se izvode na !ntel 80386 kod prevodenja logicke adrese u fizicku.
b) Koje su prednosti operativnom sistemu takvog hardvera koji obezbjeduje tako
komplikovan translacioni memorijski hardver?
c) Postoje li nedostatci ovakve seme?

Odgovor:
a) Selector je indeks u tabelu segment descriptor-a. Rezultat segment descriptor-a i
originalni ofset se koriste sa bi nacinili linearni adresni prostor sa dir-om, stranicom i
ofsetom(tabela stranica sa dva nivoa). Dir je indeks u direktorij stranica. !zlaz iz
direktorija stranica izabira tabelu stranica i polje stranice predstavlja indeks u tabelu
stranica. !zlaz iz tabele stranica i ofset predstavlja fizicku adresu.
b) Takav mehanizam za translaciju stranica nudi fleksibilnost koja dozvoljava mnogim
operacionim sistemima da implementiraju njihovu memorijsku semu u hardveru
umjesto da imaju implementacije u hardveru i softveru. Zbog toga sto se izvodi u
hardveru ovakva sema je efikasnija jer je kernel jedostavniji.
c) Translacija adresa moze se izvoditi duze zato sto visestruka pretrazivanja tabela
mogu biti ukljucena. Kes pomaze ali ce postojati dosta slucajeva "miss" kes-a (nema
zeljene tabele u kesu pa se mora dovlaciti u kes)

8.18 U !BNf370, zastita memorije je obezbjedenja koriscenjem kljuceva. Kljuc je +-bitni broj.
Svaki 2Kb blok memorije ima jedinstveni kljuc (kljuc za smjestanje) koji mu je pridruzen.
Procesor ima kljuc pridruzen njemu (zastitni kljuc). Operacija smjestanja je dozvoljena samo
ako su oba kljuca jednaka ili ako je jedan od njih jednak 0. Koja od slijedecih sema za
upravljanjem memorijom bi se mogla koristiti uspjesno sa ovim hardverom?

a) Gola masina
b) Sistem sa jednim korisnikom
c) Nultiprogramiranje sa fiksnim brojem procesa
d) Nultiprogramiranje sa promjenljivim brojem korisnika
e) Stranicenje
f) Segmentacija

Odgovor:
a) Zastita nije potrebna, postavi sistemski kljuc na 0
b) Postavi sistemski kljuc na 0 kad se radi o sistemskom nacinu rada (izvodenja
instrukcija)
c) velicine regiona moraju se fiksirati sa povecanjem od 2 Kb, alocira se kljuc
memorijskim blokovima
d) !sto kao pod c
e) velicine okvira moraju se povecavati za 2 Kb, alocira se kljuc ka stranicama
f) velicina segmenta mora biti povecavana za 2 Kb, alociraju se kljucevi segmentima.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

151
!nformacije na web-u:

Upravljanje memorijom, loader i linker

Nemory Nanagement (11 pages of Nemory Nanagement Descriptions)
http:ffwww.cm.cf.ac.ukfUserfO.F.Ranafosflectureos8flectureos8.html
!ntroduction to Compilers, Translations
http:ffmoonbase.wwc.eduf~aabyanf221_2fPLBOOKfTranslation.html
PC Webopaedia Definition and Links
http:ffwww.pcwebopedia.comfTERNfvfvirtual_memory.html
George Nason University, Department of Computer Science
http:ffcs.gmu.eduf~menascefosbookfvmfP001.html
University of !owa, Department of Computer Science
http:ffwww.cs.uiowa.eduf~jonesfopsysfnotesf07.html
The Center for the New Engineer, tutorial modules
http:ffcne.gmu.edufmodulesfvmfgreenfintro.html

Djeljenje segmenata, dinamicko punjenje i dinamicko povezivanje

Cross Address Space Dynamic Linking
http:ffwww.sun.comfresearchftechrepf1992fabstract-2.html
How To Link A File
http:ffptolemy.eecs.berkeley.edufptolemyclassicfalmagestfdocsfkernfhtmlflinker.fm+.ht
ml
Loading of Dynamic Links http:ffce-
toolkit.crd.ge.comfpapersfgecrdfmtlfmdipftcl9+f03techniq.html

Stranicenje i segmentacija, tabele sa vise nivoa, stranicenje sa segmentacijom

virtual Nemory Tutorial Nap including Nultilevel Page Tables
http:ffcne.gmu.edufmodulesfvmfsubmap.html
Nemory Nanagement: Address Translation
http:ffwww.isi.eduf~govindanfcs+02flecturesfmemmgmt.html
Nore on descriptor registers in 80386 http:ffwww.uni-
tuebingen.defzdvfprojekteflinuxfbooksfkhgfsection2_7_9.html
Nultics and !ntel Paged Segmentation
http:ffhomepages.uel.ac.ukf5628nfsinfpg1~1.html
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

152
Dodatak: Organigram izracunavanja efektivne adrese kod stranicenja sa upotrebom TLB-a
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

153
VIrtuaIna memorIja VIrtuaIna memorIja VIrtuaIna memorIja VIrtuaIna memorIja

Uvod Uvod Uvod Uvod

VIrtuaIna memorIja predstavIja posebnu memorIju koju vIdI korIsnIk I
razIIkuje se od IIzIcke

Samo jedan dIo programa treba da bude u memorIjI da bI se IzvrsIo,
prI cemu se mora cIjeII process napunItI u memorIju prIje pocetka
Izvodenja
LogIckI adresnI prostor moze bItI mnogo vecI od IIzIckog adresnog
prostora, aII I manjI (kod masIna sa 16 bItnIm adresIranjem)
Potrebno je dozvoIItI stranIcama da budu Izbacene na perIIernu
memorIju kao I mogucnost da se vrate (swapp In & out)
VIrtuaIna memorIja moze bItI ImpIementIrana preko
StranIcenja na zahtjev (Demand pagIng)
SegmentacIje na zahtjev (Demand segmentatIon )

StranIcenje na zahtjev StranIcenje na zahtjev StranIcenje na zahtjev StranIcenje na zahtjev

StranIcenje na zahtjev (engI. Demand PagIng) je tehnIka koja obuhvata u sebe


stranIcenja I Izmjenu procesa. U ovom sIucaju jedInIca za prIjenos kod U] je stranIca.
Umjesto da IzbacImo sve stranIce jednog procesa kada se desI Izmjena konteksta mI
odIazemo punjenje I smjestanje bIIo koje stranIce sve dok ona ne postane potrebna
odnosno nepotrebna.

Osnovna Ideja se sastojI u sIIjedecem. Ako pokusamo da prIstupImo vIrtuaInoj adresI
koja se naIazI unutar stranIce onda smo uspjeII joj prIstupItI, aII ako ona ne postojI u
memorIjI onda se desava greska stranIce (engI. page IauIt). Kada se desI greska
stranIce onda tu stranIcu punImo Iz dodatne memorIje. Ako u memorIjI ne postojI
sIobodan okvIr u kojI treba stavItI doIazecu stranIcu onda se neka stranIca zapIsuje u
dodatnu memorIju a na njeno mjesto se dovIacI odgovarajuca stranIca Iz dodatne
memorIje. Ovu stranIcu koju moramo IzbacItI da bI dovukII trazenu stranIcu zovemo
stranIcom "zrtva".

StranIcenje na zahtjev zahtjeva nekoIIko tIpova hardverske podrske:

TransIacIonI baIer (T8) I mehanIzam za prevodenje adresa
UIaze u tabeIu stranIca sa sa odgovarajucIm adresama na dIsku
Mogucnost da se detektuje greska stranIce
nstrukcIje za ponovno pokretanje sIstema

KoracI u radu sa greskom stranIce KoracI u radu sa greskom stranIce KoracI u radu sa greskom stranIce KoracI u radu sa greskom stranIce

1. zaberI zrtvu
2. ZapIsI stranIcu zrtva na dIsk (IzbacIvanje stranIce Iz memorIje na dIsk)
3. CItaj novu stranIcu sa dIska ( ubacIvanje stranIce sa dIska u memorIju)
4. CIscenja, postavIjanja u tabeII stranIca, azurIranje TL8-a



Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

154
Kako se bIra zrtva Kako se bIra zrtva Kako se bIra zrtva Kako se bIra zrtva

Postoje dva prIstupa za Izbor memorIjskIh okvIra:

OkvIrI su gIobaInI resursI, IzaberI bIIo kojI okvIr u memorIjI.
]edan proces ne bI trebao da utIce na drugI tako da moze IzabratI okvIr
unutar svog prostora.
8ez obzIra kako odIucIII mora se IzabratI Izmedu raspoIozIvIh okvIra. Ovaj proces
odIucIvanja se nazIva aIgorItam zamjene.

8It prIsustva stranIce u memorIjI 8It prIsustva stranIce u memorIjI 8It prIsustva stranIce u memorIjI 8It prIsustva stranIce u memorIjI

SvakI uIaz u tabeIu stranIca Ima jedan bIt kojI predstavIja prIsustvo stranIce u
memorIju I to tako da 1 predstavIja prIsustvo stranIce dok 0 oznacava da
data stranIca nIje u memorIjI
nIcIjaIno se bItI u tabeII stranIca postavIjaju na nuIu za sve uIaze.

PrImjer tabeIe stranIca u nekom trenutku


8roj okvIra 8It
F1 1
F2 1
F3 1
F4 0
F5 0
TabeIa stranIca

. U toku prevodenja adresa ako je bIt prIsustva stranIce u memorIjI jednaka
nuII onda se tada desava greska koja se zove "greska stranIce" (page IauIt).



Load M

VM
Tabela
stranica
Greka

Slobdni okviri

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

155
Creska str Creska str Creska str Creska stranIce anIce anIce anIce

. Kad god ne postojI reIerenca na stranIcu tada prvI prIstup stranIcI ce
prourokovatI pozIv operatIvnog sIstema kojI obraduje dovIacenje stranIce u
memorIju (greska stranIce)
. OperatIvnI sIstem gIeda u drugu tabeIu da odIucI da II je taj prIstup
. nevazeca reIerenca I uzrokovace zaustavIjanje Izvrsavanja procesa
. stranIca nIje u memorIjI
. Ako je potrebno dovucI stranIcu tada se trazI u memorIjI prazan okvIr
. ZatIm se premjesta stranIca u datI okvIr
. PostavI se bIt prIsustva stranIce na 1
. zvrsavanje procedure LRU (Ieast recentIy used) (kasnIje pojasnjeno)
. premjestanje bIokova
. Increment]decrement IokacIju

Sta ce se desItI ako ne postojI sIobodan okvIr Sta ce se desItI ako ne postojI sIobodan okvIr Sta ce se desItI ako ne postojI sIobodan okvIr Sta ce se desItI ako ne postojI sIobodan okvIr

Zamjena stranIce - nadI neku stranIcu u memorIjI, aII koja nIje u upotrebI I
IzbacI je Iz memorIje
aIgorItam
perIormanse - potrebno je ImatI aIgorItam cIja ce upotreba rezuItovatI
mInImaInIm brojem gresaka stranIce.
. Neke stranIce mogu bItI donesene u memorIjI nekoIIko puta

PerIormase stranIcenja na zahtjev PerIormase stranIcenja na zahtjev PerIormase stranIcenja na zahtjev PerIormase stranIcenja na zahtjev

ntenzItet greske stranIce 0<=p<=1.0
ako je p=0 Inda nema gresaka stranIce
ako je p=1, onda je svaka reIerenca greska stranIce
EIektIvno vrIjeme prIstupa (EVP)

Evp = (1 Evp = (1 Evp = (1 Evp = (1- -- -p) p) p) p) * ma + p * pIt, * ma + p * pIt, * ma + p * pIt, * ma + p * pIt, gdje je ea - eIektIvno vrIjeme prIstupa

ma - vrIjeme prsItupa IIzIckoj memorIjI
pIt - vrIjeme potrbno za obradu greske stranIce
p - vjerovatnoca da ce se desItI greska stranIce
(1-p) - vjerovatnoca prIstupa memorIjI u raspoIozIvI okvIr.

Kada se desI greska stranIce tada se Izvrsava sIIjedecI sIIjed dogadaja:

1. PrekId u operatIvnI sIstem (trap)
2. Spasavanje regIstara I stanja procesa korIsnIka u PC8
3. Odreduje se da II je datI prekId "greska stranIce"
4. Provjerava se IegaInost reIerence stranIce I odreduje IokacIja stranIce na
dIsku
5. zdaje se operacIja cItanja sa dIska u sIobodnI okvIr
a. Ceka se u redu cekanja na ovaj uredaj (dIsk) dok se ne zavrsI operacIja
cItanja
b. Ceka se na pretrazIvanje dIska (vrIjeme pretrazIvanja I vrIjeme kasnjenja)
c. PocInje prenos stranIce u sIobodnI okvIr
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

156
7. Dok se ceka, aIocIra se procesor nekom drugom korIsnIku)
8. PrekId od dIska oznacava zavrsetak operacIje cItanja
9. OdredI da II je prekId dosao sa dIska osnosI se na tekucI proces
10. PopravI u tabeII stranIca tako da je data stranIca sada u memorIjI (posatvI 1
za datu stranIcu)
11. Cekaj dok se procesor ne aIocIra ponovo ovom procesu (Izmjena procesa)
12. VratI sve regIstre, stanje procesa I novu tabeIu I onda nastavI prekInutu
InstrukcIju

PrImjer stranIcenja na zahtjev PrImjer stranIcenja na zahtjev PrImjer stranIcenja na zahtjev PrImjer stranIcenja na zahtjev

VrIjeme prIstupa memorIjI je 100 nsec
VrIjeme servIsIsranja "greske stranIce" je 25 msec
EAT =(1-p)*100 + p*(25*1000000) = 100 + 24,999,900*p
EIektIvno vrIjeme prIstupa dIrektno je proporcIonaIno IntenzItetu "greske
stranIce"

PravIIa za dovIacenje stranIca u memorIju PravIIa za dovIacenje stranIca u memorIju PravIIa za dovIacenje stranIca u memorIju PravIIa za dovIacenje stranIca u memorIju

Osnovno pItanje je "kada jednu stranIcu dovucI u memorIju"Z DovIacenje stranIca
unaprIjed (engI. PreIechIng) je sIucaj kada se dovIace stranIce prIje nego sto je
nacInjeno reIerencIranje na njIh. Zahtjev za stranIcu (engI. Demand pagIng) je sIucaj
kada je reIerencIranje napravIjeno na stranIcu ( sa InstrukcIjom koja zahtjeva prIstup
adresI koja se naIazI na stranIcI koja ne postojI u memorIjI). Postoje raznI sIucajevI
dovIacenja stranIca unaprIjed:
CIasterIng - je obIIk dovIacenja stranIca unaprIjed u kome na gresku
stranIce se dovIace I susjedne stranIce, s namjero da ce skoro trebatI.
PreIoadIng - je sIucaj dovIacenja stranIca kod InIcIjaInog punjenja procesa
prI cemu se odreden broj stranIca dovuce u memorIju. Ovaj sIucaj je
poznat pod nazIvom engI. prepagIng.

Kao prImjer preIechIng-a, kerneI moze ustanovItI redosIjed stranIca kada se desava
greska stranIce. U tom sIucaju kerneI moze dovucI u memorIju sIjedece stranIce u
redosIjedu kako bI se sprIjecIIe nove greske stranIca. MedutIm, preIechIng moze bItI
ponekad opasan jer se u memorIju mogu dovucI stranIce koje uopste nece trebatI.
Ovakav sIucaj se nazIva "zagadenje memorIje" jer stranIce zauzImaju memorIju a one
se nece korIstItI.

PravIIa pIsanja na dIsk PravIIa pIsanja na dIsk PravIIa pIsanja na dIsk PravIIa pIsanja na dIsk

Osnovna pItanja koja se namecu su sIjedeca:
Kada memorIsjkI okvIr treba vratItI na dIsk
KojI okvIr treba vratItI na dIsk

Prvo pItanje se odnosI na pravIIa pIsanja na dIsk (engI. WrIte back poIIcy) a drugo
pItanje se odnosI na strategIju zamjene stranIca. PogIedajmo najprIje pravIIa pIsanja na
dIsk. StranIca u gIavnoj memorIjI je uvjek kopIja stranIce na dIsku. Ako su ove dvIje
kopIje IdentIcne onda stranIcu u memorIjI nIkada ne treba vracatI na dIsk jer postojI
IdentIcna kopIja. UkoIIko je ova stranIca u memorIjI Izabraba za IzbacIvanje Iz
memorIje (kao zrtva), jednostavno je treba pobrIsatI Iz memorIje.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

157
MedutIm, stranIcI u memorIjI se moze prIstupatI za cItanje I pIsanje. PIsanjem stranIce
u memorIjI ne mjenja se stranIca na dIsku I na taj nacIn dvIje kopIje stranIca nIsu vIse
kozIstentne. PostojI dva rjesenja za ovaj probIem za bIIo kojI kes: wrIte-through I
wrIte-back. Kod rjesenja "wrIte-through" bIIo koje pIsanje po stranIcI u memorIjI
uzrokuje Istovremeno I pIsanje kopIje na perIIernoj memorIjI. Ako se korIstI rjesenje
"wrIte-back" onda se kopIja sa perIIerne memorIje samo upIsuje (azurIra) kada je
kopIja u gIavnoj memorjI Izbacena.

Zbog veIIkog Internog rada kod rjesenja "wrIte-through", vIrtueIna memorIja uvIjek
korIstI rjesenje "wrIte-back". Mana ovakvog prIstupa je da su kopIje stranIca na dIsku
neazurne. Ovaj probIem se desava kod pada sIstema. Kako je gIavna memorIja
IzbrIsIva ukoIIko napajanje eIektrIcnom energIjom prestane svI podacI ce se IzbrIsatI.
MedutIm, podacI na dIsku ostaju sacuvanI. Kako su posIednje promjene stranIca bIIe u
gIavnoj memorIjI znacI da ce se IzgubItI I da sa dIska se mogu vratItI prIjasnjI podacI.

Ovo je razIog zasto treba da se vrsI backup vasIh datoteka da se ne bI IzgubIII podacI.
Ovo je I razIog zasto kod WIndows-a kod nestanka eIektrIcne energIje I ponovnog
dIzanja sIstema program scandIsk se Izvrsava kod punjenja operatIvnog sIstema.

Zamjena stranIce Zamjena stranIce Zamjena stranIce Zamjena stranIce

PosIjednje pItanje je pravIIa zamjene stranIca u memorIjI. Odnosno koju stranIcu treba
IzabratI da bI se IzbacIIa kako bI na njeno mjesto dosIa nova stranIca. Kada se dovIacI
nova stranIca u memorIjI onda mozda postoje sIobodnI uokvIrI u koje se mogu stranIce
stavItI. U ovom sIucaju stranIce se stavIjaju u sIobodne okvIre bez IzbacIvanja stranIca.

ServIsna rutIna za obradu greske stranIce ukIjucuje procedure za zamjenu
stranIce
KorIstI bIt modIIIkacIje da se redukuje Izmjena stranIca - samo modIIIkovane
stranIce se upIsuju na dIsk
Zamjena stranIce kompIetIra podjeIu Izmedu IogIcke I IIzIcke memorIje -
veIIka vIrtuaIna memorIja moze bItI obezbjedena sa manjom IIzIckom
memorIjom

AIgorItmI zamjene stranIca AIgorItmI zamjene stranIca AIgorItmI zamjene stranIca AIgorItmI zamjene stranIca

Zahtjevaju mInImaInI IntenzItet greske stranIce
AIgorItam procjene se Izvrsava na posebnom strIngu memorIjskIh reIerence
I Izracunava broj gresaka stranIce na tom strIngu
U nasem prImjeru reIerentnI strIng je
1,2,3,4,1,2,5,1,2,3,4,5

FFO aIgorItam (FIrst n FIrst Out) FFO aIgorItam (FIrst n FIrst Out) FFO aIgorItam (FIrst n FIrst Out) FFO aIgorItam (FIrst n FIrst Out)

ReIerentnI strIng : 1,2,3,4,1,2,5,1,2,3,4,5
TrI okvIra (trI stranIce mogu bItI u memorIjI u vremenu po procesu)

1 1 4 5
2 2 1 3
3 3 2 4

9 greaka
stranice
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

158
CetIrI okvIra

1 1 5 4
2 2 1 5
3 3 2
4 4 3

FFO zamjena - 8eIadIjeva anomaIIja (vIse okvIra u memorIjI ne znacI da je
manje gresaka stranIce)

OPT OPT OPT OPT - -- - OptImaInI aIgorItam zamjene OptImaInI aIgorItam zamjene OptImaInI aIgorItam zamjene OptImaInI aIgorItam zamjene

deaInI aIgorItam zamjene je OPT. OPT gIeda u buducnost I IzabIra stranIcu koja ce
ostatI nekorIscena duze vrIjeme I ta se stranIca uzIma za zamjenu. NazaIost, prognoza
nIje ponekad raspoIozIva na mnogIm sIstemIma. Ovo bI trebaIo da uzme u obzIr
znanje o programu kao I o podacIma, korIsnIcIIm uIazIma, IzuzetcIma I sI. Ako bI sIIjed
programa mogao bItI poznat unaprIjed ne bI ImaII potrebe da program Izvrsavamo.
OPT aIgorItam je dobra reIerenca za poredenje aII ne I za stvarna rjesenja.

LRU LRU LRU LRU - -- - aIgorItam aIgorItam aIgorItam aIgorItam

S obzIrom da je OPT nemoguce ImpIementIratI, sta je moguce uradItIZ ]edna od
IzvodIjIvIh aproksImacIja OPT aIgorItma je LRU aIgorItam (engI. Last RecentIy Used).
Ovaj aIgorItam je bazIran na posmatranjIma koja su se desIIa u skoroj prosIostI I na
osnovu njIh predvIdamo sta ce se desItI u skoroj buducnostI. Kao posIjedIca ovog,
IzabIraju se stranIce kao zrtve kojIma se nIje skoro prIstupaIo.

Mada je ovo dobar prIstup on nIje savrsen. Za posIove, sakupIjanja smeca (engI.
garbage coIIectIon), na prImjer, ponasanje u skoroj prosIostI bI mogIo bItI Iose za
prognozu buducnostI, jer jedanput kad se prIstupI stranIcI onda se ne vraca na nju prI
proIasku kroz memorIju.

Kako da znamo st Kako da znamo st Kako da znamo st Kako da znamo sta ce LRU IzabratI a ce LRU IzabratI a ce LRU IzabratI a ce LRU IzabratI

PostojI IIsta svIh memorIjskIh okvIra. SvakI put kad se prIstupI memorIjskom okvIru,
premjestamo ga na pocetak IIste. Na taj nacIn pocetak IIste postaje vrucI kraj IIste a
kraj IIste postaje hIadnI kraj IIste. Kada jedna stranIca treba da bude zamjenjena, za
zrtvu se bIra posIednja stranIca u IIstI.

MedutIm, manIpuIacIja sa IIstom koja se IzvodI kod svakog prIstupa memorIjI je IsuvIse
skupa tako da u praksI se korIstI aproksImIranI LRU aIgorItam. Postoje mnoge
aproksImacIje ovog aIgorItma. Kako je podrska hardvera ogranIcena cIIj operatIvnog
sIstema je da uradI najvIse posIa. Osnovna Ideja kod svIh aproksImacIja da se odrzI
aproksImIrano korIscenje InIormacIja I sa IIstom radI perIodIcno a ne staIno.

LRU aproksImacIja LRU aproksImacIja LRU aproksImacIja LRU aproksImacIja

MnogI procesorI obezbjeduju reIerentnI bIt kao dIo hardverske podrske strukturI tabeIe
stranIca. Hardver postavIja bIt svakI put kad se prIstupI stranIcI.

10 greaka
stranice
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

159
]ednostavan prIstup je da se gIeda na ovaj bIt perIodIcno. U pocetku svI bItI su
postavIjenI na nuIu a zatIm se postavIjaju u zavIsnostI kako se prIstupa stranIcama. Na
kraju jednog IntervaIa posmatranja, operatIvnI sIstem moze reorganIzIratI IIstu u
kategorIje stranIca po IntervaIIma prI cemu prvI IntervaI oznacava tekucI IntervaI,
zatIm IntervaI prIje ovog, dva IntervaIa prIje tekuceg I sI. U svakom proIazu, ako bIt nIje
postavIjen, stranIca se premjesta u jednu kategorIju nazad, a ako je reIerencIrana ona
se premjesta u najvIsu kategorIju koja se reIerencIra u toku tekuceg IntervaIa. Kako je
to sve organIzIrano u IIste operatIvnI sIstem cIstI bIte.



AIgorItam sata AIgorItam sata AIgorItam sata AIgorItam sata

DrugI nacIn da se korIstI ovaj bIt je poznat pod Imenom aIgorItam sata. AIgorItam sata
odrzava cIrkuIarnu IIstu stranIca I pokazIvac na ovu IIstu. Kada se trazI zrtva,
pokazIvac se povecava dok ne naIde na stranIcu sa ocIscenIm reIerentnIm bItom. Kako
pokazIvac napreduje cIstI se bIt stranIce. Ovo obezbjeduje da ce zrtva eventuaIno bItI
nadene. U najgorem sIucaju, zrtva ce se nacI na pocetku drugog proIaza kroz IIstu -
bIt stranIce je ocIscen kada se kroz nju proIazIIo u predhodnom proIazu.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

160
AproksImIranI LRU bez hardverske podrske AproksImIranI LRU bez hardverske podrske AproksImIranI LRU bez hardverske podrske AproksImIranI LRU bez hardverske podrske

Ako hardver ne podrzava R bIt on moze bItI emuIIran. U pocetku, sve stranIve se
oznace da nemaju prIstup za cItanje I pIsanje. Kada se pokusa prIstupItI stranIcI desIce
se greska stranIce. Kada se desI prekId, operatIvnI sIstem moze postavItI bIt u tabeII
stranIca kao I postavItI prava prIstupa stranIcI. Ako stranIce ne mogu bItI korIsne bez
prava prIstupa moze se obezbjedItI da greska stranIce u pocetku korIstI mehanIzam
prevodenja adresa da bI se R bIt podtavIo soItverskI. Postupak kojI se IzvodI prIkazan
je sumarno na sIIjedecI nacIn:
1. SvakI vremenskI IntervaI IspItuju se uIazI u T8. Ako se stranIca naIazI u
T8, stavI je u tekucu IIstu (prIstup tekucem IntervaIu vremena), Inace je
premjestI jednu IIstu ranIje.
2. OcIstI T8
3. Ako se prIstupa stranIcI stavI je u T8 ako ne postojI.
AIokacIja okvIra AIokacIja okvIra AIokacIja okvIra AIokacIja okvIra

SvakI proces trazI mInImaInI broj stranIca
DvIje gIavne aIokacIone seme
. IIksna aIokacIja
. prIorItetna aIokacIja

FIksna aIokacIja FIksna aIokacIja FIksna aIokacIja FIksna aIokacIja

]ednaka aIokacIja - t.j. ako Imamo 100 okvIra I 5 procesa onda po 20
stranIca svakom procesu.
ProporcIonaIna aIokacIja - aIokacIja u skIadu sa veIIcInom procesa
sI = veIIcIna procesa PI
S = suma(sI)
m = ukupan broj okvIra
aI = aIokacIja za proces PI = sI]S x m

m=64, s1=10, s2=127
a1=10]137x64 =oko 5
a2=127]137 x 64 =oko 59

PrIorItetna aIokacIja PrIorItetna aIokacIja PrIorItetna aIokacIja PrIorItetna aIokacIja

KorIstI se proporcIonaIna aIokacIjacIona sema korIstecI prIorItete umjesto
veIIcIna procesa
Ako proces PI generIse gresku stranIce onda
IzaberI za zamjenu jedan od njegovIh okvIra
IzaberI za zamjenu okvIr od jednog procesa sa najmanjIm brojem
prIorIteta

CIobaIna prema IokaInoj aIokacIjI CIobaIna prema IokaInoj aIokacIjI CIobaIna prema IokaInoj aIokacIjI CIobaIna prema IokaInoj aIokacIjI

CIobaIna zamjena - proces IzabIra jedan okvIr za zamjenu Iz skupa svIh
okvIra; jedan proces moze uzetI okvIr od drugog procesa
LokaIna zamjena - svakI proces IzabIra sIobodan okvIr samo Iz skupa njemu
aIocIranIh okvIra
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

161
ZasIcenje ZasIcenje ZasIcenje ZasIcenje

U sIstemu nastaje zasIcenje ako se trosI vIse vremena za rad sa greskama stranIce
nego sto se Izvrsava korIstan rad.

VIsok stepen muItIprogramIranja je uzrok zasIcenju. Kada se mnogo procesa Izvrsava,
tada nema dovoIjno raspoIozIvIh IIzIckIh okvIra za svakI proces da bI se zadovoIjIo
njIhov trenutnI zahtjev. Kao rezuItat toga nastaje zasIcenje sItema (engI. trashIng).

Ovaj Ienomen moze bItI I uzrokovan sIabIm dugorocnIm rasporedIvacem. Posmatrajmo
dugorIcnI rasporedIvac kojI pokusava da poveca IskorIscenje procesora povecavanjem
nIvoa muItIprogramIranja u sIucajevIma kada je procesor nedovoIjno IskorIscen.
Posmatrajmo ovaj sIucaj ako je vecIna procesa bIokIrana I cekaju da njIhove stranIce
budu napunjene. Posto je IskorIscenost procesora maIa, dugorocnI rasporedIvac ce
dozvoIItI uIazak vIse procesa. Ovo ce povecatI zahtjeve za sIobodne memorIjske okvIre
I kao posIjedIca toga vIse resursa sIstema ce se trosItI prI cemu nastaje zasIcenje.
Posto je vecIna procesa bIokIrana, IskorIscene procesora postaje nIsko tako da
dugorocnI rasporedIvac ce rasporedIvatI vIse procesa I pogresnI cIkIusI ce se ponavIjatI.
Kao rezuItat toga je drastIcno vece vrIjeme prIstupa memorIjI.
Krada stranIcnIh okvIra Krada stranIcnIh okvIra Krada stranIcnIh okvIra Krada stranIcnIh okvIra

Kada se ImpIementIra aIokacIja memorIje sa stranIcama na zahtjev, onda se stranIcnI
okvIrI mogu promatratI kao resursI pojedInacnog procesa III kao sIstemskI resursI. Ako
su stranIcnI okvIrI resursI pojedInacnog procesa tada svakI proces dobIva odreden broj
IIzIckIh okvIra. Kada proces, tIjekom svog Izvodenja, mora precI na novu stranIcu koja
se ne naIazI u memorIjI, onda jedna od njegovIh stranIca mora bItI Izbacena Iz
memorIje. Ako se stranIcnI okvIrI promatraju kao resursI sIstema onda se mogu
IzabratI I manje aktIvnI stranIcnI okvIrI Iz drugIh procesa kojI ce bItI IzbacenI Iz
memorIje.

KorIstecI pravIIa rada sa stranIcnIm okvIrIma, kada su stranIcnI okvIrI sIstemskI resursI,
postIze se eIIkasnIjI rad jer se tIme reducIra vrIjeme prIstupa stranIcama jer smo u
pozIcIjI da Izaberemo Iz skupa vIse stranIca manje aktIvne stranIce koje nece bItI
uskoro potrebne. Ova pravIIa nIsu dobra kod upravIjanja zasIcenjem sIstema. Ako se
stranIcnI okvIrI razmatraju kao resursI procesa onda je nemoguce da za odredenI nIvo
muItIprogramIranja reducIra broj stranIcnIh okvIra kojI se dodjeIjuju Izvrsnom procesu.


Ponasanje programa Ponasanje programa Ponasanje programa Ponasanje programa u toku Izvodenja u toku Izvodenja u toku Izvodenja u toku Izvodenja - -- - radnI skup stranIca radnI skup stranIca radnI skup stranIca radnI skup stranIca

]edan od kIjucnIh Iaktora odredIvanja perIormasI programa je odredIvanje broja
gresaka stranIce. 8roj gresaka stranIce je IunkcIja nekoIIko Iaktora:

VeIIcIna programa (vIrtueIna memorIja)
VeIIcIna IIzIcke memorIje
KvaIItet aIgorItma zamjene
Programsko ponasanje

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

162
Za aIokacIju memorIje sa stranIcenjem na zahtjev, ponasanje programa se karakterIzIra
radnIm skupom stranIca. MaII radnI skup je sInonIm za dobro ponasanje programa. Za
datu memorIjsku veIIcInu, vecI radnI skup ce vodItI ka vIse gresaka stranIce.

RadnI skup(T) je jednak vroju razIIcItIh stranIca koje se reIerencIraju od strane procesa
u vremenskom perIodu T.

Sa dovoIjno veIIkIm veIIcInama stranIca, sIstem nece radItI nIsta nego se bavItI radom
sa greskama stranIca. Ovo stanje se zove zasIcenje sIstema. Postoje samo dva rjesenja:

DodatI vIse memorIje
8IokIratI procese dok drugI ne zavrse

MaII radnI skup ImpIIcIra vIsoku prIvremenu IokaInost (mjesnost) I vIsoku prostornu
IokaInost. Prostorna mjesnost je mjera koIIko su bIIzu jednI drugIm memorIjskI
prIstupI. VIsoka prostorna mjesnost znacI da ako se prIstupI jednoj adresI, onda drugoj
bIIskoj adresI ce se prIstupItI vrIo brzo. VIsoka prostorna mjesnost se odnosI cesto na
prIstup kodu, nIzovIma I sI. PrIvremena mjesnost je mjera Iznosa vremena Izmedu
prIstupa Istoj stranIcI. VIsoka prIvremena mjesnost ImpIIcIra da ako se stranIcI prsItupa
sa Iste stranIce da ce se to uradItI I vrIo brzo. VIsoka prIvremena IokaInost je cesto
prIdruzena kod programskIh petIjI III rekurzIja.

DrugI nacIn da se razmIsIja o radnom skupI je ovaj:

Moze se posmatratI veIIcIna radnog skupa stranIca kao broj razIIcItIh stranIca koje
proces reIerencIra unutar posIjednjeg vremenskog IntervaIa reIerencIranja. Ako proces
prIstupa mnogo razIIcItIh stranIca onda on Ima veIIkI radnI skup stranIca I na taj nacIn
sIabu mjesnost. Ako proces prIstupa samo nekoIIko stranIca za IstI broj reIerencIranja
stranIca, kazemo da Ima maII radnI skup stranIca I na taj nacIn I jaku IokaInost.

OsnovnI probIem u anaIIzI je da se odredI ovaj vremenskI perIod da bude odgovarajucI.
Ako je on IsuvIse veIIkI onda ce se postatratI mnogo memorIjskIh reIerencI I anaIIza ce
se odnosItI na nekoIIko mjesnostI, odnosno dIjeIove procesa kojI korIste razIIcIte
djeIove memorIje. Ako je vremenskI perIod IsuvIse maII, onda se nece uhvatItI sve
stranIce potrebne po deIInIcIjI za IokaInost.

FrekvencIja greske stranIce FrekvencIja greske stranIce FrekvencIja greske stranIce FrekvencIja greske stranIce

DrugI prIstup da bI se baIansIrao nIvo muItIprogramIranja je da se pratI IrekvencIja
gresaka stranIce. Ako Ima maIo gresaka stranIca onda bI trebaIo povecatI nIvo
muItIprogramIranja a ako Ima puno gresaka stranIca procese bI trebaIo suspendIratI.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

163
DIjagram zasIcenja DIjagram zasIcenja DIjagram zasIcenja DIjagram zasIcenja


Sta stranIcenje radIZ
ModeI IokacIje procesa
Proces se pomjera sa jednog mjesta na drugo
Mjesta se mogu prekIapatI
Zasto se zasIcenje desavaZ
suma veIIcIna > ukupne memorIjske veIIcIne

Sema ucestaIostI greske stranIce Sema ucestaIostI greske stranIce Sema ucestaIostI greske stranIce Sema ucestaIostI greske stranIce

UspostavIja "prIhvatIjIv" IntenzItet greske stranIce
ako je IntenzItet suvIce nIzak procesI gube okvIre
ako je IntenzItet veIIkI procesI uzImaju okvIre

Druga razmatranja Druga razmatranja Druga razmatranja Druga razmatranja

PrepagIng
zbor veIIcIne stranIce
IragmentacIja
veIIcIna tabeIe stranIca
U- overhead
IokaIItet

Programska struktura
NIz A[1024,1024] oI Integer
svaka vrsta je stavIjena u jednu stranIcu
jedan okvIr
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

164
Program 1
Ior ]:= 1 to 1024 do
Ior I:= 1 to 1024 do
A[I,j] = 0;
1024x1024 greske stranIca
Program 2
Ior I:= 1 to 1024 do
Ior j:= 1 to 1024 do
A[I,j] = 0;
1024 greske stranIce

U] InterIock I adresIranje

SegmentacIja na zahtjev SegmentacIja na zahtjev SegmentacIja na zahtjev SegmentacIja na zahtjev

KorIstI se kad harver nIje dovoIjan da se ImpIementIra stranIcenje na zahtjev
OS]2 aIocIra memorIju u segmentIma, I drzI InIormacIje u segmentnom
deskrIptoru
SegmentnI deskrIptor sadrzI bIt kojI IndIcIra da II je tekucI segment u
memorIjI
ako je segment u memorIjI prIstup segmentu se nastavIja
a ako segment nIje u memorIjI nastaje greska segmenta

ZadacI: ZadacI: ZadacI: ZadacI:

9.1 Kada se javIja greska stranIceZ OpIsIte akcIje koje provodI operacIonI sIstem kada
se desI greska stranIceZ

Odgovor: Creska stranIce se javIja kada se prIstupI stranIcI koja nIje dovucena u
memorIju. OperacIonI sIstem verIIIcIra memorIjske prIstupe I zastavIja Izvrsenje
programa ako se desIo nedozvoIjen prIstup. Ako je prIstup dozvoIjen aIocIra se
sIobodan okvIr I InIcIra se U] zahtjev za cItanje potrebne stranIce u prazan okvIr. Po
zavrsetku U] zahtjeva, tabeIa procesa I tabeIa stranIca se azurIraju I InstrukcIja
nastavIja sa Izvrsenjem.

9.2 PretpostavImo da Imamo nIz reIerencI na stranIce za proces sa m okvIra (InIcIjaIno
su svI praznI). NIz reIerencI na stranIce Ima duzInu p sa n razIIcItIh brojeva stranIca. Za
bIIo kojI aIgorItam zamjene stranIca,

a) Koja je najnIza granIca broja gresaka stranIcaZ
b) Koja je najveca granIca broja gresaka stranIcaZ


Odgovor:
a) n
b) p

9.3 ]edan broj racunara obezbjeduje svojIm korIsnIcIma vIrtuaInu memorIju od 2(na32)
bajta. Racuna Ima 2(na18) bajta IIzIcke memorIje. VIrtuaIna memrIja je ImpIementIrana
sa stranIcenjem prI cemu je veIIcIna stranIce jednaka 4096 bajta. KorIsnIckI proces
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

165
generIse vIrtueInu adresu 11123456. ObjasnIte kako sIstem uspostavIja odgovarajucI
IIzIcku IokacIju. NapravI razIIke Izmedu hardverskIh I soItverskIh operacIja.

Odgovor: VIrtuaIna adresa u bInarnom obIIku IzgIeda ovako:

0001 0001 0001 0010 0011 0100 0101 0110

Posto je veIIcIna stranIce 2(12), veIIcIna pomjeraja unutar tabeIe stranIca je 2(20).
DakIe, nIzIh 12 bIta "0100 0101 0110" se korIste kao pomjeraj unutar stranIce dok
ostatak od 20 bIta "0001 0001 0001 0010 0011" se korIstI kao pomjeraj u tabeII
stranIca.

9.4 Koje od sIIjedecIh programskIh tehnIka su "dobre" za stranIcenje na zahtjevZ Koje
nIsu "dobre"Z

Odgovor:
a) Stek - dobar
b) TabeIa sImboIa (hashed) - nIje dobra
c) SekvencIjaIno pretrazIvanje - dobro
d) 8Inarno pretrazIvanje - nIje dobro
e) CIstI kod - dobar
I) Vektorske operacIje - dobre
g) ndIrektne operacIje - nIsu dobre.


9.5 PretpostavImo da je memorIja sa stranIcenjem na zahtjev. TabeIa stranIca se cuva
u regIstrIma. VrIjeme potrebno za se obradI greska stranIce ako je sIobodan okvIr
raspoIozIv III stranIca koja se mjenja nIje modIIIcIrana je 8 msec, Inace je 20 msec ako
je stranIca modIIIcIrana. PrIstup memorIjI je 100 nsec. PretpostavImo da stranIca koja
ce bItI zamjenjena je modIIIcIrana 70Z vremena. KojI je maksImaIno prIhvatIjIv
IntenzItet greske stranIca za eIektIvno vrIjeme prIstupa do 200 nsecZ

Odgovor:
0.2 sec = (1 - P) 0.1 sec+(0.3P)8 mIIIIsec + (0.7P) 20 mIIIIsec
0.1 = -0.1P + 2400 P + 14000 P
0.1 # 16,400 P
P # 0.000006



9.6 DatI su sIIjedecI aIgorItamI za zamjenu stranIca. RangIraj ove aIgorItme na skaII od
1 do 5 od "Ioseg" do "Izvrsnog" u skIadu sa njegovIm IntenzItetom greske stranIce.
OdvojI one aIgorItme kojI "pate" od 8aIadey-eve anomaIIje od onIh kojI to ne "pate":

a) LRU zamjena
b) FFO zamjena
c) OptImaIna zamjena
d) Zamjena sa drugIm pokusajem



Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

166
Odgovor:

AIgorItmI kojI "pate" od 8aIadey-eve anomaIIje su oznacenI sa "da" III "ne".

1. OptImaI, ne
2. LRU, ne
3. DrugI pokusaj, da
4. FFO, da

9.7 Kada se ImpIementIra vIrtueIna memorIja u racunarskom sIstemu onda postoje
IzvjkesnI troskovI prIdruzenI ovoj tehnIcI kao I korIst koju pruza tehnIka. NavedI Ih.
Da II je moguce da troskovI budu vecI od korIstIZ Ako jeste, koje se mejere mogu
preduzetI da se obezbjedI da se ovo ne desIZ

Odgovor:
TroskovI su dodatnI hardver I sporIje vrIjeme prIstupa. KorIst od ove tehnIke
je dobro korIscenje memorIje I vecI adresnI prostor od IIzIckog adresnog prostora.

9.8 OperacIonI sIstem podrzava vIrtueInu memorIju sa stranIcenjem, korIstecI procesor
sa vremenskIm cIkIusom od 1 mcsec. Da bI se prIstupIIo stranIcI drugoj od tekuce
potrebno je dodatnIh 1 mcsec. StranIce Imaju 1000 rIjecI I uredaj za stranIcenje je
dobos kojI rotIra 3000 puta u mInutI I prenosI 1 mIIIon rIjecI u sec. Postamtranjem
sIstema dobIjene su sIIjedece statIstIcke mjere:

1 Z svIh InstrukcIja koje se Izvrse prIstupaju drugoj stranIcI u odnosu na
tekucu stranIcu
Od InstrukcIja koje prIstupaju drugoj stranIcI, 80Z Ih prIstupa stranIcI koja
je u memorIjI.
Kada se zahtjeva nova stranIca, zamjenjena stranIca se modIIIcIra 50Z
vremena.

zracunajte eIektIvno vrIjeme Izvrsenja InstrukcIja, pretpostavIjajucI da sIstem
Izvrsava samo jedan proces I da je procesor prazan u toku transIera sa dobosa.

Odgovor:
EIektIvno vrIjeme prIstupa = 0.99 (1 sec+0.008(2 sec) + 0.002
(10,000 sec+1,000sec)
+ 0.001 (10,000 sec+1,000sec)
= (0.99 + 0.016 + 22.0 + 11.0) sec = 34.0 sec

9.9 Dat je sIstem sa stranIcenjem na zahtjev sa sIIjedecIm IskorIscenjem:

Procesor 20Z
DIsk za stranIcenje 97.7Z
DrugI U] uredajI 5Z

Kaja od sIIjedecIh (ako postoje) tehnIka ce (vjerovatno) poboIjsatI IskorIscenje
procesoraZ ObrazIozIte odgovor:

a) ntaIacIja brzeg procesora
b) nstaIacIja veceg dIska za stranIcenje
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

167
c) Povecanje stepena muItIprogramIranja
d) Smanjenje stepena muItIprogramIranja
e) nstaIIranja vIse gIavne memorIje
I) nstaIIranje brzeg dIska, III vIsestukIh kontroIora sa vIsestrukIm dIskovIma
g) Dodavanja stranIcenja unaprIjed (engI. prepagIng) u aIgorItmIma za
preuzImanje stranIca
h) Povecanje veIIcIne stranIca

9.10 Dat je dvodImenzIonaInI nIz A:

Var Var Var Var A: array array array array [1..100] oI array oI array oI array oI array [1..100] oI oI oI oI Integer;

Cdje A[1][1] je na IokacIjI 200, u jednom sIstemu sa stranIcenjem na zahtjev sa
veIIcInom stranIce od 200 bajta. ]edan maII proces se naIazI u stranIcI 0 (IokacIje od 0
do 199) za rad sa matrIcom, dakIe, svaka InstrukcIja ce ce bItI preuzeta sa stranIce 0.
Za trI stranIcna okvIra, koIIko gresaka stranIce ce se desItI kod sIIjedece petIje za
InIcIjaIIzacIju nIza, korIstecI LRU aIgorItam zamjene I pretpostavIjajucI da stranIcnI
okvIr 1 je napunjen procesom dok su druga dva okvIra prazna:

a) Ior Ior Ior Ior j:= 1 to to to to 100 do do do do
Ior Ior Ior Ior I:= 1 to to to to 100 do do do do
A[I][j]:=0;


b) Ior Ior Ior Ior I:= 1 to to to to 100 do do do do
Ior Ior Ior Ior j:= 1 to to to to 100 do do do do
A[I][j]:=0;

Odgovor:

NIz se smjesta po vrstama, odnosno, prva stranIca podataka sadrzI A[1,1],
A[1,2],..,A[2,100] a druga stranIca podataka sadrzI A[3,1], A[3,2],.,A[4,100] I sI.

a) NIz reIerencI na stranIcu je: 0,1,0,2,0,.,0,49,0,1,0,2,0,.,0,49, dakIe,
desIce se 5000 gresaka stranIce
b) NIz reIerencIranja stranIce je 0,1,0,2,0,.,0,49, dakIe, desIce se 50 gresaka
stranIce

9.11 RazmotrImo sIIjedecI reIerentnI nIz stranIca:

1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6

KoIIko gresaka stranIca ce se desItI za sIIjedece aIgorItme zamjene stranIca,
pretpostavIjajucI da Imamo jedan, dva, trI, cetIrI, pet, sest III 7 sIobodnIh okvIra.
PodsjetImo se da svI okvIrI su InIcIjaIno praznI, tako da njegovo punjenje ce
prouzrokovatI gresku stranIce.

LRU aIgorItam
FFO aIgorItam
OptImaInI aIgorItam

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

168

9.12 PretpostavImo da zeIImo korIstItI aIgorItam stranIcenja kojI zahtjeva bIt
reIerencIranja (takav kao kod zamjene sa drugIm pokusajem III modeI radnog skupa
stranIca), aII hardver ne obezbjeduje takvu mogucnost. Navedete kako bI se mogao
sImuIIratI bIt reIerence Iako nIje obezbjeden od strane hardvera III objasnIte zasto
to nIje moguce uradItI. Ako je moguce, IzracunatI I troskove takve ImpIementacIje.

Odgovor: Moze se korIstItI bIt vazeca]nevazeca koju podrzava hardver da se sImuIIra
bIt reIerence. nIcIjaIno se postavI na nevazecI. Kod prvog reIerencIranja stranIce docI
ce do prekIda (engI trap) od strane operatIvnog sIstema. OperacIonI sIstem ce postavItI
bIt na 1, odnosno resetovatI stanje bIta na vazece.

9.13 KonstruIsaII smo novI aIgorItam za zamjenu stranIca za kojI smatramo da je
optImaIan. U nekIm IskrIvIjenIm testnIm sIucajevIma desava se 8aIady-eva
anomaIIja. Da II je novI aIgorItam optImaIanZ ObjasnIte odgovor.
Odgovor: Ne


9.14 PretpostavImo da se pravIIa zamjene (kod sIstema stranIcenja) sastoje u
IspItIvanju svake stranIce I odbacIvanju stranIce ako nIje bIIa korIscena od
posIednjeg IspItIvanja. Sta ce se dobItI a sta IzgubItI korIstecI ova pravIIa u odnosu
na LRU aIgorItam III aIgorItam drugog pokusajaZ

Odgovor: Oba aIgorItma, LRU I aIgorItam drugog pokusaja, se ukIjucuju samo u
sIucajevIma kada se dovIacI nova stranIca u memorIju. spItIvanjem stranIca perIodIcno,
sIstem nece drzatI stranIce u memorIjI koje se ne korIste cak Iako su se one korIstIIe
ranIje. DakIe, dovoIjno sIobodnIh okvIra ce ugIavnom bItI raspoIozIvo I zamjena
stranIca nece bItI potrebna. 8ez obzIra na to, sve stranIce su bIIe u upotrebI, u kom
sIucaju vIse memorIje (dodatnIh okvIra) je vjerovatno potrebno.

9.15 SegmentacIja je sIIcna stranIcenju aII korIstI "stranIce" promjenIjIve veIIcIne.
DeIInIsIte dva aIgorItma za zamjenu segmenata bazIranIh na semama za zamjenu
stranIca: FFO I LRU. PrIsjetImo se, posto segmentI nIsu Iste veIIcIne, segmentI kojI
su IzabarnI da budu zamjenjenI mozda nIsu dovoIjno veIIkI do bI bIII dovoIjnI za
novI segment. RazmotrImo strategIje za sIstem gdje segmentI ne mogu bItI
reIocIranI kao I za sIsteme gdje mogu bItI reIocIranI.

Odgovor:
FFO: NadI prvI segment dovoIjno veIIkI da zadovoIjI doIazecI segment. Ako
reIokacIja nIje moguca I nIjedan segment nIje dovoIjno veIIkI, IzaberI
kombInacIju od segmenata cIje memorIje ce bItI kontInuaIne (u jednom
komandu), tako da segment moze se smjestItI u novI prostor. Ako je
reIokacIja moguca, preuredI memorIju tako da prvIh N segmenata su dovoIjnI
za doIazecI segment I kontInuaInI su u memorIjI. DodatI neupotrebIjen
prostor u IIstu sIobodnog prostora u oba sIucaja.
LRU: zaberI segment kojI nIje bIo korIscen duzI perIod vremena I da je
dovoIjno veIIkI, dodajucI neupotrIjebIjen prostor u IIstu sIobodnog prostora.
Ako nItI jedan segment nIje dovoIjan, IzaberI kombInacIju "najstarIjIh"
segmenata tako da cIne kontInuaIan prostor (ako reIokacIja nIje raspoIozIva)
a da budu dovoIjno veIIkI. Ako je reIokacIja raspoIozIva, uredI "najstarIje"
segmente u kontInuaInu memorIju I napunI je novIm segmentom.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

169

9.16 AIgorItam za zamjenu stranIca bI trebao mInImIzIratI broj gresaka stranIca. Ova
se mInImIzacIja moze uradItI dIstrIbucIjom cesto prIstupnIh stranIca kroz memorIju
ravnomjerno, nego smjestajucI Ih u maII broj okvIra. Svakom stranIcnom okvIru
mozemo prIdruzItI brojac kojI predstavIja broj stranIca koje su prIdruzene tom
okvIru. DakIe, da bI zamjenIII jednu stranIcu, pretrazujemo stranIcnI okvIr sa
najmanjIm brojem.

a) DeIInIsImo aIgorItam zamjene stranIca korIstecI Ideju o zamjenI stranIca
navedenu gore. Posebno se obratImo sIIjedecIm probIemIma: 1) koje su
InIcIjaIne vrIjednostI brojaca, 2) kada se brojacI povecavaju, 3) kada se brojacI
smanjuju I 4) kako se IzabIra stranIca koja treba bItI zamjenjena.
b) KoIIko gresaka stranIca ce se desItI za novI aIgorItam za sIIjedecI nIz
reIerencIranja stranIca u sIucaju da Imamo 4 okvIra stranIcaZ
1,2,3,4,5,3,4,1,6,7,8,7,8,9,7,8,9,5,4,5,4,2

c) KojI je mInImaInI broj gresaka stranIce za jedan optImaInu strategIju zamjene
stranIca prI reIerencIranju stranIca kao pod b) sa cetIrI stranIcna okvIra.

Odgovor:
a) DeIInIsImo aIgorItam za zamjenu stranIca na sIIjedecI nacIn:

1. nIcIjaIne vrIjednostI brojaca su 0
2. 8rojacI se povecavaju kada se nova stranIca prIdruzuje okvIru.
3. 8rojacI se smanjuju kada stranIce prIdruzene tom okvIru vIse nIsu potrebne
4. Kako se IzabIra koja ce stranIca bItI zamjenjena - nacI okvIr sa najmanjIm
brojacem.

KorIstecI FFO, Imamo
c) 14 gresaka stranIce
d) 11 gresaka stranIce

9.17 RazmotrImo sIstem stranIcenja na zahtjev sa dIskom za stranIce cIjI je srednjI
prIstup I vrIjeme prenosa 20 msec. Adrese se prevode korIstecI tabeIu stranIca u
gIavnoj memorIjI sa vremenom prIstupa od 1 mIcrosec po memorIjskom prIstupu.
DakIe, svaka memorIjska reIerenca kroz tabeIu stranIca Ima dva prIstupa memorIjI.
Da bI poboIjsaII ovo vrIjeme, dodacemo asocIjatIvnu memorIju (TL8) koja ce
redukovatI memorIjskI prIstup na jednu memorIjsku reIerencu ako je broj stranIce u
prIdruzenoj asocIjatIvnoj memorIjI. PretpostavImo da kod 80Z prIstupa je u
asocIjatIvnoj memorIjI a da od preostaIog vremena 10 Z (III 2 procenta od ukupnog)
uzrokuje greske stranIca. Koje je eIektIvno vrIjeme prIstupa memorIjI.

Odgovor:
EIektIvno vrIjeme prIstupa = (0.8) (1 sec)
+ (0.1) (2 sec) + (0.1) (5002 sec)
= 501.2 sec
= 0.5 mIIIIsec

9.18 RazmotrImo sIstem sa stranIcenjem na zahtjev gdje je stepen
muItIprogramIranja IIksIran na 4. SIstem je mjeren da se odredI IskorIscenost
procesora I dIska za stranIcenje. RezuItatI su jedna od sIIjedecIh aIternatIva. Sta se
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

170
desava za svakI sIucaj. Moze II povecanje stepena muItIprogramIranja dovestI do
povecanja IskorIscenostI procesora. Da II pomaze stranIcenjeZ

a) IskorIscenje procesora 13Z, IskorIscenje dIska 97 Z
b) IskorIscenje procesora 87Z, IskorIscenje dIska 3 Z
c) IskorIscenje procesora 13Z, IskorIscenje dIska 3 Z

Odgovor:
a) Desava se zasIcenje
b) skorIscenje procesora je dovoIjno vIsoko. Moze se povecatI stepen
muItIprogramIranja.
c) Povecanje stepene muItIprogramIranja

9.19 Dat je operacIonI sIstem za masIne koje korIste bazne I granIcne regIstre aII
smo modIIIkovaII masInu da korIstI I tabeIe stranIca. Moze II tabeIa stranIca bItI
postavIjena da sImuIIra bazne I granIcne regIstre. Kako je to moguce IzvestI III zasto
to nIje moguceZ

Odgovor:
TabeIa stranIca moze bItI postavIjena tako da sImuIIra bazne I granIcne regIstre
tako da se memorIja aIocIra u segmentIma IIksne veIIcIne. Na ovaj nacIn osnova
segmenta moze bItI unesena u tabeIu stranIca a bIt vazeca]nevazeca moze se korIstItI
da ukaze na dIo segmenta rezIdentan u memorIjI III ne. Ovdje ce postojatI InternI
probIem sa IragmentacIjom.

9.20 Sta uzrokuje zasIcenje (engI. trashIng). Kako sIstem detektuje zasIcenjeZ Kada
sIstem detektuje zasIcenje sta moze uradItI da ukIonI probIem zasIcenjaZ

Sadrzaj na web-u:

UpravIjanje raspoIozIvIm prostorom, StranIcenje I swap-Ing, nvertovane tabeIe
stranIca

Cache and Memory Management UnIt Ior the FaIrchIId CLPPER Processor
http:]]sunsIte.berkeIey.edu]DIenst]U]2.0]ComposIte]ncstrI.ucb]CSD-86-
289]1ZnsectIons=3
Memory Management, Page AIIocatIon and DeaIIocatIon and SwappIng In LInux
Systems http:]]sophIa.jpte.hu]IInux]tIk]node24.htmI (Iz knjIge LInux KerneI)
EverythIng you want to know about Memory Management
http:]]www.xanaIys.com]soItwaretooIs]mm]gIossary]m.htmI
CIock aIgorIthm http:]]www.cs.wIsc.edu]~bart]537]Iecturenotes]s21.htmI

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

171
10. Interfejs datotenog sistema

10.1 Datoteni koncept

Kontinualan logiki adresni prostor
Tipovi podataka: Numeric, Character, Binary
Tipovi programa: Izvorni, objektni (load image)
Tipovi dokumenata

Datotena struktura

Nikakva - podrazumjeva niz rijei, bajta
Jednostavna struktura sloga
Linije
Fiksna duina
Promjenljiva duina
Kompleksna struktura
Formatirani dokument
Relokatibilna datoteka za punjenje
Poslednje dvije mogu se simulirati sa prvom unoenjem odgovarajuih kontrolnih
karaktera
Ko odluuje:
Operacioni sistem
Program
Datoteni atributi

Ime - jedina informacija koja se dri u itljivoj formi
Tip - potreban za sisteme koji podravaju razliite sisteme
Lokacija- pokaziva na lokaciju datoteke na perifernom ureaju
Veliina - tekua veliina datoteke
Zatita - kontrolie ko moe imati pristup za itanje, pisanje ili izvravanje.
Vrijeme, datum i korisnike informacije - podaci za zatitu i sigurnost, kao i za
monitorisanje
Informacije o datotekama se uvaju u strukturi direktorija koja se odrava na
disku

Datotene operacije

ta se tano nalazi u strukturi direkorija, odnosno u svakom njegovom ulazu vezanim za
datoteku ili naziv direktorija. Direktorij u UNIX-u je samo ime i broj indeksnog vora (inode).
Indeksni vor sadri sve podatke vezane za datoteku, sve to se moe vidjeti sa komandom
ls l. On sadri informacije o svakom bloku podataka na disku vezanom za datoteke.
Kod MS DOS-a direktorij je znatno kompleksniji. U sutini, sadri informacije o datotekama:
Naziv 8 bajta
Nastavak 3 bajta
Atributi (datoteka/direktorij/labela ureaja, samo itajui ili sakriveni system
rezervisano 10 bajta (koristi se kod OS/2 I Wondows 9x)
Vrijeme 2 bajta
Datum 2 bajta
Broj klastera 2 bajta
Veliina 4 bajta
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

172
Unix dri sline informacije vezane za datoteku unutar indeksnog vora.

Operacije u datotenom sistemu se mogu svrstati u tri kategorije:
Opracija za rad sa direktorijem, modifikuju proctor imena datoteka. Kao na
primjer, mkdir(), rename(), creat(), mount(), link() i unlink().
Datotene operacije su kojima se dobijaju ili modifikuju karakteristike objekata.
Kao na primjer, stat(), chmod(), chown().
U/I operacije sa kojima se pristupa sadraju datoteka a ne podacima iz
indeksnog vora vezanog za datoteku. Primjeri su, read(), write() i lseek(). Ova
skupina operacija je znatno dua nego operacije iz druge dvije skupine.

Spisak operacija

Create - Formiranje datoteke
write - pisanje u datoteku
read - itanje datoteke
seek - pozicioniranje unutar
datoteke
delete - brisanje podataka
truncate
Open(Fi) - pretrauje strukturu direktorija na disku za Fi i premjeta sadraj u
memoriju
close(Fi) - premjeta trenutni sadraj Fi iz memorije na disk, ako je potrebno, I
zatvara datoteku.

Tipovi datoteka

Tip datoteke Uobiajeni nastavak Funkcija
Izvrni exe, com, bin ili prazno spreman za izvrenje
program u mainskom
jeziku
Objektni obj,o kompiliran, mainski jezik,
ne povezan
Izvorni kod c,p,pas,f77,asm,a izvorni jeyik u raznim
jezicima
batch bat, sh, cmd komande za komandni
interpreter
Tekst txt,doc tekstualni podaci,
dokumenti
Procesor rijei wp, tex, rrf i sl. Formati raznih procesora
rijei
Biblioteka lib, a Biblioteke rutina
Za tampu ili pregled ps, dvi, gif ASCII ili binarna datoteka
Arhiva arc, zip, tar skup datoteka grupiranih u
jednu ponekad i
komprimirani

Metodi pristupa
Sekvencijalni: najei nain itanja datoteka. Podacima se pristupa u
redoslijedu, dio po dio.
Read (itaj slijedei )
Write (pii slijedei)
reset
Nema operacije read posle poslednje operacije write
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

173
Sluajan pristup (engl. random): pristup bloku bez pristupa njegovog
prethodnog bloka. Moe se pristupiti bilo kojem bloku direktno bez obzira kolika je
datoteka. Ono to treba da znamo je kojem bloku treba da pristupimo
Read n
Write n
Pozicionira se na n
read next
write next
rewrite n, n je relativni broj bloka
Pristup sa kljuem: Pretraivanje blokova sa zadanom vrijednou kljua
(recimo, he tabele, direktorije, baze podataka)
Ovo obino nije obezbjeeno od strane operativnog sistema (neke verzije IBM
datotenih sistema ga imaju)
Model se moe posmatrati kao sluajan pristup.

Struktura direktorija

Direktorij predstavlja skup vorova koji sadre informacije o svim datotekama


I struktura direktorija i datoteke nalaze se na disku
Sigurnosne kopije ove dvije strukture se dri na trakama





Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

174
Informacije direktorija ureaja

Ime
Tip
Adresa
Tekua duina
Maksimalna duina
Datum poslednjeg pristupa (za arhivu)
Datum poslednjeg auriranja (za pregled)
Identifikacija vlasnika
Zatitne informacije

Operacije koje se izvode na direktorijumu

Pretrai datoteku
Kreiraj datoteku
Brii datoteku
Listaj direktorij
Preimenuj datoteku
Prolazak kroz datoteni sistem (konzistnost)

Logika organizacija direktorija

Logika organizacija direktorija se ozvodi da se postigne:

Efikasnost - brzo lociranje datoteke
Imenovanje - pogodno za korisnika
Dva korisnika mogu imati isto ime za razliite datoteke
Ista datoteka moe imati nekoliko razliitih imena
Grupisanje - Logiko grupisanje datoteka sa karakteristikama (t.j. svi paskal
programi, sve igre, )






Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

175
Direktorij sa jednim nivo-om

Predstavlja jedan direktorij za sve korisnike

Problem imenovanja datoteka
Problem grupisanja

Direktorij sa dva nivo-a

Poseban direktorij za svakog korisnika


ime staze
moe se imati isto ime datoteke za razliite korisnike
efikasno pretraivanje datoteka
nema mogunosti grupisanja datoteka

Direktorij sa strukturom drveta

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

176


Efikasno pretraivanje
Mogunost grupisanja datoteka
Tekui direktorij (radni direktorij)
cd /spell/mail/prog
type list

Apsolutno ili relativno ime staze
Kreiranje nove datoteke se vri u tekuem direktoriju
Brisanje datoteke se izvodi sa rm <ime_datoteke>
Kreiranje novog direktorija se izvodi na tekuem direktoriju
mkdir <dir_name>

Primjer: ako je tekui direktorij /spell/mail, onda mkdir count formira direktorij
count

Brisanje mail brie se cijelo drvo ispod imena direktorija


Acikliki graf direktorija

Predstavlja prirodno predstavljanje eme direkotrija
Ima djeljene poddirektorije i datoteke



Dva razliita imena (alias)
Ako dict brie list onda imamo apsolutne pokazivae na elemente u strukturi
direktorija
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

177
Rjeenje:
Pokazivai unazad, tako da moemo brisati sve pokazivae. Problem
predstavlja slogovi varijabilne duine
Entry-hold-count solution (broja prolazaka kod pretraivanja direktorija)

Opti graf direktorija

Kako garantovati da nema ciklusa
Dozvoliti samo vezu na datoteke a ne i poddirektorije (komanda link)
Garbage collection
Svaki put kad se doda nova veza ona se dodaje koristei cikliki detekcioni
algoritam da odredi da li je to u redu
Zatita
Vlasnik datoteke /kreator moi e da kontrolie:
ta moe biti uraeno sa datotekom
od koga
Tipovi pristupa
read
write
execute
append
delete
List
Lista pristupa i grupe

Naini pristupa: read, write, execute
Tri klase korisnika R W X
a. pristup vlasnika 7-------- 1 1 1
b. Pristup grupe 6-------- 1 1 0
c. Javni pristup 1-------- 0 0 1

Menager kreira grupu (jedinstveno ime), recimo G i dodaje neke korisnike u
grupu
Za jednu posebnu datoteku (recimo game) ili poddirektorij definiimo
odgovarajui pristup na slijedei nain

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

178
chmod 761 game
Aktiviraj (zakai) grupu na datoteku: chgrp G game

Zadaci:

10.1 Razmotrimo datoteni sistem gdje datoteka moe biti pobrisana i njen
diskovni prostor popravljen dok veza na tu datoteku postoji. Koji se problemi
mogu desiti ako se kreira nova datoteka na istom smjetajnom prostoru ili sa istim
apsolutnim imenom staze datoteke? Kako ovaj problem moe biti izbjegnut?

Odgovor: Neka je F1 stara datoteka a F2 nova datoteka. Korisnik koji eli da pristupi kroz
postojeu vezu e, u stvari, pristupiti datoteci F2. Primjetimo da e se koristiti prava
pristupa datoteke F1 umjesto datoteke F2, jer su definisana kod otvaranja. Problem moe
biti izbjegnut obezbjeujui da sve veze ka pobrisanoj datoteci se izbriu. Ovo se moe
uraditi na nekoliko naina.
a. odravanjem liste veza na datoteku i uklanjanjem svake kad se desi brisanje
b. Ostavljajui veze ne pobrisane a brisati ih kad se napravi pristup datoteci koja je
pobrisana
c. Odravajui listu referenci na datoteku (ili broja), briui datoteku tek kada se
uklone sve reference na datoteku

10.2 Neki sistemi automatski briu sve korisnike datoteke kod odjave korisnika sa
sistema ili ako job zavri, osim ako korisnik nije eksplicitno zahtjevao da oni treba
da ostanu, dok drugi sistemi zadravaju sve datoteke osim ako ih korisnik
eksplicitno pobrie. Prodiskutuj dobre osobine svakog pristupa.

Odgovor: Brisanjem svih datoteka koje nisu posebno sauvane od strane korisnika ima
prednost kod minimalnog prostora za datoteke koji je potreban svakom korisniku tako da se
ne spaavaju nepotrebne datoteke. Spaavanjem svih datoteka osim onih koje posebno
izbriemo je sigurnije za korisnika u smislu da korinsik nepanjom ne izgubi datoteke koje je
zaboravio da spasi.

10.3 Zato neki datoteni sistemi vode oveidenciju o tipovima datoteka, dok drugi
jednostavno preputaju korisniku ili ne implementiraju uopte viestruke tipove
datoteka? Koji je sistem "bolji"?

10.4 Slino, neki datoteni sistemi podravaju mnoge tipove struktura za podatke
datoteka dok drugi podravaju samo kao niz bajta. ta su prednosti i nedostatci
ovakvog pristupa?

10.5 ta su prednosti i nedostaci ako se zapisuje ime formiranog programa sa
njegovim datotenim atributima (kao to je dato kod Macintosh operacionog
sistema)?

Odgovor: Zapisujui ime formiranog programa zajedno sa njegovim datotenim atributima,
operacioni sistem moe implementirati karakteristiku takvu kao automatsku prozivku
datoteke pri emu se kod pristupa pregledavaju ove informacije. Ovo unosi optereenje kod
operacionog sistema i zahtjevani prostor u strukturi podataka koja opisuje datoteku.

10.6 Moe li se simulirati vienivo-ska struktura direktorija sa strukturom
direktorija na jednom nivou u kojoj se modu koristiti dovoljno duga imena
datoteka? Ako je odgovor da, objasnite kako bi se to postiglo i poredi je sa
vienivo-skom emom. Ako je odgovor ne, objasnite ta vas spreava da
izvrite uspjeno simulaciju. Kako bi se va odgovor promjenio ako su imena
datoteka ograniena na 7 znakova?

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

179
Odgovor: Ako se mogu koristiti duga imena datoteka onda je mogue simulirati vienivo-
sku strukturu. Ovo se moe uraditi, na primjer, koristei znak "." koji e ukazivati na kraj
poddirektorija. Dakle, na primjer, ime jim.pascal.F1 predstavlja datoteku F1 dok je
poddirektorij pascal koji se nalazi ispod korjenskog direktorija jim. Ako su imena datoteka
ograniena na 7 znakova, onda se ne moe koristiti navedena ema, dakle, odgovor je da se
ne moe simulirati na taj nain. Slijedei najbolji pristup u ovoj situaciji bi mogao biti
korienje specifinih datoteka kao jedna tabela sibmola (direktorija) za mapiranje dugih
imena datoteka, takvih kao to je jim.pascal.F1 u kraa imena, takva kao to je XX00743,
koja se onda koriste za stvarni pristup datoteci.

10.7 Objasnite svrhu operacija "open" i "close".

Odgovor: Operacija "open" informie sistem da je imenovana datoteka postala aktivna.
Operacija "close" informie sistem da imenovana datoteka nije vie u aktivnoj upotrebi od
strane korisnika koji je izdao operaciju "close".

10.8 Neki datoteni sistemi automatski otvaraju datoteku kada se na nju
referencira prvi put i zatvara je kada se proces zavri. Prodiskut prednosti i
nedostatke ovakvog pristupa poredei sa jednim tradicionalnim datotenim
sistemom gdje korisnik moe otvoriti i zatvoriti datoteku eksplicitno.

Odgovor: Automatsko otvaranje i zatvaranje datoteka oslobaa korisnika od poziva ovih
funkcija i ini se pogodnim za korisnika. Meutim, to zahtjeva vie overhead-a nego u
sluaju gdje se eksplicitno zahtjeva otvaranje i zatvaranje datoteka.



10.9 Dati primjer aplikacije u kojoj e se podacima u datoteci pristupiti na jedan
od slijedeih naina:

1. Sekvencijalno
2. Random

10.10 Neki datoteni sistemi obezbjeuju djeljenje datoteka odravajui
jednistvenu kopiju datoteke, dok drugi sistemi odravaju nekoliko kopija, po
jednui za svakog korisnika koji dijeli datoteku. Prodiskutuj svaki od pristupa.

10.11 U nekim sistemima, poddirektorij se moe itati i pisati od strane
neautorizovanog korisnika kao obina datoteka.

a) opiite probleme zatite koji mogu prizai u ovom sluaju,
b) Sugeriite shemu za rad sa svakim problemom zatite koji ste naveli pod a)

Odgovor:
a) Jedan dio informacije koji se uva u direktoriju je lokacija datoteke. Ako bi
korisnik mogao modifikovati ovu lokaciju, onda bi korisnik mogao pristupiti i
drugim datotekama zaobilazei shemu zatite pristupa.
b) Ne doszvoliti korisniku da direktno pie u direktorij. Umjesto toga, obezbjedite
sistemske operacije koje to mogu izvesti.

10.12 Neka datoteni sistem podrava 5000 korisnika. Pretpostavimo da elite da
dozvolite da 4990 ovih korisnika e moi da pristupi jednoj datoteci.

a) Kako e te specificirati ovu shemu zatite u UNIX-u?
b) Moete li sugerisati drugu emu zatite koja se moe koristiti efikasnije za
ove svrhe nego to to obezbjeuje UNIX?
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

180

Odgovor:
a) Postoje dvije metode za postizanje ovog:
1. Kreiranje kontrolne liste pristupa (engl. access control list) za imenima
za svih 4990 korisnika
2. Stavi ove korisnike u jednu grupu i postavi prava pristupa grupe. Ova
shema ne moe biti uvije implementirana poto je veliina korisnike
grupe ograniena od strane sistema.
b) U univerzalnu kontrolnu listu pristupa primjenjenu za sve korisnike sa razliitim
pravima pristupa. Kod ovog sluaja samo se ostalim 10 korisnika zabrani pristup
dok je svim ostalim inicijalno dozvoljen.

10.13 Istraivai sugeriu da, umjesto da imamo listu pristupa pridruenu svakoj
datoteci (koja specificira koji korisnik moe pristupiti i kako), da imamo
kontrolnu listu korisnika pridruenu svakom korisniku (koja specificira kojim
datotekama korisnik moe pristupiti i kako). Prodiskutuj prvu i drugu shemu.

Odgovor:
Kontrolna lista datoteka: Poto se informacije o pristupima su smjetene na jednom
prostoru, lake je da se promjeni kontrolna informacija pristupa i ova shema zahtjeva
manje prostore.
Kontrolna lista korisnika: Ovo zahtjeva manje overhead-a kod otvaranja datoteka.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

202
Kanjenje i propusnost

U diskusiji o performansama U/I ureaja esto se diskutira o propusnosti (engl. throughput) i
kanjenju (engl. latency). Propusnost je mjera koja govori koliko podataka kanal moe drati u
nekom trenutku vremena dok je kanjenje mjera koja kae koliko brzo bilo koji dio podataka
moe proi kroz kanal.

Autoput bi bio primjer koji se moe posmatrati. Broj traka odreuje broj auta koja mogu ui na
autoput u bilo kojem trenutku vremena i na taj nain definie propusnost autoputa. Kanjenje je
odreeno sa ogranienjem u brzini, tako da sa manjim brzinama se dobija vee kanjenje.

Upote reeno, kanjenje se definie kao vrijeme izmeu isporuke podataka i stizanja prvog bajta.
Propusnost se definie kao iznos podataka koji stie u jedinici vremena, poslije prijema prvog
bajta.

Poboljanje U/I performansi Kanjenje

U U/I ureajima, kanjenje se moe redukovati koristei bre ureaje za smjetanje podataka ili
korienjem ke memorije kod smjetanja podatka kao i drugim tehnikama unutar hijerarhije za
smjetanje podataka. Ako je lokalitet podatka intenzivna, ove tehnike reduciraju oekivano
vrijeme pristupa.

Privremena lokalnost podataka se koristi u hijerarhiji za smjetanje podataka zadravanjem
podataka u keu za ponovnu upotrebu. Prostorna lokalnost se koristi kod spremnika sa itanjem
unaprijed. Osnovni klju ovog uspjeha je transparentnost.

esto vrijeme kanjenja moe se reducirati korienjem poboljanih tehnika rasporeivanja.

Propusnost - Poboljanje U/I performansi

Propusnost se poboljava poveanjem nivoa paralelizma na ureajima za smjetanje podataka ili
U/I sabirnici.

Paralelizam se postie razmjetanjem podataka u trake (engl. striping) kroz nezavisne U/I
ureaje. Ovim se poveava propusnost koristei propusnost na svakom ureaju simultano. Ova
tehnika se koristila u memorijskim sistemima i poznata je pod imenom preplitanje. Takoe se
koristi i u RAID sistemima o kojima e biti rijei kasnije.

Redudantni niz nezavisnih (neskupih) diskova RAID

RAID je jedna nova tehnologija koja je pokazala da moe biti komercijalno uspjena. Ako je
propusnost memorije, aproksimativno, 150 MB/s a propusnost diska, aproksimativno, 10 MB/s,
primjeti se da U/I sa diska predstavlja usko grlo. Aplikacije vezane za ulaz/izlaz su ograniene sa
diskovnom propusnou a ne samo diskovnim kanjenjem. RAID tehnologija je uspjena zato to
uklanja ovo usko grlo.

RAID tehnologija rijeava pitanje propusnosti distribuiranjem pristupa disku kroz nekoliko
diskova simultano. Ovo dozvoljava viestrukim zahtjevima da se obrade paralelno, odnosno da se
jedan veliki zahtjev servisira sa propusnou gotovo jednakom propusnosti memorije. Tipine
aplikacije ukljuuju mnogo konkurentnih zahtjeva koji se mogu sresti na serveru ili
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

203
multiprogramskom okruenju (ranije se koristilo) a naune aplikacije gladne ulaza/izlaza se
izvravaju kao jedan zahtjev.

RAID Striping

RAID sistemi poveavaju propusnost distribuirajui podatke kroz nekoliko diskova koristei
tehniku poznatu pod nazivom striping (smjetanje podataka u trake). Kao rezultat primjene
ovakve tehnike je da propusnost nije ograniena na propusnost jednog diska ve na sumu
propusnosti nekoliko ureaja.

Kada razmiljamo o U/I sa RAID rehnologijom onda ne mislimo na sektore ili blokove. Umjesto
toga, mislimo na stripe-ove (trake) na koje su razmjeteni podaci. Traka je apstrakcija koja
predstavlja fundamentalnu jedinicu podataka koja moe biti pisana simultano kroz nekoliko
diskova. Ovaj iznos podataka koji moe biti smjeten u traku se zove irina trake (engl. stripe
width). Dio trake je smjeten na svakom od nekoliko diskova i naziva se jedinica trake (engl.
stripe unit). Veliina jedinice trake je broj bajta trake koji se smjeta na pojedinani disk.

Ako je irina trake S bajta i N diskova je raspoloivo za smjetanje podataka, onda je jedinica
trake S/N bajta. Na primjer, ako RAID ima 5 diskova raspoloivih za smjetanje korisnikih
podataka i irina trake je 100 K, svaka jednica trake je 100K/5 = 20 K.

Korist sekvencijalno itanje i pisanje velikih datoteka

Ako aplikacija, ili operativni sistem, u U/I spremnik ita cijelu traku u nekom trenutku vremena,
kontroler niza diskova moe izvriti paralelni pristup ka svakom od N diskova. Propusnost
viena od strane korisnika nije propusnost pojednianog diska nego ukupna propusnost svih
diskova.


Cijela traka izdana odjednom sa nekoliko diskova, brzinom N*Xmb/sec

Korist konkurentno itanje ili pisanje nekoliko datoteka

Ako se nekoliko zahtjeva napravi konkurentno, mogue ih je usluiti sve ili neke od njih
paralelno. Ovo je zato to podaci koji se nalaze u jedinici trake na razliitim diskovima mogu biti
izvreni paralelno. Na ovaj nain niz diskova moe servisirati viestruke zahtjeve u isto vrijeme.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

204
Naravno, ako su zahtjevi na jedinicu trake na istom disku onda ovi zahtjevi se moraju obraditi
serijski.

Slika: N zahtjeva odjednom se usluuju sa N razliitih diskova od kojih svaki ima brzinu
Xmb/sec

Podeavanje performansi

Ako se dri konstantan broj diskova raspoloiv za korisnika onda se moe podeavati
performanse niza diskova varirajui veliinu jedinice trake.

Ako je cilj da se povea propusnost, pojedinaan zahtjev mora se odraditi paralelno
kroz nekoliko diskova. Da bi postigli ovo, veliina jedinice trake mora biti mala s
respektom na veliinu zahtjeva, obezbjeujui da zahtjevi trae viestruke jedinice
traka. Na taj nain se moe pristupiti jednici trake paraleno na razliitim diskovima.
Ovakav nain izvravanja poveava propusnost. Ovo je esto korisno, na primjer, na
serverima gdje su zahtjevani podaci sluajno rasporeeni kroz nekoliko diskova. Ovo
implicira da postoji dobra vjerovatnoa da mnogi od zahtjeva mogu biti paralelni
(namjeteni da im se pristupa paralelno).
Ako je cilj da se smanji kanjenje, svaki zahtjev bi trebao biti vezan za jedan disk
unutar niza diskova. Ovo ostavlja druge diskove raspoloivim za servisiranje drugih
zahtjeva paralelno, i na taj nain smanjujui njihovo ekanje i kao posljedica toga
primjeeno kanjenje. Da se postigno ovo, veliina jedinice trake trebala bi biti velika
sa respektom na veliinu zahtjeva. Ako je zahtjev vezan na jednu jedinicu trake, drugi
diskovi u nizu diskova e biti raspoloivi za servisiranje drugih zahtjeva konkurentno.

Mnogi komercijano raspoloivi nizovi diskova dozvoljavaju administratoru da izabere nekoliko
raspoloivih veliina jednica trake kada se disk prvi put inicijalizira. Neki nizovi diskova se ne
mogu konfigurisati tako da se to razmatra u vrijeme nabavke.

Raspoloivost niza diskova

Kako broj diskova u nizu diskova raste, anse za greku na bar jednom disku unutar niza rastu
propurcionalno. Ovo se moe iskazati formulom:

Rapoloivost niza od N diskova = (raspoloivost jednog diska /N)

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

205
Pretpostavimo da je srednje vrijeme izmeu greaka, MTBF, diska jednaka 50.000 sati, odnosno
oko 6 godina. MTBF za niz od 70 diskova je jednaka 50000/70 oko 1 mjesec.

Nizovi diskova moraju biti zatieni od drugih tipova greaka koji se nesmiju zanemariti. esto
su RAID sistemi opremljeni sa duplim napojnim jedinicama ili kontrolerima, zato to oni mogu
proizrokovati kvar na nekoliko diskova istovremeno. Mnogi nizovi diskova dupliciraju podatke,
ali esto su kritini nepouzdani djelovi takvi kao to su kablovi i sl.

Veliki nizovi diskova bez redundancija su isuvie nepouzdani da bi bili korisni. Iz tog razloga
koristimo izraz redudantni niz neskupih diskova (RAID). RAID-ovi su djelimino ili potpuno
redundantni da bi obezbjedili da sistem moe tolerisati greke kritinih komponenata.

RAID pristupi

Postoji mnogo pristupa kako bi se postigla redundantnost diska koja se trai kod nizova diskova.
Mada posoje i dugaije klasifikacije, veina komercijalnih RAID sistema se mogu svrstati u
kategorije poznate kao RAID nivoi: RAID 1 do RAID 5. Postoje izmjenljivi diskovi koji mogu
reknostruisati oteeni podatke na disku u toku konkurentnog pristupa podacima (engl. hot
sparing).

Postoji nekoliko pokazatelja koji mogu biti koriteni da se procjene ovakvi nizovi diskova:

Koliko se prostora gubi ako se koristi redundancija?
Koja je vjerovatnoa pojave opasnih mjesta (engl. hot spot) u toku znatnog
optereenja diskova? Opasna mjesta su djelovi diskova kojima se pristupa znatno
frekventnije tako da uzrokuju usko grlo.
Kako performase degradiraju kada se dese greke na disku ili u toku oporavka
diska na osnovu redundantnih podataka?

RAID 1

RAID 1 je poznat pod nazivom miroring. Diskovi unutar niza diskova postoje u paru jedan
disk podataka i odgovarajui disk koji uva iste podatke (backup disk). Blokovi mogu biti itani
sa jednog od diskova u paru, ali u normalnim okolnostima podaci se uvijek piu na oba diska. U
zavisnosti od pretpostavki o tipovima greaka, pisanje na disk podataka i njegov backup disk
smije ili ne smije biti izvreno paralelno.

U sluaju greke, podaci se itaju i piu ka i sa radnih diskova. Kada se pokvareni disk zamjeni
onda se podaci mogu rekonstruisati sa odgovarajueg drugog diska.

Takoe je mogue locirati backup disk tako da bude udaljen vie kilometara. Na ovaj nain se
izoliraju podaci sa lokacija na kojima se moe desiti zemljotres, poplava ili poar.

Disk1 Backup disk 1 Disk 2 Backup disk 2 Disk n Backup disk n


RAID 2&3

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

206
RAID 2&3 koristi shemu za korekciju greke sa preplitanjem bita (engl bit-interleaved). Ovo
znai da redundatne informacije potrebne za korekciju greke se izraunavaju na osnovu bita od
odgovarajuih bita kroz nekoliko diskova. Ovo znai da sve glave moraju uvijek postati
zakljuane za pristup.

RAID 2 koristi shemu ECC, slinu onoj koja se koristi u mnogim memorijama baziranim na
silikonu. esto se koristi Heamming-ov kod koji zahtjeva log(N) diskova za korekciju greke.

RAID 3 koristi jednostavni bit pariteta. Mada paritet ne moe uopte biti korien kao kod za
korekciju greke ve samo kao kod za detekciju greke, ovo nije sluaj sa diskovima. Najee se
moe odrediti koji disk je pogrean. Kako se ne desi vie greaka, bit pariteta moe biti koriten
da se odredi vrijednost svakog bita na disku. Dobra osobenost je to se koristi samo jedan disk za
paritet i ovaj troak se amortizira svim drugim diskovima podataka.
RAID 2 se rijetko implementira zbog broja diskova potrebnih za redundanciju. ECC-u se
nepotrebno daje visok nivo pouzdanosti na najvie diskova.

Mada RAID 3 ne pati od ovog problema, takoe, se rijetko implementira. Poto se sve glave
diskova moraju premjestiti u stanje zakljuavanje, ovaj tip diskova ne moe podrati
konkurentnost pristupa.


RAID 4

Nasuprot RAID 2&3, RAID 4 je projektiran da dozvoli konkurentne pristupe diskovima unutar
niza diskova. On odrava mali gubitak RAID 3.

Ovo se postie korienjem pariteta prepletenih blokova. Jedan disk sadri samo blokove
pariteta. Svaki blok pariteta sadri informacije o paritetu za odgovarajue blokove na drugim
diskovima. Svaki put kad se izvri pisanje, odgovarajui blok pariteta se aurira i to na osnovu
starog pariteta, starih podataka i novih podataka.

Bit pariteta predstavljen je funkcijom XOR odgovarajuih bita kroz sve diskove. Pogledajmo na
primjer:
Disk
0
Disk
1
Disk
2
Parity
Disk
D
0,0
D
0,1
D
0,2
P
0
D
1,0
D
1,1
D
1,2
P
1
D
2,0
D
2,1
D
2,2
P
2
D
3,0
D
3,1
D
3,2
P
3
P
0
= D
0,0
XOR D
0,1
XOR D
0,1

Poto se disku pariteta treba pristupiti svaki put kad se izvri pisanje na neki drugi disk, onda on
posatje opasno mjesto koje moe dovesti do optereenja kanala prouzrokujui usko grlo.

Mada moe izgledati da se mora pristupiti svakom disku svaki put kad se pie bilo koji disk, to
nije sluaj. Sa starim paritetom, starim podacima i novom vrijednosti podataka moe se
izraunati novi paritet bez itanja bilo kojeg drugog diska.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

207
Neka treba pisati na D0,2, novi paritet se moe izraunati na slijedei nain:

P0-novi = (D0,2stari XOR D0,2-novi) XOR P0-stari

Normalna operacija itanja zahtjeva pristup samo jednom disku. Normalna operacija pisanja
zahtjeva pristup disku na koji se pie i disku pariteta. Kada neki od diskova ispadne, operacije
itanja i pisanja zahtjevaju pristup svim diskovima. Odgovarajui bitovi pariteta i bitovi podataka
se XOR-uju da bi se izraunali izgubljeni bitovi podataka.

RAID 5

Ova tehnika zapisa poznata je pod nazivom RAID 5 sa rotiranim paritetom. Radi isto kao to radi
RAID 4, izuzev to su blokovi pariteta distribuirani kroz sve diskove. Ova distribucija blokova
pariteta sprijeava pojavu opasnih mjesta (hot spot) koja se pojavljivala na disku pariteta kod
RAID 4. Blokovi pariteta se smjetaju tehnikom round-robin, rotiranjem po diskovima. Ovo je
poznato pod nazivom rotirajui paritet.

Disk
0
Disk
1
Disk
2
Disk
3
D
0,0
D
0,1
D
0,2
P
0
D
1,0
D
1,1
P
1
D
1,3
D
2,0
P
2
D
2,2
D
2,3
P
3
D
3,1
D
3,2
D
3,3
P
0
= D
0,0
XOR D
0,1
XOR D
0,1

P
3
= D
3,1
XOR D
3,2
XOR D
3,3

Normalna operacija itanja zahtjeva pristup samo jednom disku. Normalna operacija pisanja
zahtjeva pristup disku na koji se piu podaci kao i disku gdje se nalazi blok pariteta.

Kada disk ispadne, operacije itanja i pisanja zahtijevaju pristup svim diskovima. Odgovarajui
bit pariteta i drugi bitovi podataka se XOR-ju da bi se izraunao izgubljeni bit podatka.

Korekcija greke detekcija greke

Spomenuto je ranije da RAID 2 zahtjeva Log2(n) diskova pariteta. Prodiskutirajmo o korekciji
greke i detekciji greke.

Detekcija greke je mogunost da se otkrije da primljena poruka nije bila korektna. Poruka moe
biti primljena ili sa oteenog diska ili iz mree.

Korekcija greke predstavlja mogunost da se prepozna greka u poruci i da se ispravi greka
tako se se poruka prihvati korektnom.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

181
Implementacija datotenog sistema

Fizika organizacija disk ureaja
Kada govorimo o diskovima onda mislimo na ureaj poznat pod nazivom disk pack. Svaki
ovakav ureaj sadri nekoliko diskova, nazvanih jo i diskovna ploa, koje su smjetene jedna
iznad druge. Svaka disk ploa ima dvije povrine, gornju i donju. Podaci se smjetaju na ove
povrine pri emu svaka od ovih povrina ima glavu za itanje i pisanje podataka.
Svaka od ovih povrina je podjeljena na koncentrine krugove koje nazivamo stazama. Svaka
staza (engl. track) je podjeljena na sektore sa graninicima sektora. Ovi graninici polaze iz
centra povrine diska ka njegovom kraju. Sektor je osnovna jedinica za smjetanje podataka na
disk. Diskovima se pristupa adresiranjem sektora tako da kad god se pristupa disku cijeli sector
mora biti proitan ili upisan. Uobiajena vrijednost za veliinu sektora je 512 bajta ali moe biti i
neka druga.
Kao posljedica sektor bazirane organizacije diska je da je potpuna gustoa podataka na mediju
postignuta samo u centru diska, na mjestu gdje su sektori najmanji. Primjetimo da sektori koji su
udaljeniji od centra imaju vie smjetajnog kapaciteta. Mnogi moderni ureaji odbacuju
organizaciju po sektorima i formiraju zone (zonski diskovi). Kao i sektori, svaka zona ima isti
kapacitet, ali nasuprot sektoru, vie zona je smjeteno na vanjskim nego na unutranjim stazama.
Sve glave najvie disk ureaja se premjetaju sa staze na stazu zajedno. Iz ovih razloga esto je
korisno posmatrati ove staze na odgovarajuoj lokaciju na svim povrinama. Skup ovih staza
zovemo cilindrom.
Da li sve glave mogu itati odjednom? Mehanizam za itanje koristi samo jednu diskovnu glavu
za itanje tako da ostale glave se pomjeraju a samo jedna je aktivna kod itanja odnosno pisanja.
Postoje tri tipa kanjenja koje se moe desiti kada pristupamo podacima na disku. Oni su
predstavljeni u redosljedu njihove vanosti.
Kanjenje kod pozicioniranja na stazu (engl. seek latency): predstavlja iznos
vremena potreban da se premjeste glave na odreeni cilindar.
Roraciono kanjenje (engl. rorational latency): predstavlja iznos vremena potreban
disku da se okree do odgovarajueg sektora koga treba itati ili pisati.
Kanjenje kod prenosa (engl. transfer latency): Iznos vremena koji je potreban da
se cijeli sektor ili nekoliko sektora koji se nalaze ispod glava diska proita.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

182

Podaci na disku
Glave koje se koriste za itanje podataka sa disk ureaja su u sutini iani kalemi. Ako one
prolaze kroz magnetno polje, one osjeaju promjene u polju kao protok struje kroz icu. Ovo
znai da glave ne mogu oosjetiti postojanje 0 i 1 kao sjeverni ili juni pol. Umjesto toga, one
mogu samo osjetiti promjene sa jednog pola na drugi. Ta promjena stvara struju u glavi za
itanje. Djelovi kodirani sa nizom 1 ili 0 nee generisati nikakvu struju i glave ih nee
osjetiti.
Format podataka sektora
Sektor je organizovan na slijedei nain:
__________________________________________________________
| ________| ______________________________________| __________|
pr ol og podaci epi l og

adr esa di ska kont r ol na suma ( checksum)

Poetni dio sektora, prolog, ukljuuje sinhronizacijske oznake koje su potrebne za sinhronizaciju
sata koji se koristi za itanje sektora da bi bio sinhronizovan da bi prepoznali poetak podataka
na sektoru. Iza ovoga, sector obino sadri punu diskovnu adresu sektora. Termini prolog i epilog
nisu univerzalni, koriste se termini zaglavlje i rep, preambula i postambula, i imaju isto
znaenje.

Adresa diskovnog sektora je ukljuena u prolog iz mnogih razloga. Prvo, dozvoljava verifikaciju
hardvera za pozicioniranje glave i logike za izbor diskovne povrine da rade korektno, ili bar da
rade na isti nain kako su radili kad je disk bio formatiran. Drugo, na nekim diskovima,
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

183
mehanizam za pozicioniranje glave koristi broj cilindra ili staze da se pomjeri na pravu stazu
kako bi popravio trenutnbu nesinhronizovanost i na kraju adresna logika mnogih disk sistema se
vezuje na broj sektora zapisan na poetku svakog sektora da bi se odredilo da li je dati sector onaj
kome korisnik eli da pristupi.

Ma kraju prologa obino se nalazi kontrolna suma. Jedanput, kada je prolog zapisan
formatiranjem diska, on se vie ne pie. Kada se zahtjeva operacija pisanja, hardver poinje
itanje i verificiranje prologa. Poslije toga poinje sa pisanjem podataka.

Epilog sadri obavezno kontrolnu sumu. Sve operacije itanja i pisanje sektora moraju obraditi
cijeli sector (piui cijeli sector I na kraju kontrolnu sumu, ili itajui cijeli sector iverificirajui
kontrolnu sumu). Da li kontroler moe dozvoliti funkcije djelominog itanja sektora? Kada bi i
mogao, morao bi itati cijeli sector da bi provjerio kontrolnu sumu.

Formatiranje diska

Kada se novi disk stavi u disk ureaj, on mora biti formatiran. Ovu ukljuuje pisanje sluajnih
podataka, ili svih nula na svakom sektru ili svakoj stazi diska. Vaan dio kod operacija
farmatiranja je prolog i epilog na svim sektorima koji su zapisani.

Uobiajeno je da softver za formatiranje verificira svaki sector kod itanja i pisanja, prikuplja
dobre sektore u strukturu slobodnih blokova podataka I kreira datoteni system na nekim
tipovima diskova.

Kada je disk interfejs konfiguriran za formatiranje diska, odgovarajui softver moe pisati vaee
podatke da bi popunio odgovarajue sektore na disku. Ako se sektrori rasporede u redoslijedu
moe biti nemogue da se itaju ili piu susjedni sektori punom brzinom. Ovo je iz razloga zato
to nastaje prekid na kraju jednog itanja/pisanja koje se izvri i moe biti kasno poeti itati
slijedei sector bez ekanja punog okretaja diska.

Da bi izbjegli ovaj puni okretaj diska, programi za formatiranje diska zapisuju sektore u
prepletenom redosljedu tako da logiki susjedni sektori nisu fiziki susjedni. Na primjeru su
prikazani prepleteni sektori na stazi sa 8 sektora:

0 1 2 3 4 5 6 7 ne pr epl et eni
0 4 1 5 2 6 3 7 pr epl et eni sa j edni mpr eskokom
0 3 6 1 4 7 2 5 pr epl et eni sa dva pr eskoka

Softverski interfejs prema disku
Da bi itali ili pisali sector na disku, sotver mora da uradi slijedee:
1) Navede adresu memorijskog spremnika
2) Navede jedan od nekoliko disk ureaja koji kotrolira kontroler
3) Navede kako da se glava diska pozicionira; ovo se odnosi na dio odrese koji govori o
cilindru.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

184
4) Navede koja e glava za pisanje ili povrina na disku biti korienja na odabranom
ureaju.
5) Navede koji sector izabrane staze na cilindru i povrini se koristi
6) Navede se smijer prijenosa podataka
Jednostavni disk kontroleri mogu da imaju posebne registre koje je mogue pisati softverom.
Transfer podataka poinje samo kada se potpuna komanda izda kontroleru identificirajui smjer i
itani/pisani dio na disku. Dakle, punjenje memorijskih adresa ili polja na disk adresama nema
efekta sve dok se softverom ne specificira jedna operacija za itanje ili pisanje.
Kada se zavri operacija onda se u statusnom registru prikae ovo stanje koje indicira bilo koju
greku koja se detetktovala. Pored toga, stanje zavretka operacije rezultira zahtjevom za prekid
koji ima smisla da bi obavjetio operativni system da je data operacija ulaza/izlaza zavrene i da
se prema datom vlasniku izdane operacije pokrene procedura. (vjerovatno se process nalazio u
stanju blokiranih procesa te je u tom smislu potrebno pomjeriti u red ekanja spremnih procesa
na processor.)

Struktura datotenog sistema

Struktura datoteke
Logika jedinica sa uvanje podataka
Skup povezanih informacija
Datoteni sistem se nalazi na diskovima koji predstavljaju sekundarno mjesto
smjetanja podataka
Datoteni sistem je organizovan u nivoima
Kontrolni blok datoteke - FCB (File control block) - struktura podataka koja sadri
informacije o datoteci

Sa stanovita OS programera i korisnika operativnog sistema datoteni sistem se moe posmatrati
na slijedei nain:

OS programer Korisnik
Blok orijentisani fiziki sektori Imenovane datoteke sastavljene od bajta
Nema zatite Ima zatite
Kod kvara na disku podaci se gube Robusna maina na mogue greke (RAID 5 -
hot swap)

Komponente datotenog sistema
1. Upravljanje smjetajnim prostorom (engl. storage menagement)
Ureuje blokove diska u datoteke
2. Imenovanje (engl. naming)
3. Zatita - odrava korisnike datoteke sigurnim
4. Pouzdanost


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

185
Struktura datotenog sistema
Datoteni sistem se smjeta na diskove. Diskovi mogu biti podjeljeni u jednu ili vie particija sa
nezavisnim datotenim sistemom na svakoj particiji. Sektor 0 na disku se naziva MBR (engl.
Master boot record) i koristi se kao prvi korak kod punjenja operativnog sistema. Na kraju MBR
nalazi se opis particija. Ovaj opis particija sadri poetnu i krajnju adresu svake particije ( za
detaljan opis vidi projekat 1). Jedna od particija je oznaena kao aktivna i kod punjenja sistema
BIOS ita MBR i izvrava kod u njemu. Ovaj program mora da uoi koja je particija aktivna i da
pree na itanje prvog bloka aktivne particije i pone izvravanje programa u tom bloku. Ovaj
program predstavlja punjenje operativnog sistema koji se nalazi u toj particiji. Svaka particija
sadri boot bloki ak kad i nema na sebi operativni sistem.
Poslije boot bloka izgled datotenog sistema varira od jednog datotenog sistema do drugog.
Uobiajeno je da datoteni sistemi sadre informacije kao to su date na slici:
Boot blok Super blok Upravlj.slob.prostorom Indeksni blokovi Korjenski direktorij Datoteke i
direktoriji
MBR Particija 1 Particija 2 Particija 3 Particija 4

Prvi element poslije boot bloka predstavlja super blok. On sadri sve kljune parametre o
datotenom sistemu i nalazi se u memoriji u toku rada operativnog sistema. Informacije koje
sadri su: magini broj koji inedtificira tip datotenog sistema, broj blokova u datotenom
sistemu i druge kljune administrativne informacije.
Slijede blokovi koji slue za voenje evinedcije o slobodnom prostoru, na primjer u obliku bit
mapa ili ulananih lista. Zatim slije informacije o indeksnim blokovima, niz struktura podataka i
to jedna po jednoj datoteci. Poslije toga slijedi blokovi podataka u kome su upisani podaci o
datotekama u korjenskom direktoriju. Na kraju dolaze blokovi u kome su upisani podaci o
datotekama iz korjenskog direktorija kao i poddirektoriji i datoteke u njema.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

186
Upravljanje smjetajnim prostorom
Kljuni problem u upravljanju smjetajnim prostorom ukljuuje:
Nezavisnost medija (CD ROM, flopi disk, disk itd.)
Efikasno korienje prostora medija (minimizacija internog rada)
Porast, unutar sadraja datoteke kao i broju kreiranih datoteka.
Ovi problemi se razlikuju od upravljanja meorijom u nekoliko sluajeva:
U/I ureaji su tako spori da interni rad kod pristupa kompleksnijim strukturama
podataka kao to su povezane liste moe preklopiti U/I operacije i znatno uticati
na efikasnost pristupa
Logika kontinualnost ne podrazumjeva i fiziku kontinualnost. Bajtovi datoteke
mogu biti smjeteni na veliki broj naina na mediju a da ih mi vidimo kao
kontinualne.
Ekvivalent od tabele stranica virtualne memorije moe se na efikasan nain
smjestiti na disk a da pri tome ne zahtjeva hardversku podrku.
Blokovi i fragmentacija
U toku diskusije o upravljanju memorijom, reeno je da je bajt najmanja adresibilna jedinica
memorije. Ali system za upravljanje memorijom je koristio vee i pogodnije memorijske
apstrakcije, stranice i segmente. Datoteni system e koristiti isti pristup.
Mada su sektori najmanje adresibilne jedinice kod pristupa disku, datoteni system e upravljati
smjetajnim prostorom u jedinicama viestrukih sektora. Razliiti operativni system daju ovoj
jedinici razliita imena. CMP koristi ime extent, MS DOS ga naziva klaster dok Unix sistemi
ga nazivaju blok. Ali bez obzira kako ga mi zvali to u sutini predstavlja logiki sector.
Operacioni system e koristiti sve operacije nad cijelim blokovima.
Interna fragmentacija je rezltat smjetanja podataka u cijelim jedinicama blokova ak i kad se
manji smjetajni prostor zahtjeva. Ali kao to je bio sluaj sa memorijom, ovaj pristup izbjegava
eksternu fragmentaciju.
Kljune razlike u odnosu na upravljanje smjetanjem u memoriju
Varianse u veliini datoteka su vee nego to je to sluaj kod procesa. Ovo predstavlja
dodatne zahtjeve na structure podataka koje se koriste za upravljenje ovim prostorom.
Stalno smjetanje podataka podrazumjeva i vrsto smjetanje greaka. U sluaju problema
sa memorijom problem nije mogue rijeiti ponovnim pokretanjem datotenog sistema.
Disk pristupi su mnogo sporiji nego pristupi memoriji, to nam daje dovoljno vremena da
napravimo odluku?


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

187
Alokacija smjetajnog prostora
Sada se pozabavimo ulogom datotenog sistema i karakteristikama medija kojim upravlja
odnosno razmotrimo alokaciju smjetajnog prostora. U toku diskusije razmotrie se nekoliko
razliitih pravila i struktura podataka korienih za odkluku koji disk blokovi se alociraju
pojedinanoj datoteci.
Kontinualna alokacija
Vratimo se na diskusiju o tehnici upravljanja memorijom. Ponimo sa jednostavnim prijedlogom.
Sugeriimo da bi svaka jedinica podataka se mogla smjestiti kontinualno u fizikoj memoriji.
Ovaj pristup bi se mogao kontrolisati sa listom, pravilima za smjetanje kao to su first fit i
kompakcijom.
Ovaj jednostavan pristup je primjenljiv i na datoteni system. Ali naalost, ima neke oite mane:
Eksterna fragmentacija e se javiti kao posljedica malih nealociranih upljina.
Razrijeenje eksterne fragmentacije preko kompacije mogue ali je brzina kojom
se izvodi kritina tako da nije izvodiva.
Porast datoteka bi mogao dovesti do problema jer bi to uzrokovala i eventualne
relokacije cijelih datoteka.
CD ROM predstavljaju izuzetak od ovog pravila, razlozi su njegovo smjetanje
koje se samo jedanput izvodi.
Alokacija datoteka korienjem povezane liste
U cilju da elimiemo problem eksterne fragmentacije, treba da raskinemo vezu izmeu fizike i
logike kontinualnosti, hoemo da steknemo mogunost da zadovoljimo zahtjeve sa nesusjednim
blokovima a pri tome da ouvamo iluziju o kontinualnosti. Da bi uradili ovo, potrebna nam je
struktura podataka u koju smjetamo informacije o logikim odnosima izmeu fizikih blokova
na disku: koji fiziki blokovi su logiki susjedni jedan drugom.
Pritup bi bio da se koristi povezana lista. Mogli bi razmotriti pristup da cijeli disk bude skup
povezanih lista gdje jedan blok predstavlja element liste. Kod datoteke, svaki blok bi morao
pokazivati na slijedei blok u datoteci. Ali i ovaj pristup ima probleme koji se reflektuju u
slijedeem:
Blokovi ne sadre samo podatke datoteka tako da moraju biti ispravno
interpretirani kod svakog pristupa.
Pristup koji nije sekvencijalan je veoma spor, zato to se mora pristupiti
predhodim blokovima u datoteci koji bi ukazivali na slijedei blok u datoteci.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

188



Pokaziva na
slijedei

Informacioni
sadraj
Alokacija je potrebna kao i pokaziva na slijedei, vidi primjer gdje datoteka poinje
na bloku broj 9
Jednostavna je - potrebna je samo poetna adresa
Sistem za upravljanje slobodnim prostorom - nema gubitaka slobodnog prostora
Ranom pristup nije mogu
Mapiranje
Blok kome se pristupa je blok u povezanoj listi blokova koji predstavljaju
datoteku
Pomjeraj u bloku je R+1 zato to prva rije predstavlje pokaziva na sledei
blok, a ostatak bloka predstavlja korisnu informaciju datoteke.
FAT - File allocation table - alokacija prostora na disku koja se koristi kod MS-DOS-
a i OS/2.

Alokaciona tabela datoteke
Drugi pristup bi mogao nas vratiti rijeenju za RAM tabeli stranica. Tabela stranica nee raditi
za disk zato to process nema svoje sopstveno mapiranje iz logikog adresnog prostora u fiziki.
Umjesto ovog, mapiranje je univerzalno za cijeli datoteni system.
Prisjetimo se invertovane tabele stranica. Ovo je pristup mapiranju za cijeli system. Primjenie se
slian system mapiranja za datoteni system. Pogledajmo ovaj sluaj na primjeri MS DOS-a.
Kaemo da je ulaz u direktorij pridruen imenu datoteke (8+3) koje je dao korisnik sa
odgovarajuim imenom na niskom nivou, kao i brojem prvog klastera (itaj bloka) koji ini
datoteku. Objasnimo sada razloge za ovo.
MS-DOS koristi pristup slian invertovanoj tabeli stranica. Odrava jednu tabelu sa jednim
ulazom za svaki klaster na disku. Na tom mjestu se nalazi pokaziva na klaster koji ga logiki
prati. Kada se otvori direktorij onda on sadri adresu (broj klastera) prvog klastera u
odgovarajuoj datoteci. Ovaj broj se koristi kao jedan indeks u tabeli mapiranja koja se zove
alokaciona tabela datoteke (engl. FAT File Allocation Table). Ovaj ulaz obezbjeje broj
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

189
slijedeeg klastera u datoteci. Ovaj postupak se ponavlja sve dok ulaz u odgovarajuu tabelu ne
ukae na poslednji klaster datoteke koji sadri oznaku kraja a ne adresu na slijedei klaster.
Sloena hash pretraivanja nisu potrebna zato struktura drveta kod direktorija obezbjeuje
mapiranje. Ne treba da pratimo mapiranja zato to svi klasteri moraju biti prisutni na disku
uglavnom ne postoji rezervni podaci (engl. backing store) za podatke na disku. Da bi se koristio
ovakav system potrebno je znati unaprijed broj klastera tako da FAT moe boraviti na disku.
Ali ovaj pristup ima ogranienja:
Cijeli FAT mora biti u memoriji u toku rada. Za jedan 1 GB disk, 2
32
bajta sa 4
Kbajta klasterima, potrebno je 1 MB memorije (2
20
bajta) koja e uvati FAT ako
se 4 bajta koriste za svaki ulaz.
U stvari, rani MS DOS sistemi nisu keirali tabelu u memoriji tako da je tada pristup bio spor
ak i za MS DOS standarde.
Prostor je morao biti alociran i za upljine u datoteci. To znai da nealocirani dijelovi unutar
prostora datoteke e okupirati fiziki proctor. Ovo predstavlja gubitak diskovnog prostora.
Zamislimo ta e se desiti kada proces zapie svoju sliku memorije na disk (engl core dump).
Sada, prisjetimo se da system moe da ima i 64 bitni adresni prostor. Bilo bi lijepo kad se ne bi
alocirale prazne upljine na disku kao to se to radilo u memoriji.

Alokacija s indeksnim vorom

Unix koristi sloeniji i elegantniji system nego MS DOS. Bazira se na strukturi podataka koja se
naziva indeksni vor (engl. inode). Postoje dvije vane karakteristike pristupa sa indeksnim
vorom.
Tabela mapiranja se koristi po datoteci umjesto jedne FAT tabele za cijeli system
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

190
Adaptacije tabele stranica sa vie nivoa se koristi da efikasno podri iroki opseg
veliina datoteka i nealociranog prostora .
Svaki indeksni vor na nivou 0, najvie vanjski indeksni vor, je podjeljen u nekoliko razliitih
polja:
Atributi datoteke: najvie stvari koje komanda ls l moe prikazati je smjeteno
ovdje.
Direktno mapiranje: Ulazi predstavljaju direktne adrese na odgovarajue
blokove podataka. Ovo mapiranje obezbjeuje mapiranje sa logikog broja bloka
datoteke na fiziko broj bloka datoteke na disku.
Indirektno mapiranje 1: Ulazi sadre inderektno mapiranje na drugi nivo koji
predstavlja direktno mapiranje kao je opisano gore. Ovdje se provodi mapiranje
logikog broja bloka u tabelu direktnog mapiranja na stavrne fizike blokove.
Indirektno mapiranje 2: ulazi sadre indirektno mapiranje koje zahtjeva dva
nivoa indirekcija. Ovo mapiranje mapira logiki broj bloka u tabelu koja sadri
indirektno mapiranje 1 kao to je opisano gore.
Indirektno mapiranje 3: Ulazi sadre mapiranje koja zahtjevaju tri nivoa
indirekcija. Ovdje se mapira logiki broj bloka u tabelu sa indirektnim
mapiranjem 2 opisanim gore.
Datoteke do izvjesne veliine se mapiraju koristei samo direktna mapiranja. Ako veliina
datoteke pree neki limit onda se koristi indirektno mapiranje 1. Ako dolazi do rasta datoteka
tako da se svi njeni blokovu ne mogu predstaviti sa postojeim mapiranjeim onda se koriste i
indirektna mapiranja 2 i 3. Ovaj system dozvoljava balansiranje izmeu kompaktnosti
smjetajnog prostora na sekundarnom mediju i internog rada u sistemu alokacije. U nekom
smislu postoji optimizacija za male datoteke.


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

191


Kombinovana ama: UNIX (4K po bloku) (drugi put)


Procjena maksimalne veliine datoteke
Sa datih K direktnih ulaza i I indirektnih ulaza po bloku, veliina najvee datoteke koju moemo
memorisati je K + I + I
2
+ I
3
blokova.
Ako treba da alociramo datoteke vee nego to postojei sistemi mogu onda bi trebali da
redukujemo broj ulaza za direktne blokove i uvedemo nivo 4. Ovaj process bi se mogao
ponavljati dok se cijela tabela ne bi sastojala od indirektnih blokova.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

192

Upravljanje slobodnim prostom

Bit vektor (n blokova)

0 1 2 .. n-1


bit[i] = 0 onda je blok[i] slobodan
1 onda je blok[i] zauzet

Izraunavanje broja bloka

broj bita po rijei * broj rijei sa vrijednou 0 + ofset od 1 bita

Bit mapa zahtjeva poseban prostor. Primjer:

Veliina bloka = 2 na 12 bajta
Veliina diska = s na 30 bajta = 1 GB
n = 2 na 30 /2 na 12 = 2 na 18 (ili 32 KB)

Lako se dobijaju kontinualne datoteke
Povezane liste (slobodne liste)
Ne moe se dobiti konitinualan prostor lako
Nema gubitka slobodnog prostora
Grupisanje
Brojanje

Treba zatititi
Pokaziva na listu slobodnih blokova
Bit mapu
mora biti drana na disku
kopija u memoriji i na disku mogu se razlikovati
Ne smije se dozvoliti da blok[i] ima situaciju takvu da je bit[i] =1 u
memoriji a bit[i] =0 na disku
Rjeenje:
Postavi bit[i] = 1 na disku
Alociraj blok[i]
Postavi bit[i] = 1 u memoriji

Implementacija direktorija

Linearna lista imena datoteka sa pokazivaima na blokove podataka
jednostavno se programira
troi se vrijeve veliko prilikom izvravanja
Hash tabela - linearna lista sa hash strukturom podataka
smanjuje vrijeme pretraivanja direktorija
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

193
Kolizija - situacija gdje dvije datoteke sa hash organizacijom pokazuje na iste
podatke
Fiksna veliina

Efikasnost i performase

Efikasnost zavisi od:
Alokaicje diska i alogoritama koji rade sa direktorijom
tipova podataka koji se uvaju u datoteci direktorij
Performanse
disk ke (disk cache) - posebna sekcija glavne memorije za frekventno
korienje blokovima
Free-behind i read-ahead - tehnike koje optimiziraju sekvencijalni pristup
poboljanje performasi PC-a dodjeljivanje posebnog djela memorije kao
virtuelni disk ili RAM disk.
Vrste keeva: icache inode ke, dcache direktorij ke i ke podataka.

Postupak oporavka (Recovery)

Kontrolor konzistentnosti - poredi podatke u strukturi direktorija sa blokovima
podataka na disku i pokuava da sredi nekonzistentnosti
Koristi sistemske programe da se izvri back-up podataka na drugi ureaj (flopi disk,
magnetna traka)
Oporavak izgubljenih datoteka ili diska - backup-om sminljenih podataka

Primjeri datotenih sistema:

FAT, VFAT, VFAT32, NFS, UFS, FFS, ext2, ext3, minix, XFS, AFS, ISO9660.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

194
Od open() do inode-a

Operativni sistem odrava dvije strukture podataka koje predstavljaju stanje otvorenih datoteka.
Prva struktura se odnosi za svaki proces i zove se tabelom koja opisuje datoteku (engl. file
descriptor table fdt ) a duga se odnosi na cijeli sistem i zove i tabelom otvodenih datoteka
(engl. open file table).

Kada proces pozove funkciju open(), u tabeli otvodenih datoteka se formira novi element koji se
odnosi na tu datoteku. Pokaziva na ovaj ulaz je smjeten u procesov fdt. Fdt predstavlja niz
pokazivaa na tabelu otvorenih datoteka. Kaemo da indeks u fdt predstavlja opisnik datoteke
(engl. file descriptor - fd). On se vraa nakon izvrenja komande otvaranja datoteke, open().
Kada jedan proces pristupa datoteci, on koristi fd kao indeks u fdt da bi pronaao orgovarajui
ulaz u tabelu otvodenih datoteka.

Tabela otvorenih datoteka sadri neke podatke o svakoj datoteci:

Tekui pomjeraj u datoteci, odnosno slijedeu poziciju kojoj e se pristupiti)
Referentni broja (objanjenje u djelu sa fork())
Nain otvaranja datoteke, tipovi pristupa
Oznake koje se proslijeuju u direktivi open() (samo za itanje, samo za pisanje, kreiranje
i sl.)
Pokaziva na jednu veziju inode-a u RAM-u (neto skraena verzija indeksnog vora za
svaku otvorenu datoteku koja se dri u RAM-u, ostale se dre na disku).
Pokaziva na strukturu koja sadri pokazivae na funkcije kao to su read(), write(),
close(), lseek() i sl. u datotenom sistemu koji sadri ovu datoteku. Ovo je ista struktura
koju smo vidjeli kad smo diskutovali interfejst datotenog sistema ka U/I ureajima.

Svaki element tabele otvorenih datoteka odrava njegov sopstveni pokaziva itaj/pii iz tri
vana razloga:

itanje od strane jednog procesa ne utie na datotenu poziciju drugog procesa
Pisanje je vidljivo svim procesima ako datoteni pokaziva dosegne do lokacije pisanja.
Program ne mora da obezbjedi ove informacije na svaki poziv.
Vana primjedba: u modernism operativnim sistemima, tabela otvorenih datoteka je obino
duplo povezana lista a ne statika tabela. Ovo obezbjeuje da je , tipino, razumne veliine i u
stanju da prihvati optereenja kod korienja velikog broja datoteka.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

195
ta se deava kada process pristupa datotekama

Pogledajmo vrijeme izvravanja operacije itanja i pisanja u datoteku.

Svaka operacija bi mogla zahtijevati razrijeenje puta imena datoteke, kontrolu zatite
pristupa i sl.
Informacije kao to je tekui pomjeraj u datoteci se mora odravati,
Dugorono stanje je potrebno takoe odravati, posebno u svijetlu injenica da nekoliko
procesa koji koriste datoteku moe zahtijevati razliite poglede na datoteku. Potrebno je,
takoe, inicirati odgovarajue bafere za datoteke.

Rijeenje je da se amortizuje vrijeme ovog internog rada nad mnogim operacijama nad
datotekom pregledavanjem operacija unutar sesije. Funkcija open() kreira sesiju i vraa
cjelobrojni identifikator (engl handle) dok operacija close() zatvara sesiju i brie stanja. Interni
rad moe se platiti jedanput i podjeliti sa svim operacijama.


Posljedice izvoenja operacije fork()

Ako ne postoji izvoenje operacije fork() onda je mapiranje jasno definisano izmeu fdt i tabele
otvorenih datoteka. Uvoenjem fork() nastaju komplikacije poto je fdt procesa roditelj kopiran.
Drugim rijeima, process dijete je povukao sve dtf-e roditelja ali novi ulazi nisu kreirani u
tabeli otvorenih datoteka.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

196
Interesantna posljedica ovog je da itanja i pisanja jednog procesa imae za posljedicu kod
drugog. Ako process roditelj ita ili pie on e promeniti datoteni pomjeraj u tabeli otvorenih
datoteka ovo e uticati na process roditelj kao i na sve procese djecu. Ito vai ako operacije
izvre procesi djeca.
ta e se desiti kad process roditelj ili dijete zatvori djeljeni fdt?
Prisjetimo se da tabela otvorenih datoteka sadri referentni broja. Ovaj referntni broja
se dekrementira sa zatvaranje datoteke.
Smjetajni prostor se ne uklanja sve dotle dok referentni broja je razliit od nule koji
ukazuje da postoji datoteka u tabeli otvorenih datoteka.
Kada referentni broja dostigne nulu, smjetajni prostor se uklanja.tj. komanda rm
moe reducirati broj veza na 0, ali ulaz se uklanja tek kada svi izdani open iskazi
probau odgovarajue close iskaze na toj datoteci.
Zato kopiramo fdt operaciom fork()?
Konzistentno je sa pojmom fork koji kreira tanu kopiju procesa roditelja.
Dozvoljava korienje anonimnih datoteka od strane procesa djeca. Nikad nije potrebno
da se zna ime datoteke koju koristi u stvari, datoteke ne posjeduju vie imena jer se radi
sa njima preko broja koji ukazuje na njegov fdt sa podacima
Uobiajeno je da se ovo koristi u komandmo jeziku (shell) kod implementacije U/I
redirekcija. (<and>). Kako se ovo radi?
Datoteke mapirane u memoriju
Do sada smo govorili o nainima pristupa datotenog sistema datotekama i sada pogledajmo
kako se ovo radi na drugaiji nain. Mogue je raditi sa datotekom preko VMM neto slino kao
to radi backing store za virtualnu memoriju. Ako se ovo uradi, datoteni system se samo koristi
da se podese stvari I onda se pristupa preko imena datoteke.
Kada ovo uradimo, onda se pristupi stranici, deava se greka stranice, i onda se ita stranica u
fiziku memoriju. Pristup podacima u datoteci je upravljan kao i sa podacima u backing-store.
Sadraju datoteke se onda pristupa preko adrese virtualne memorije. Datoteka moe biti
posmatrana kao niz karaktera, cjelobrojnih varijabli ili neke druge izvedene varijable ili tsrukture.
Samo one stranice koje se koriste se itaju u memoriju. Stranice se keiraju u fizikoj memoriji
tako da est pristup stranicama nee zahtijevati svaki put itanje sa eksternog medija novih ili
istih stranica kad god se pristupi podacima. Vano je primjetiti da smjetanje stranica datoteke u
fiziku memoriju se natjee sa stranicama drugih memorijski mapiranih datoteka i onih drugih
stranica virtualne memorije iji izvori dolaze od programskog koda, podataka i sl. i predmet je
iste sheme smjetanje odnosno zamjene.
Kao u sluaju sa virtualnom memorijom, promjene se upisuju korienjem izbacivanja stranica
pri emu se nemodifikovane stranice ne trebaju izbacivati. Sistemski poziv za memorijski
mapiranu datoteku je mmap(). On vraa pokaziva na datoteku. Stranice datoteke se ubacuju kao
u sluaju sa bilo kojom drugom stranicom u memoriji. Ovaj poziv ima nekoliko parametara.
Komandom man mmap se mogu dobiti detalji. Pojednostavljena verzija bi izgledala ovako:
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

197

void *mmap (int fd, int flags, int protection)
Opisnik datoteke je pridruen ve otvorenim datotekama. Na ovaj nain datoteni system samo
radi posao lociranja datoteke. Oznake koje se navode su uobiajenog tipa kao to su: dat je
datoteka izvrna, itljiva, da se moe u nju pisati i sl. Zatita je neto drugaija.
Razmotrimo to e se desiti ako viestruki procesi koriste memorijski mapirane datoteke. Mogu li
oba dijeliti istu stranicu? ta ako jedan od njih promjeni stranicu? Da li e to svaki od njih
vidjeti.
MAP_PRIVATE obezbjeuje da se stranice dupliraju kod pisanja obezbjeujui na taj nain da
process koji zove ne moe imati efekta na poglede datoteke koju vidi drugi process.
MAP_SHARED ne dolazi do dupliciranja prljavih stranica obo znai da su promjene
vidljive svim stranicama.
Memorijski mapirane datoteke se zatvaraju pozivom munmap(). Poziv unitava memorijski
mapiranu datoteku ali bi ga jo trebalo zatvoriti koristei iskaz close().(prosjetimo se da je
otvoren sa komandom open()). Pojednostavljenu verziju funkcije prikaimo u nastavku a
komandom man munmap za vie detalja.
int munmap (void *address) // varijabla address je bila vraena sa mmap.
Ako elimo da izmjene koje nastaju u memorijski mapiranim datotekama budu vrsto zapisane
na disk, umjesto ekanja na izbacivanje stranica, moe se koristiti poziv msync(). U nastavku
prikazujemo pojednostavljenu verziju, a detaljnu verziju moete dobiti sa komandom man
msysnc
int msync (void *address)
Cijena pristupa memorisjki mapiranim datotekama

Momorisjki mapirane datoteke redukuju cijenu pristupa datotekama koja je nametnuta za
zahtjevom tradicionalnog pristupa kopiji podataka, prvo sa ureaja na sistemski proctor I onda iz
sistemskog prostora u korisniki prostor.

Kada se datoteka pone mapirati u VM proctor pnda se ona natjee sa obinim memorijskim
stranicama za stranine okvire. Hoemo rei da pod znaajnim memorijskim optereenjem
pristup memorisjki mapiranim adtotekama moe prisliliti VMM da gura stranice programa, text
,data ili stek na disk iz memorije.
Pogledajmo kako izgleda cijna kopiranja. Razmotrimo, na primjer, brze I prljave kopije
programa.
int main (int argc, char *argv)
{
int fd_source;
int fd_dest;
struct stat info;
unsigned char *data;

fd_source = open (argv[1], O_RDONLY);
fd_dest = open (argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0666);

fstat (fd_source, &info);
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

198

data = mmap (0, info.st_size, PROT_READ, MAP_SHARED, fd_source, 0);
write (fd_dest, data, info.st_size);

munmap (data, info.st_size);
close (fd_source);
close (fd_dest);
}
Primjetimo da kod kopiranja datoteke, datoteka se posmatra kao skup stranica I svaka stranica se
mapira u adresni prostor. Kako funkcije write() pie u datoteku, deavae se greke stranica u
fizikoj memoriji. Svakoj stranici izvorne datoteke e se pristupiti samo jednom.
Naalost, u ovom pristupu deavae se da su stranice, vjerovatno, izvan memorije ak i u
sluajevima programa za kopiranje. Posmatranja pokazuju da su memorijske mapirane datoteke
najbolje za male datoteke ili one datoteke, ili njihove dijelove kojima se esto pristupa.
Performanse ulaza/izlaza Disk

Vrijeme pozicioniranja staze (engl. seek time): vrijeme potrebno da se premjesti glava diska
(itaj dra glava) na eljenu stazu

Ts = n*m+s
n = broj preenih staza
m = vrijeme potrebno da se pree sa staze na susjednu stazu
t = vrijeme inicijalizacije diska (disk treba da se zavrti na radnu brzinu)
Rotaciono kanjenje: vrijeme potrebno disku da rotira kako bi eljeni sektor doao ispod glave
diska
Tr = 0.5 x (60/r)
r = rotaciona brzina diska u obrtajima u minuti (rpm)
60/r = rotaciono kanjenje u sekundi
Vrijeme prenosa (engl. Transfer time): vrijeme potrebno da se prenesu podaci sa diska
Td = b/N * 60/r
b = broj bajta koji se prenosi
N = broj bajta na stazi
b/N = dio podataka koji je potreban
Ukupno vrijeme = Ts + Tr + Td

Vremenska poreenja pristupa datotekama

Disk srednji seek time = 20 msec, 3600 rpm, sektor sa 512 bajta i 32 sektora po stazi.
Potrebno je itati datoteku od 128 KB. (128KB/512 B = 256 sektora).

Datoteka je zapisana kontinuirano: to znai da zauzima sve sektore na susjednim stazama.
Koliko staza? (256

sektora/datoteci) / (32 sektora/stazi) = 8 staza/datoteci.

Tr = 0.5x(60/r) = 0.5*60/3600 = 1/120 = 0.0083=8.3msec

Td= b/N * 60/r = 16K/16K * 60/3600=1/60 = 0.016666 = 16.7 msec
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

199

Vrijeme da se ita prva staza (32 sek.)= Ts+Tr+Td=20msec+8.3msec+16.7msec=45msec

Vrijeme itanja ostalih 7 staza po 32 sektora: (sada ne postoji seek time jer su susj. staze)

= 7 * (Tr + itanje 32 sektora) = 7*25 msec
Ukupno vrijeme = 45 msec + 7*25msec = 220 msec = 0.22 sec

Datoteka je u blokovima na disku koji su sluajno rasporeeni:

To znai da se seek time mora uraunati svaki put.
Vrijeme da se ita bilo koji sektor= Ts + Tr + itanje jednog sektora

= 20 msec + 8.3 msec + (1/32)x(16.7)msec = 28.8 msec

Vrijeme za itanje 256 sektora = 256 * 28.8 = 7.37 sec !!!!

TREBA MINIMIZIRATI BROJ POZICIONIRANJA NA STAZU (seek).

Zadaci: Implementacija datotenog sistema

11.1 Neka se datoteka sastoji od 100 blokova. Pretpostavimo da je kontrolni blok datoteke ( i
indeksni blok u sluaju indeksne alokacije) ve u memoriji. Izraunajte koliko se diskovnih U/i
operacija zahtjeva za kontinualnu, ulananu i indeksnu (na jednom nivou) alokacionu tehniku
ako se za jedan blok sljedee stanje se odrava. U sluaju kontinuirane alokacije, pretpostavimo
da nema mjesta za dodavanje bloka podataka na poetku a da ima mjesta za dodavanje na kraju.
Pretpostavimo da blok podataka koji treba dodati se nalazi u memoriji.
a) Blok se dodaje na poetak
b) Blok se dodaje u sredinu
c) Blok se dodaje na kraj
d) Blok se uklanja sa poetka
e) Blok se uklanja iz sredine
f) Blok se uklanja sa kraja

Odgovor:
Kontinualna Ulanana lista Indeksna (1
nivo)
A 201 1 1
B 101 52 1
C 1 3 1
D 198 52 0
E 98 52 0
F0 0 100 0


11.2 Odravanje slobodnog prostora u listi je preko liste.
a) Pretpostavimo da je pokaziva na listu slobodnog prostora izgubljen. Moe li sistem
rekonstruisati listu slobodnog prostora? Objasnite odgovor.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

200
b) Predloite shemu koja e osigurati da se pokaziva na listu nikad ne izgubi kao rezultat
memorijske greke.

11.3 Koji problem bi se mogao desiti ako dozvolimo sistemu da montira datoteni sistem
simultano na vie od jedne lokacije.

Odgovor: Postojae za istu datoteku vie staza koje e zbuniti korisnika ili dovesti do greaka
( brisanjem datoteke koja ima jednu stazu dovee do brisanja i ostalih staza).

11.4 Zato se bit mapa za alokaciju datoteka radije dri na disku negu u memoriji.

Odgovor: U sluaju sistemskog pada lista slobodnog prostora nee biti izgubljena ali e biti
izgubljena ako bit mapa bude smjetena u memoriju.

11.5 Neka sistem podrava kontinualnu, ulananu i indeksnu strategiju za alokaciju datoteka.
Koji kriterij bi trebalo korisnititi u odluivanju koja strategija je najbolje iskorienja za
pojedinanu datoteku?

11.6 Dat je datoteni sistem na disku koji ima i logike i fizike veliine blokova od 512 bajta.
Pretpostavimo da su informacije o svakoj datoteci u memoriji. Za svaku od tri alokacione
tehnike (kontinualna, ulanana i indeksna) odgovorite na pitanja:

a) Kako je uspostavljeno prevoenje adresa iz logikog u fiziki u ovom sistemu? (
za indeksnu alokaciju pretpostavimo da je veliina datoteke uvijek manja od 512
blokova.
b) Ako se nalazimo na logikom bloku 10 (posljedni kome smo pristupili) a zatim
pristupamo logikom bloku 4, koliko fizikih blokova se mora itati sa diska?

Odgovor: Naka Z bude poetna adresa datoteke (broj bloka).
a) Kontinualna alokacija: Podjeli logiku adresu sa 512 i smjesti u X i Y rezultat i ostatak.
1. Dodaj X na Z da bi dobili fiziki broj bloka. Y je pomjeraj u bloku.
2. 1
b) Ulanana lista: Podjeli logiku adresu sa 511 i smjesti rezultat i ostatak u X i Y.
1. Dobijeni blok je X+1 a pomjeraj je Y+1
2. 4
c) Indeksna alokacija: Podjeli logiku adresu sa 512 i rezultat i ostatak smjesti u X i Y.
1. Smjesti indeksni blok u memoriju. Adresa fizikog bloka je smjetena u
indeksnom bloku na lokaciji X. Y je pomjeraj u tom fizikom bloku.
2. 2
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

201

11.7 Jedan od problema kod kontinualne alokacije je da korisnik moe alocirati unaprijed
dovoljno prostora za svaku datoteku. Ako priliko rasta datoteka postane vea od alociranog
prostora unaprijed moraju se poduzeti posebne akcije. Jedno rjeenje ovog problema je da se
definie datotena structura koja se sastoji od kontinualnog djela na disku specifine
veliline. Ukoliko i ova ideja propadne, operativni sistem e automatski definisati jednu
novu zonu koja e biti povezana na prethodnu. Ako i ovo nije dovoljno operativni sistem e
definisati novu zonu na disku koju e povezati na prethodnu. Poredite prednosti i mane kod
zapisa datoteke kod kontinualne i ulanane strategije alokacije.
Odgovor: Metoda zahtjeva vie internog rada nigo kod standardne kontinualne alokacije. Kod
alokacije ulananim listama ima manje internog rada.

11.8 Fragmentacija na diskovnom smjetajnom prostoru bi se mogla eliminisati sa premjetanjem
podataka. Tipini dikovi nemaju relokacione ili bazne registre(takvi kao to se koriste u
memoriji) pa kako onda moemo relocirari datoteke? Dati tri razloga zbog ega su relokacija
podataka izbjegava?
11.9 Kako korienje kea poveava performanse? Zato sistemi ne koriste vee ke memorije
ako su tako korisni?

Odgovor: Ke memorija dozvoljava komponetama razliite brzine da komuniciraju efikasno
smjetajui podatke sa sporijih ureaja na bre ureaje ( koji predstavljaju ke). Ke je, po
definiciji, skuplji negu ureaj koji keira, tako da poveavanjem veliine ke-a dolazi do porasta
cijene cijelog sistema.

11.10 U kojim sistuacijama e korienje memorije kao RAM disk biti manje korisno nego
korienje diskovnog kea.

Odgovor: U sluaju gdje korisnik ili sistem zna tano koji podaci e biti potrebni, Ke je baziran
na algormima a RAM disk je direktno dostupan korisniku.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

208
12. 12. 12. 12. UIazno IzIaznI sIstemI UIazno IzIaznI sIstemI UIazno IzIaznI sIstemI UIazno IzIaznI sIstemI

U] Hardver U] Hardver U] Hardver U] Hardver

nevjerovatno sIroka Iepeza U] uredaja
ZajednIckI konceptI
Port
8as (daIsy chaIn III djeIjenI dIrektan prIstup)
KontroIer (host adapter)
UIazno IzIazne InstrukcIje upravIjaju uredajem
UredajI Imaju adrese, korIscene sa
dIrektnIm U] InstrukcIjama
memorIjskI mapIranIm U]

FIzIckI InterIejs uredaja FIzIckI InterIejs uredaja FIzIckI InterIejs uredaja FIzIckI InterIejs uredaja

FIzIckI InterIejs uredaja stvarnIh sIstema sastojI se od jednog broja regIstara uredaja.
Na prImjer, tIpIcnI 8M PC kompatIbIInI racunar, paraIeInI port 0 se adresIra harverskI
na sIIjedecI nacIn:

]O RegIster ]O RegIster ]O RegIster ]O RegIster
Adresa FunkcIja Adresa FunkcIja Adresa FunkcIja Adresa FunkcIja

0378 PodacI D7D6D5D4D3D2D1D0 uIaz]IzIaz 0378 PodacI D7D6D5D4D3D2D1D0 uIaz]IzIaz 0378 PodacI D7D6D5D4D3D2D1D0 uIaz]IzIaz 0378 PodacI D7D6D5D4D3D2D1D0 uIaz]IzIaz
---------------------------------- ---------------------------------- ---------------------------------- ----------------------------------

379 379 379 379 Status 8SAKPEOLERx x x samo za cItanje Status 8SAKPEOLERx x x samo za cItanje Status 8SAKPEOLERx x x samo za cItanje Status 8SAKPEOLERx x x samo za cItanje
------------------------ ------------------------ ------------------------ ------------------------

8S = 1 kada stampac nIje zauzet 8S = 1 kada stampac nIje zauzet 8S = 1 kada stampac nIje zauzet 8S = 1 kada stampac nIje zauzet
AK = 1 kada je prIjenos podataka u toku AK = 1 kada je prIjenos podataka u toku AK = 1 kada je prIjenos podataka u toku AK = 1 kada je prIjenos podataka u toku
PE = 1 kada stampac nema papIra PE = 1 kada stampac nema papIra PE = 1 kada stampac nema papIra PE = 1 kada stampac nema papIra
OL = 1 kada je stampac on IIne OL = 1 kada je stampac on IIne OL = 1 kada je stampac on IIne OL = 1 kada je stampac on IIne
ER = 1 kada nema greske ER = 1 kada nema greske ER = 1 kada nema greske ER = 1 kada nema greske

0379 contro I x x x ESLNLFST samo IzIaz (samo za pIsanje) 0379 contro I x x x ESLNLFST samo IzIaz (samo za pIsanje) 0379 contro I x x x ESLNLFST samo IzIaz (samo za pIsanje) 0379 contro I x x x ESLNLFST samo IzIaz (samo za pIsanje)
------------------------------- ------------------------------- ------------------------------- -------------------------------
E = 1 da omogucI prekIde stampaca E = 1 da omogucI prekIde stampaca E = 1 da omogucI prekIde stampaca E = 1 da omogucI prekIde stampaca
SL = 1 da se Izabere stampac SL = 1 da se Izabere stampac SL = 1 da se Izabere stampac SL = 1 da se Izabere stampac
N = N = N = N = 1 za normaIne operacIje (nuIa uzrokuje resetovanje stampaca) 1 za normaIne operacIje (nuIa uzrokuje resetovanje stampaca) 1 za normaIne operacIje (nuIa uzrokuje resetovanje stampaca) 1 za normaIne operacIje (nuIa uzrokuje resetovanje stampaca)
LF = 1 uzrokuje okretanje papIra unaprIjed (LIne Ieed) LF = 1 uzrokuje okretanje papIra unaprIjed (LIne Ieed) LF = 1 uzrokuje okretanje papIra unaprIjed (LIne Ieed) LF = 1 uzrokuje okretanje papIra unaprIjed (LIne Ieed)
ST = 1 da prenese podatke na stampac ST = 1 da prenese podatke na stampac ST = 1 da prenese podatke na stampac ST = 1 da prenese podatke na stampac

SvI specIIIcnI bItI su dokumentovanI I predstavIjaju PC paraIeInI port kojI je
kompatIbIIan sa starIm paraIeInI InterIejs poznatIm pod nazIvom CentronIcs. Ako se
ovaj InterIejs korIstI za nekI drugI uredaj onda pojedIne bIte treba IskorIstItI III ne
korIstItI ukoIIko se ne mogu IskorIstItI (recImo, "nema papIra" se vjerovatno nece mocI
IskorIstItI na novom uredaju). PrImjetImo da port podataka Ima specIjaIne
karakterIstIke. Ako se zeIe podacI pIsatI onda sa procesora doIazI podataka I pIse se u
regIstar podataka kojI je vIdIjIv na IzIaznIm pIn-ovIma konektora. UIaz sa porta ne Ide
dIrektno Iz regIstra podataka vec sa vanjkIh pInova. Ako je na vanjskIm pIn-ovIma
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

209
zapIsan podataka tada to znacI da neko pokusava da upIse podataka I on je vIdIjIv u
regIstru podataka. Na ovaj nacIn se regIstar podataka korIstI za uIaz podataka.


PoIIIng PoIIIng PoIIIng PoIIIng
OdredIje se stanje uredaja
command ready
busy
error
CIkIus zaposIenog cekanja da ceka na U] od uredaja
PrekIdI PrekIdI PrekIdI PrekIdI

LInIja zahtjeva Intrapta na procesoru (CPU RQ) je "pobudena" od U] uredaja
Proces za obradu prekIda prIma prekId (Interrupr handIer)
Moze se maskIratI da IgnorIse III odgodI druge prekIde
Vektor prekIda - adresa koja prosIIjeduje prekId na odgovarajucu rutInu za
obradu prekIda
bazIran na prIorItetIma
nekI sI nemaskIranI (NM)
MehanIzam prekIda korIstI se jos I za Izuzetke

UIazno IzIanI cIkIus koj UIazno IzIanI cIkIus koj UIazno IzIanI cIkIus koj UIazno IzIanI cIkIus kojI se odvIja pomocu prekIda I se odvIja pomocu prekIda I se odvIja pomocu prekIda I se odvIja pomocu prekIda


DrajverI uredaja DrajverI uredaja DrajverI uredaja DrajverI uredaja

PrImjetIII smo Iz dIskusIje o pojedInIm uresajIma da razIIcItI uredajI Imaju razIIcIte
mogucnostI, odnosno karakterIstIke. Upravo zbog ovog, korIstenje uredaja bI mogIo
posatatI kompIIcIran posao. nterIejs prema njIma bI mogao varIratI kao I samo
hardver.
Dab vI sprIjecIII ovakav prIstup, pokusajmo napravItI unIIorman InterIejs prema svIm
uredajIma. Takav jedan InterIejs bI mogao deIInIsatI skup zajednIckIh IunkcIja sIIcnog
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

210
ponasanja na razIIcItIm kIasama hardvera. OsobebostI svakog InterIejsa mogIe bI se
prevazIcI u ImpIementacIjI ovog InterIejsa.
Ovo je Ideja kako je UNX organIzIrao drajvere uredaja. NajprIje se upoznajmo sa
nacInom organIzacIje drajvera uredaja.
ZamIsIImo system u kome su drajverI uredaja organIzovanI u tabeII takvoj da svaka
vrsta predstavIja pojedInacnI drajver uredaja a svaka koIona predstavIja pojedInacnu
operacIju u skupu zajednIckIh operacIja. KorIstecI ovaj prIstup, zamIsIImo da svaka
pojedInacna ceIIja drzI pokazIvac na IunkcIju koja ce IzvrsItI navedenu operacIju nad
svakIm uredajem.
U toj tabeII se moze nacI ImpIementacIja pojedInacne operacIje, takve kao sto je
open(), za pojedInacan uredaj IndeksIrajucI odredenu vrstu I koIonu. PretpostavImo, za
sada, da svakI uredaj Ima jednIstven broj kojI se zove IdentIIIkacIonI broj uredaja (engI.
major number), I da svaka operacIja je predstavIjena jedInstvenIm brojem. Na taj nacIn
moze se korIstItI IdentIIIkacIonI broj uredaja I Ime operacIje kao IndeksI u tabeIu:

D D D D
uredaj uredaj uredaj uredaj
a aa a
OperacIj OperacIj OperacIj OperacIja aa a
- -- - read() read() read() read() wrIte() wrIte() wrIte() wrIte()
open( open( open( open(
) )) )
cIose( cIose( cIose( cIose(
) )) )
... ... ... ...
0 - - - - -
1 - - - - -
2 - - - - -
... - - - - -

8Iok orIjentIranI uredajI prema karakter orIjentIranIm uredajIma 8Iok orIjentIranI uredajI prema karakter orIjentIranIm uredajIma 8Iok orIjentIranI uredajI prema karakter orIjentIranIm uredajIma 8Iok orIjentIranI uredajI prema karakter orIjentIranIm uredajIma
nterIejs ka uredajIma se moze podjeIItI u dvIje sIroke kategorIje:
Karakter orIjentIsanI uredajI
SekvencIjaIan prIstup bez baIerovanja. VeIIcIna podataka se korIstI kod komunIkacIje
sa karakter orIjentIranIm uredajIma prI cemu moze bItI I vIse od jednog karaktera aII ne
moze bItI baIerovan. PrImjerI mogu ukIjucIvatI stampace, skenere, zvucne kartIce Itd.
8Iok orIjentIsanI uredajI
UredajI sa sIucajnIm prIstupom sa baIerovanjem. Na prImjer, datotecnI system se moze
postavItI samo na bIok orIjentIrane uredaje zato sto zahtjeva sIucajan prIstup. Na
prImjer, dIskovI su ugIavnom ImpIementIranI kao bIok orIjentIranI uredajI.
Kao korIsnIcI operatIvnog sIstema vIdImo uredaje orIjentIrane na karaktere ako su
drajverI uredaja orIjentIranI na karaktere a bIok uredaje ako su njIhovI drajverI uredaja
orIjentIranI na bIokove.
stI uredaj moze da Ima I karakter orIjentIran I bIok orIjentIran InterIejs. U
tradIcIonaInIm UNX operatIvnIm sIstemIma ovo je uspostavIjeno kreIranjem karakter
orIjentIranog InterIejsa za "sIrove" uredaje I bIok orIjentIranI InterIejs za uredaje sa
baIerovanjem.
dentIIIkacIonI brojevI u dentIIIkacIonI brojevI u dentIIIkacIonI brojevI u dentIIIkacIonI brojevI uredaja redaja redaja redaja
SvakI drajver uredaja je IdentIIIcIran jedInstvenIm brojem. Ovaj broj se prIdruzuje
regIstru vezanom za operatIvnI system, za LInux to je LInux DevIce RegIstar, kojI
trenutno vodI Peter.AnvInIInux.org. Ovaj broj je Indeks u nIz kojI sadrzI InIormacIje o
drajveru uredaja, naveden u strukturI podataka devIcestruct.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

211
NIzI IdentIIIkacIonI broj NIzI IdentIIIkacIonI broj NIzI IdentIIIkacIonI broj NIzI IdentIIIkacIonI broj
Moze postojatI nekoIIko uredaja Istog tIpa. Na prImjer, moze postojatI nekoIIko
dIskova na prImarnom DE kontroIeru. SvakI prImjerak uredaja djeII IstI drajver uredaja
prIdruzenI IdentIIIkacIonI broj uredaja aII Ima jedInIstvenI IdentIIIkacIonI broj kojI ga
oznacava u kIasI uredaja Istog tIpa. NazovImo ga IIcnI IdentIIIkacIonI broj (engI. mInor
devIce number). U mnogIm sIucajevIma ovI se brojevI prIdruzuju sekvencIjaIno pocevsI
od 0 do N za svakI uredaj kojI se doda u system. U drugIm sIucajevIma ovaj broj
odgovara IdentIIIkacIonom broj hardverskog nIvoa uredaja.
nterIejs datotecnog sIstema nterIejs datotecnog sIstema nterIejs datotecnog sIstema nterIejs datotecnog sIstema
Uskoro cemo govorItI o InterIejsu datotecnog sIstema. Za sada, prImjetImo da u UNX-
u se uredajI predstavIjaju kao datoteke. SvakI uredaj Ima svoj uIaz u datotecnI system,
obIcno u ]dev dIrektorIju. AkoI mI zeIImo da radImo sa uredajem, mI ga mozemo
otvorItI sa open(), upravo kao datoteku. Kada ga otvorImo, korIstImo standardne
operacIje read() I wrIte() kao I neke druge, recImo IoctI(). U datotecnom opIsnIku (engI.
IIIe descrIptor) se naIazI Ime uredaja.

DIrektnI memorIjskI prIstup (DMA DIrektnI memorIjskI prIstup (DMA DIrektnI memorIjskI prIstup (DMA DIrektnI memorIjskI prIstup (DMA - -- - dIrect memory access) dIrect memory access) dIrect memory access) dIrect memory access)

KorIstI se da se Izbjegne programIranI U] za veIIke prenose podataka
Zahtjeva DMA kontroIor
ZaobIIazI procesor kod prenosa podataka dIrektno Izmedu U] uredaja I
memorIje

KoracI kod DMA prenosa KoracI kod DMA prenosa KoracI kod DMA prenosa KoracI kod DMA prenosa

1. 1. 1. 1. DevIce DevIce DevIce DevIce- -- -drIver je prImIo InIormacIju za prIjenos podataka sa dIska u baIer na drIver je prImIo InIormacIju za prIjenos podataka sa dIska u baIer na drIver je prImIo InIormacIju za prIjenos podataka sa dIska u baIer na drIver je prImIo InIormacIju za prIjenos podataka sa dIska u baIer na
adresu x. adresu x. adresu x. adresu x.
2. 2. 2. 2. DevIce drIver Izdaje naredbu kontroIeru da prenese podatka sa DevIce drIver Izdaje naredbu kontroIeru da prenese podatka sa DevIce drIver Izdaje naredbu kontroIeru da prenese podatka sa DevIce drIver Izdaje naredbu kontroIeru da prenese podatka sa dIska u baIer dIska u baIer dIska u baIer dIska u baIer
na adresu x na adresu x na adresu x na adresu x
3. 3. 3. 3. DIsk kontroIer InIcIra DMA prIjenos DIsk kontroIer InIcIra DMA prIjenos DIsk kontroIer InIcIra DMA prIjenos DIsk kontroIer InIcIra DMA prIjenos
4. 4. 4. 4. DIsk kontroIer saIje svakI bajt ka DMA kontroIeru DIsk kontroIer saIje svakI bajt ka DMA kontroIeru DIsk kontroIer saIje svakI bajt ka DMA kontroIeru DIsk kontroIer saIje svakI bajt ka DMA kontroIeru
5. 5. 5. 5. DMA kontroIer prenosI bajte u baIer x DMA kontroIer prenosI bajte u baIer x DMA kontroIer prenosI bajte u baIer x DMA kontroIer prenosI bajte u baIer x
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

212
6. 6. 6. 6. Kada se zavrsI prIjenos DMA prekIda processor kako bI mu sIgnaIIzIrao Kada se zavrsI prIjenos DMA prekIda processor kako bI mu sIgnaIIzIrao Kada se zavrsI prIjenos DMA prekIda processor kako bI mu sIgnaIIzIrao Kada se zavrsI prIjenos DMA prekIda processor kako bI mu sIgnaIIzIrao
zavrsetak prIjenosa zavrsetak prIjenosa zavrsetak prIjenosa zavrsetak prIjenosa


UIazno IzI UIazno IzI UIazno IzI UIazno IzIaznI InterIejs kod apIIkacIja aznI InterIejs kod apIIkacIja aznI InterIejs kod apIIkacIja aznI InterIejs kod apIIkacIja

U] sIstemskI pozIvI ukIjucuju ponasanje uredaja u generIcke kIase
NIvo drajvera uredaja sakrIva razIIke medu U] kontroIerIma od kerneIa
UredajI varIraju u mnogIm dImenzIjama
karakternI III bIok
sekvencIjaInI III sIucajan prIstup
sImhronI III asInhronI
djeIjIvI III namjenskI
brzIna operacIje
read-wrIte, samo pIsanje III samo cItanje

8Iok I karakter orIjentIsanI uredajI 8Iok I karakter orIjentIsanI uredajI 8Iok I karakter orIjentIsanI uredajI 8Iok I karakter orIjentIsanI uredajI

8Iok orIjentIsanI uredaj podrazumjeva dIsk uredaje
komande ukIjucuju read, wrIte, seek
sIstemskI prIstup datotekama III sIrovI U]
moguca je I memorIjskI mapIrana datoteka
Karakter orIjentIsan uredaj ukIjucuju tastaturu, mIsa, serIjske portove
komande ukIjucuju get,put
bIbIIoteke dozvoIjavaju edItIranje IInIje
MreznI uredajI MreznI uredajI MreznI uredajI MreznI uredajI

VarIraju od bIok do karakter uredaja I Imaju sopstvenI InterIejs
UnIx I WIndows]NT ukIjucuju socket InterIejs
odvajaju mrezne protokoIe od mreznIh operacIja
ukIjucuju seIect IunkcIonaInost
PrIstupI varIraju raznoIIko (pIpe, FFO, nIzovI, redovI cekanja, maII box)

Sat I brojacI Sat I brojacI Sat I brojacI Sat I brojacI

Obezbjeduju tekuce vrIjeme, protekIo vrIjeme, brojac
ProgramabIInI IntervaInI brojac korIscen za brojanje (obradu) perIodIckIh
prekIda
osctI (na UNX-u) se odnose na eIemente U] kao sto su sat I brojacI

8IokIranI I nebIokIranI U] 8IokIranI I nebIokIranI U] 8IokIranI I nebIokIranI U] 8IokIranI I nebIokIranI U]

8IokIranje - proces je suspendovan dok se ne zavrsI U] operacIja
Iak za upotrebu I razumjevanje
nedovoIjan za neke potrebe
NebIokIranje - U] pozIv se vrace sto je moguce prIje
korIsnIckI InterIejs, kopIranje podataka(baIerovanI U])
ImpIementIra se preko vIsestrukIh thread-ova
Vraca se brzo sa brojem bajta cItanIh III pIsanIh
AsInhronost - proces se Izvrsava dok U] se Izvrsava
Tezak za korIscenje
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

213
U] podsIstem sIgnaIIzIra procesu kad se zavrsI U]

UIazno IzIaznI sIstem UIazno IzIaznI sIstem UIazno IzIaznI sIstem UIazno IzIaznI sIstem - -- - KerneI KerneI KerneI KerneI

RasporedIvanje
NekI U] zahtjevI se ureduju preko reda cekanja na uredaju
NekI OS pokusavaju bItI pravIcnI, na bazI Ier prIstupa

8aIerovanje - smjestanje podataka u memorIju dok se obavIja prenos
Izmedu uredaja
da se usagIase brzIne uredaja koje se razIIkuju
da se usagIase veIIcIne prenosa koje se razIIkuju
Da se odrzava semantIka "copy" Iskaza

KesIranje - brza memorIja koja drzI kopIju podataka
Uvjek je kopIja
KIjuc za perIormanse

SpooIIng - drzanje IzIaza za uredej
ako uredaj moze posIuzIvatI samo jedan zahtjev u vremenu
t.j. stampanje

RezervIsanje uredaja - obezbjeduje ekskIuzIvan prIstup uredaju
SIstemskI pozIvI za aIokacIju I deaIokacIju
PazI da se ne dogodI zastoj

Rad sa greskama Rad sa greskama Rad sa greskama Rad sa greskama

OperatIvnI sIstem moze se oporavItI od: gresaka kod cItanja dIska, prIstupa
nepostojecem uredaju, gresaka kod proIaznog pIsanja I sI.
UgIavnom povratak Iz greske je predstavIjen preko broja III koda greske U]
zahtjeva
SIstemske greske se pIsu u Iog datoteku

Struktura podataka kerneIa Struktura podataka kerneIa Struktura podataka kerneIa Struktura podataka kerneIa
KerneI drzI InIormacIona stanja za U] komponente, ukIjucujucI tabeIe
otvorenIh datoteka, mrezne veze, stanja karakter orIjentIsanIh uredaja
Mnogo kompIeksnIh struktura podataka kojI se drze u baIerIma, memorIjska
aIokacIja, "prIjavI" bIokovI
KorIstI se objekt-orIjentIsane metode I prosIIjedIvanje poruka da se
ImpIementIra U]

U] zahtjevI za hardverske operacIje U] zahtjevI za hardverske operacIje U] zahtjevI za hardverske operacIje U] zahtjevI za hardverske operacIje
RazmotrImo cItanje datoteke sa dIska kao proces
OdredItI uredaj kojI drzI datoteku
FormIraj Ime datoteke u obIIku za datI uredaj
FIzIckI cItaj podatke sa dIska u baIer
UcInI podatke raspoIozIvIm procesu
VratI kontroIu ka procesu

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

214
ZIvotnI cIkIus U] zahtjeva ZIvotnI cIkIus U] zahtjeva ZIvotnI cIkIus U] zahtjeva ZIvotnI cIkIus U] zahtjeva

PerIormase PerIormase PerIormase PerIormase

U] je gIavnI Iaktor sIstemskIh perIormasI
zahtjev procesoru da IzvrsI drajver uredaja, kerneI kod za U]
Izmjenu konteksta zbog prekIda
kopIranje podataka
mreznI saobracaj posebno veIIkI

PoboIjsanje perIormnasI PoboIjsanje perIormnasI PoboIjsanje perIormnasI PoboIjsanje perIormnasI

redukuj broj Izmjena konteksta
redukuj kopIranje podataka
redukuj prekIde korIscenjem veIIkIh prenosa, InteIIgentnIh kontroIora,
poIIranja
KorIstI DMA
8aIansIraj procesor, memorIju, I U] perIormanse za najvecu propusnost

KorIsne Web stranIce:www.maththInkIng.com]boat

Zahtjev za I/O
Sist.poziv

Poziv
odraen ?
Poalji zahtjev drajveru ureaja i
blokiraj proces ako je potrebno
Na zahtjev procesa, izdaje se komanda
kontroleru, konfiguracija kontrolera
U/I zavren,
ulazni podaci raspoloivi, ili
izlaz zavren
Transfer podataka (ako je
potrebno) ka procesu, izdavanje
greaka koda po zavretku
Odrediti koji je U/I zavren,
Iniciraj izmjenu stanja u U/I
podsistemu
Prihvati prekid, smjesti podatke u
bafer drajvera ureaja ako je ulaz,
deblokiraj drajver ureaja (signal)
U/I zavren, generii prekid
vrijeme
Korisniki proces
Da

Kernel,
U/I podsistem
Drajver
Ureaja

Interrupt handler
Kontroler ureaja

Monitorisanje ureaja, prekid kada
je U/I zavren
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

215
ZadacI: U] sIstem ZadacI: U] sIstem ZadacI: U] sIstem ZadacI: U] sIstem

1. NavedIte trI prednostI ako se IunkcIonaInostI uredaja smjestaju u kontroIer
uredaja a ne u kerneI.
Odgobor: greske ce manje vjerovatno uzrokovatI pad operatIvnog sIstema.
PerIormase mogu bItI poboIjsane specIjaIIzovanIm hardverom sa ugradenIm
aIgorItmIma u hardveru.Na taj nacIn, kerneI ce bItI jednostavnIjI ako se aIgorItmI
Izbace Iz njega.
Mane su: teze je gresku otkIonItI - novI hardver III vIrmware verzIja treba da
poboIjsaju aIgorItam. sto tako bI trebao novI hardver da ne bI ugradenI aIgorItmI
prourokovaII gubItak perIormasI III sIIcan eIekat.

2. RazmotrImo sIjedecI U]I scenarIo na PC sa jednIm korIsnIkom.
a) KorIstI se mIs sa graIIckIm korIsnIckIm InterIejsom
b) Uredaj za trake u operatIvnom sIstemu sa vIse korIsnIka.(pretpostavImo
da uredaj nIje unaprIjed preaIocIran)
c) DIsk sadrzI korIsnIcke datoteke
d) CraIIcka karta sa dIrektnom vezom na bus kojoj se prIstupa preko
memorIjskI mapIranog U].
Za svakI od ovIh U]I scenarIja, projektujte operatIvnI sIstem da bI korIstIo
baIerovanje, spooIIng, kesIranje III kombInacIjuZ Da II bIste korIstIII prozIvnu III
prekIdom pokrenut U]I Z DatI razIoge za svakI Izbor.

Odgovor:
a) 8aIerovanje moze bItI potrebno da bI se zapIsaIo kretanje mIsa u kada
operacIja vIsokog prIorIteta preuzmu uIogu. SpooIIng I kesIranje nIsu
odgovarajucI. Ovdje bI se korIstIo prekIdom pokrenut U].
b) 8aIerovanje je potrebno u cIIju upravIjanja propusnoscu Izmedu uredaja
za trake I Izvora III odredIsta U]I operacIja. KesIranje se m oze korIstItI
da bI se drzaIe kopIje podataka kojI se naIaze na tracI zbog brzeg
prIstupa. SpooIIng bI se mogao korIstItI da bI se drzaII podacI na brzem
uredaju kada vIse korIsnIka zeII da Ih cIta III pIse. PrekIdom pokrenut
uIaz IzIaz bI najvjerovatnIje davao najboIje perIormanse.
c) 8aIerovanje se moze korIstItI da zadrzI podatke u toku prenosa Iz
korIsnIckog prostora na dIsk I obrnuto. KesIranje se moze kortIstItI da
drzI podatke sa dIska zbog povecanaj perIormansI. SpooIIng nIje
potreban jer su dIskovI uredajI sa djeIjenIm prIstupom. PrekIdom
pokrenut U]I je najboIjI za uredaje takve kao sto su dIskovI gdje je
prennos podataka nIskog IntenzIteta.
d) 8aIerovanje moze bItI potrebno da bI se upravIjaIo vIsestrukIm prIstupIma
I zbog perIormasI ( dupIo baIerovanje se moze korIstItI da se cuvaju
podacI za prIkaz dok se jedan skup podataka prIkazuje na ekranu, npr.)
KesIranje I spooIIng nIsu potrebnI zbog brzIne I prIrode djeIjenog
uredaja. ProzIvka I prekIdI su samo korIsnI za unos I za detekcIju
zavrsetka U]I operacIja, tako da nIje nItI jedan potreban za memorIjskI
mapIrane uredaje.

3. Zasto nekI sIstemI vode evIdencIju o tIpovIma datoteka dok drugI to prepustaju
korIsnIku III ne ImpIementIraju vIsestruke tIpove datoteka. KojI od ovIh sIstema je
"boIjI"Z.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

216
4. SIIcno, nekI sIstemI podrzavaju mnoge tIpove struktura za datotecne podatke dok
drugI predstavIjaju datoteku kao nIz bajta. Koje su prednostI I nedostacI ovakvog
prIstupaZ

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi
217
13. 13. 13. 13. Struktura medIja za pohranjIvanje podataka Struktura medIja za pohranjIvanje podataka Struktura medIja za pohranjIvanje podataka Struktura medIja za pohranjIvanje podataka

DIsk struktura DIsk struktura DIsk struktura DIsk struktura

DIsk uredajI se adresIraju kao veIIkI jednodImenzIonaInI nIz IogIckIh bIokova,
gdje je IogIckI bIok najmanja jedInIca prenosa
]ednodImenzIonaInI nIz bIokova se mapIra u sektore dIska sekvencIjaIno.
Sektor 0 je prvI sektor prve staze na vanjskom cIIIndru.
MapIranje se IzvodI kroz stazu, a onda u ostaIe staze u cIIIndru a onda
kroz ostaIe cIIIndre IducI od vanjskog prema unutrasnjem

RasporedIvanje dIska RasporedIvanje dIska RasporedIvanje dIska RasporedIvanje dIska

OperatIvnI sIstem je odgovoran za eIIkasno korIscenje hardvera - za uredaje
dIska to znacI da Imaju brzo vrIjeme prIstupa I dobru dIskovnu propusnost
(engI. bandwIth)
VrIjeme prIstupa Ima dvIje gIavne komponente
Seek tIme - je vrIjeme koje je potrebno da nosac gIava dIska se
pomjerI tako da gIava bude Iznad cIIIndra kojI na sebI Ima zeIjenI
sektor
RotacIono kasnjenje (rotatIonaI Iatency) - je vrIjeme potrebno da dIsk
rotIra do zeIjenog sektora kojI bI se nasao Ispod gIave dIska.
MInImIzIraj seek tIme
Seek tIme j e prIbIIzno jednako dIstancI
DIskovna sIrIna (dIsk bandwIdth) je ukupan broj prenesenIh bajta podjeIjen
sa ukupnIm vremenom Izmedu prvog zahtjeva za usIugu I zavrsetka
posIednjeg transIera podataka.
PostojI nekoIIko aIgorItama za rasporedIvanje usIuzIvanja dIskovnIh U]
zahtjeva
IustrIrajmo Ih sa redom cekanja zahtjeva (0-199)

98,183,37,122,14,124,65,67

CIava pokazuje na cIIIndar 53

FCFS FCFS FCFS FCFS

IustracIja pokazuje ukupno kretanje gIave od 640 cIIIndara.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi
218

SSTF SSTF SSTF SSTF

zaberI zahtjev sa mInImaInIm seek tIme od tekuce pozIcIje gIave dIska
SSTF rasporedIvanje je obIIk od S]F rasporedIvanja; moze uzrokovatI
umIranje (starvatIon) u nekIm sIucajevIma
IustracIja pokazuje ukupno vrIjeme kretanja od 236 cIIIndara

SCAN SCAN SCAN SCAN

Drzac gIava dIska pocInje na jednom kraju dIska I krece se unaprIjed ka
drugom kraju dIska, a onda se gIava krece u obrnutom smjeru nastavIjajucI
usIuzIvatI zahtjeve kojI doIaze
Ponekad se nazIva I aIgorItam IIIt-a
IIstracIja pokazuje ukupno kretanje gIave dIska od 208 cIIIndara
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi
219



C CC C- -- -SCAN SCAN SCAN SCAN

Obezbjeduje unIIormnIje vrIjeme cekanja nego SCAN
CIava se pomjera s jednog kraja dIska na drugI, usIuzujucI zahtjeve kako
doIaze. Kad dode do kraja dIska, odmah se vraca na pocetak dIska bez
usIuzIvanja bIIo kakvog zahtjeva na povratku
TretIra cIIIndre kao cIrkuIarnu IIstu koja se povezuje posIednjIm I prvIm
cIIIndrom.


Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi
220
C CC C- -- -LOOK LOOK LOOK LOOK

VerzIja C-SCAN-a
CIava Ide samo do posIednjeg zahtjeva u oba smjera I kad stIgne do
posIednjeg, vratI se odmah na pocetak bez odIaska do kraja dIska.

AIgorItam za Izbor rasporedIvanja dIska AIgorItam za Izbor rasporedIvanja dIska AIgorItam za Izbor rasporedIvanja dIska AIgorItam za Izbor rasporedIvanja dIska

SSFT je opstI I prIrodan je
SCAN I C-SCAN Izvrsavaju se boIje kod sIstema kojI Imaju IntenzIvan
saobracaj sa dIskom
PerIormase zavIse od broja tIpova zahtjeva
ZahtjevI za usIuge dIska mogu ImatI utIcaja od metoda za aIokacIju datoteka
AIgorItam za rasporedIvanje dIska ce bItI napIsan kao poseban moduI
operacIonog sIstema dozvoIjavajucI da bude zamjenjen sa razIIcItIm
aIgorItmom ako je potrebno

UpravIjanje dIskom UpravIjanje dIskom UpravIjanje dIskom UpravIjanje dIskom

FIzIcko IormatIranje dIaka III IormatIranje na nIskom nIvou (Iow-IwvwI
IormattIng) - djeIjenje dIska u sektore da Ih kontroIor dIska moze cItatI I
pIsatI
Da bI korIstIo dIsk kao medIj za cuvanje datoteka operacIonI sIstem treba
zapIsatI svoje strukture podataka na dIsk
PartIcIonIsanje dIska u jedan III vIse grupa cIIIndara
LogIcko IormatIranje III "IormInje datotecnog sIstema"
8oot bIok InIcIjaIIzIra sIstem
8ootstrap je smjesten u ROM-u
8ootstrap Ioader program
ManIpuIacIja sa pogresnIm bIokovIma


UpravIjanjem swap prostorom UpravIjanjem swap prostorom UpravIjanjem swap prostorom UpravIjanjem swap prostorom

Swap prostor - vIrtueIna memorIja korIstI dIskovnI prostor kao prosIrenje
gIavne memorIje
Swap prostor moze bItI bItI u okvIru postojeceg datotecnog sIstema III moze
bItI u posebnoj dIsk partIcIjI
UpravIjanje swap prostorom
4.3 8SD aIocIra swap prostor kad proces pocne Izvodenje; sastojI se
od text segmenta (programa) I data segmenta (podacI)
KerneI korIstI swap mape da upravIja swap prostorom
SoIarIs 2 aIocIra swap prostor samo kad je stranIca Izvan IIzIcke
memorIje
Pouzdanost dIska Pouzdanost dIska Pouzdanost dIska Pouzdanost dIska

NekoIIko poboIjsanja u tehnIkama korIscenja dIska ukIjucuju korIscenje
vIsestrukIh dIskova kojI rade kooperatIvno
DIsk strIpIng korIstI grupu dIskova kao jednu jedInIcu za cuvanje podataka
RAD seme poboIjsavaju perIormanse I pouzdanost sIstema za pohranjIvanje
podataka zapIsIvanje redudantnIh podataka
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi
221
MIrrorIng III shadowIng drze dupIIcIkate svakog dIska
8Iock InterIIved parIty korIstI mnogo manje redudantnostI

mpIementacIja stabIInog pohranIvanja podataka mpIementacIja stabIInog pohranIvanja podataka mpIementacIja stabIInog pohranIvanja podataka mpIementacIja stabIInog pohranIvanja podataka

Da se ImpIementIra stabIIno pohranjIvanje podataka:
repIIcIraju se podacI na vIse od jednog medIja za stabIIno cuvanje
podataka (tj. dIsk) sa nezavIsnIm nacInIma oporavka od gresaka
AzurIranje InIormacIja na kontroIIsan nacIn da se obezbjedI
mogucnost oporavka u stabIIno stanje posIe bIIo koje greske koja se
desIIa kod prenosa podataka


ZadacI.

1. NIjedna od tehnIka za rasporedIvanje dIska, Izuzev FCFS, nIje postena ( umIranje se
moze desItI).
a) ObjasnIte zasto je ovaj navod tacanZ

Odgovor: novI zahtjevI za prIstup stazI Iznad kojIh se gIava naIazI moze teoretskI stIcI
cIm su ovI zahtjevI usIuzenI I na taj nacIn nIsu obradenI u toku servIsIranja vec
prIspjeIIh zahtjeva.
b) OpIsIte kako bI modIIIkovaII aIgorItam takav kao sto je SCAN da bI obezbjedIII
postenostZ
Odgovor: SvI zahtjevI starIjI od predeIInIsane "starostI" bI se mogII stavItI na vrh reda
cekanja sa jednIm bItom kojI bI govorIo da se novI zahtjevI ne stavIjaju Ispred tIh jer
mozda bI ImaII pravo da se smjeste na taj nacIn.
c) ObjasnIte zasto je postenost jedan vazan cIIj kod sIstema sa djeIjenIm vremenom.
Odgovor: da bI se sprIjecIII preduga vremena odgovora.
d) DatI trI III vIse prImjera u kojIm je vazno da operatIvnI sIstem bude neposten kod
usIuzIvanja U]I zahtjeva.
Odgovor: ---

2. PretpostavImo da dIsk uredaj Ima 5000 cIIIndara, numerIsanIh od 0 do 4999. Uredaj
usIuzuje zahtjev na cIIIndru 143, I prethodnI zahtjev je bIo na 125. U redu cekanja se
naIaze zahtjevI kojI su s+tIgII u FFO redosIjedu:

86, 1470, 913, 1774, 948, 1509, 1022, 1750, 130.

PocevsI od tekuce pozIcIje gIave, koIIka je ukupno rastojanje ( cIIIndrIma) koje dIsk
gIava prede da bI zadovoIjIIa sve prIspjeIe zahtjeve za svaku od sIjedecIh aIgorItama za
rasporedIvanje dIskaZ
a) FCFS b) SSTF c) SCAN d) LOOK e) C-SCAN
6. NapIsIte program korIstecI monItor za rasporedIvanje dIska tIpa C-SCAN I SCAN.

Odgovor:

Ovdje je dato rjesenje za C-SCAN.

type dIskhead = monItor
var busy: booIean;
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi
222
up: condItIon;
headpos, count: Integer;

procedure entry acquIre (dest: Integer);
begIn
II busy
then II headpos # dest
then up.waIt(dest + count)
eIse up.waIt(dest + count+n);
busy := true;
II dest < headpos
then count := count + n;
headpos := dest;
end;
procedure entry reIease;
begIn
busy := IaIse;
up.sIgnaI;
end;
begIn
headpos := 0;
count := 0;
end.

Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

223
14. Struktura medIja za pohranjIvanje podataka (TertIary 14. Struktura medIja za pohranjIvanje podataka (TertIary 14. Struktura medIja za pohranjIvanje podataka (TertIary 14. Struktura medIja za pohranjIvanje podataka (TertIary- -- -Storage) Storage) Storage) Storage)

KarakterIstIke uredaja KarakterIstIke uredaja KarakterIstIke uredaja KarakterIstIke uredaja

NIska cIjena deIInIse karakterIstIke ove kIase uredaja
Uopste receno, ova kIasa uredaja je napravIjena korIstecI IzmjenIjIvI medIj
OpstI prImjerI za uredaje sa IzmjenIjIvIm medIjIma su IIopI dIskovI I CD-
ROM-ovI

zmjenIjIvI dIskovI zmjenIjIvI dIskovI zmjenIjIvI dIskovI zmjenIjIvI dIskovI

FIopI dIsk - tankI IIeksIbIIan dIsk prekrIven sa magnetnIm materIjaIem I
zatvoren u zastItno pIastIcno kucIste
UgIavnom IIopI dIskovI Imaju kapacItet od oko 1 M8; sIIcne
tehnoIogIje se korIste kod IzmjenIjIvIh dIskova a da Im je kapacItet vIsI
od 1 C8
. zmjenIjIvI magnetnI dIskovI mogu bItI brzI skoro kao nego IIksnI
(hard dIsks), aII Imaju vecI rIzIk da se ostete kod IzIaganja
Magneto optIckI dIsk zapIsuju podatke na krutoj povrsInI prekrIvenoj sa
magnetnIm materIjaIIma
. Iasersko grIjanje se korIstI da pojaca sIrokI I sIabo magnetno poIje kod
zapIsa jednog bIta
. Lasersko svIjetIo se takode korIstI za cItanje podataka (Kerr eIIekat)
. Magneto optIcke gIave krecu se mnogo daIje od povrsIne dIska nego
gIava megnetnog dIska I magnetnI materIjaI je prekrIven je sa
zastItnIm nIvoom pIastIke III stakIa; otporan je na "padanja" gIava
. OptIckI dIskovI ne korIste magnetIzam; onI korIste specIjaInI materIjaI kojI se
mjenja sa IaserskIm svjetIom

WORM dI WORM dI WORM dI WORM dIskovI skovI skovI skovI

PodacI na dIskovIma kojI se pIsu I cItaju moze bItI modIIIkovanI uvIjek
WORM (WrIte Once Read Many tImes) dIskovI mogu se pIsatI samo jedanput
TankI aIumunIjskI IIIm kojI se naIazI Izmedu dvIje stakIene III pIastIcne
povrsIne
. Da bI zapIsaII jedan bIt, uredaj korIstI Iasersko svIjetIo da spaII maII otvor
kroz aIumInIjum; InIormacIje mogu bItI unIstene aII ne I Izmjenjene.
. VrIo trajan I pouzdan
. Read OnIy dIskovI, takvI kao CD-ROM I DVD doIaze Iz IabrIke sa podacIma
unaprIjed zapIIsanIm

Trake Trake Trake Trake
. U poredenju sa dIskom traka je manje skupa I drzI vIse podataka, aII je
metod sIucajnog prIstupa mnogo sporIjI
. Traka je ekonomIcan medIj za potrebe ako se ne zahtjeva brz sIucajan
prIstup, t.j. backup kopIje podataka sa dIskova koje drze veIIkI obIm
podataka
. VeIIke InstaIacIje traka tIpIcno korIste robotske IzmjenjIvace traka kojI
Izmjenjuju trake Izmedu njIhovIh jedInIca I ormara za pohranjIvanje u
bIbIIotecI traka.
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

224
. Stacker - bIbIIoteka koja drzI do nekoIIko traka
. sIIo - bIbIIoteka koja drzI hIIjade traka
. Datoteka koja se naIazI na dIsku moze bItI arhIvIrana na trako kao perIIernI
medIj kojI manje kosta; Kompjuter moze je uzetI nazad na dIsk za aktIvnu
upotrebu

PItanje operatIvnog sIstema PItanje operatIvnog sIstema PItanje operatIvnog sIstema PItanje operatIvnog sIstema

CIavnI posao operatIvnog sIstema je da upravIja IIzIckIm uredajIma I da pruzI
apIIkacIjI apstrakcIju vIrtueIne masIne
Za hard dIskove operatIvnI sIstem obezbjeduje dvIje apstrakcIje
sIrovI uredaj - nIz od bIokova podataka
DatotecnI sIstem . operacIonI sIstem stavIja u red cekanja I
rasporeduje prepIetene zahtjeve od nekoIIko apIIkacIja

ApIIkacIonI InterIejs ApIIkacIonI InterIejs ApIIkacIonI InterIejs ApIIkacIonI InterIejs

NajvIse operatIvnIh sIstema radI sa IzmjenIjIvIm dIskovIma racno kao sa
IIksnIm dIskovIma, jedan novI medIj je IormatIran I prazan datotecnI sIstem
se generIse na dIsku
Trake su predstavIjene kao sIrovI medIj za smjestanje podataka, t.j. jedna
apIIkacIja ne otvara datoteku na tracI, ona otvara cIjeIu traku kao "sIrovI"
uradaj
UobIcajeno je da se traka rezervIse za ekskIuzIvnu upotrebu za datu
apIIkacIju
Posto operacIonI sIstem ne obezbjeduje usIuge datotecnog sIstema apIIkacIja
mora odIucItI kako da korIstI nIz bIokova
Posto svaka apIIkacIja Ima svoja vIastIta pravIIa kako da organIzuje traku,
traka puna podataka ugIavnom moze bItI korIscena od programa kojI ju je
kreIrao

Uredaj traka Uredaj traka Uredaj traka Uredaj traka
Osnovne oprecIje za uredaj traka se razIIkuju od onIh za dIsk uredaj
Iocate pozIcIonIra traku na specIIIcIranI IogIckI bIok a ne na cItavu stazu (sto
odgovara seek operacIjI)
read posItIon operacIja vraca broj IogIckog bIoka na kome je gIava trake
space operacIja omogucuje reIatIvno kretanje
uredajI traka su "append onIy" uredajI; azurIranje bIoka u sredInI trake u
stavrI brIse sve Iza tog bIoka.
PosIe pIsanja bIoka pIse se karaker EOT kao oznaka kraja trake.

menovanje datoteka menovanje datoteka menovanje datoteka menovanje datoteka

PItanje Imenovanja datoteka na IzmjenIjIvIm medIjIma je posebno tesko I to
kad zeIImo da pIsemo podatke na IzmjenIjIvI dIsk na jednom racunaru I onda
ga korIstImo ga na drugom.
SavremenI operatIvnI sIstemI uopste receno ostavIjaju probIem prostora za
datoteku nerjesenIm za IzmjenIjIve medIje I u zavIsnostI od apIIkacIje I
korIsnIka kojI ce se pozabavItI ovIm probIemom.
Neke vrste IzmjenIjIvIh medIja (t.j. CD) su standarIzovanI tako da Ih svI
raIunarI korIste na IstI nacIn
Elektrotehniki fakultet u Sarajevu Programska organizacija raunara i operativni sistemi

225

UpravIjanje hIjerarhIjskIm smjestanje podataka UpravIjanje hIjerarhIjskIm smjestanje podataka UpravIjanje hIjerarhIjskIm smjestanje podataka UpravIjanje hIjerarhIjskIm smjestanje podataka

SIstem za hIjerajhIjsko smjestanje podataka prosIruje hIjerarhIju Iza
prImarne I sekundarne u tercIjaInu - obIcno ImpIementIranu kao dzuboks
traka III IzmjenIjIvIh dIskova
UopbIcajeno ukIjucIvanje tercIjaInIh sIstema za pohranjIvanje podataka se
IzvodI prosIrenjem datotecnog sIstema
maII I cesto korIscene datoteke ostaju na dIsku
veIIke, stare I neaktIvne datoteke se arhIvIraju u dzuboks
UpravIjanje hIjerarhIjskIm smjestanjem podatka uobIcajeno se naIaze u
centrIma sa puno racunara I veIIkIh InstaIacIja za enormno beIIkIm
voIumenom podataka

8rzIna 8rzIna 8rzIna 8rzIna
Dva aspekta vrzIne u tercIjaInIm sIstemIma za smjestanje podataka su
bandwIdth I kasnjenje
8andwIth je mjerenu bajtIma po sekundI
OdrzanI bandwIdth - srednjI IntenzItet podataka u toku veIIkog
transIera podataka; broj bajta ] vrIjeme transIera
EIektIvnI bandwIdth - srednjI IntenzItet podataka za ukupno U]
vrIjeme ukIjucujucI seek III Iocate, Izmjenu ketrIdza
Kasnjenje prIstupa - Iznos vremena potreban da se IocIra podatak
vrIjeme prIstupa dIsku - pomjeru gIavu na uzabranI cIIIndar I
cekaj na rotacIono kasnjenje; <35 mIIIsekundI
PrIstup na tracI zahtjeva motanje trake do zeIjenog bIoka;
desetIne III stotIne sekundI
Uopste receno sIucajan prIstup kod trake je hIIjadu puta sporIjI
nego sIucajan prIstup kod dIska
NIska cIjena tercIjanIh sIstema za pohranu podataka je rezuItat
postojanja jeItInIh punjjenja kojI djeIe skupe uredaje.
zmjenIjIva bIbIIoteka je najboIja za smjestanje neIrekventnIh
podataka, jer bIbIIoteka ne moze podnIjetI vIse od nekoIIko U]
zahtjeva po satu.
Pouzdanost Pouzdanost Pouzdanost Pouzdanost

FIksnI dIsk je pouzdanIjI od IzmjenIjIvog dIska III trake
OptIckI dIsk je pouzdanIjI od magnetnog dIska III trake
Padanje gIava na IIksnom dIsku unIstava podatkem dok na uredaju za traku
III optIckI dIsk cesto ostavIja podatke nedIrnute
CIjena CIjena CIjena CIjena

CIavna memorIja je mnogo skupIja od dIskova
CIjena po megabajtu hard dIska je poredIjIva sa trakom samo ako se jedna
traka korIstI na uredaju
NajeItInIjI uredajI za trake I najjeItInIjI urdajI za dIsk ImaII su IstI kapacItet
godInama
TercIjaIno pohranjIvanje podataka daje ustedu samo kada je broj punjenja
razumno vecI od broja uredaja


226
Sigurnost i zatita u kompjutorskim sustavima

UVOD

John Naisbitt, u knjizi Megatrendovi (Megatrends) koja je izazvala znaajnu panju u strunim
krugovima, je ustvrdio da postindustrijski razvoj svakog drutva mora biti obiljeen prijelazom iz
gospodarstva zasnovanog na proizvodima u gospodarsstvo zasnovano na informacijama. Posljedica za
sigurnost i zatitu informacijskog sustava je slijedea: informacijama treba manipulirati, upravljati i tititi
ih kao to se ini sa ostalom imovinom.

Ne postoji opeprihvaena definicija sigurnosti kompjutorskog sustava. U nastavku slijedi nekoliko
definicija:

"Kompjutorski sustav je siguran ako se korisnici mogu pouzdati u njegov rad i ako se programska podrka
ponaa prema oekivanjima" [3,6]

"Kompjutorski sustav je siguran ako osigurava privatnost, integritet, dostupnost i konzistentnost podataka i
programa"

Prema ovim definicijama, prirodne katastrofe i nevaljana softverska podrka
1
su podjednaka prijetnja
sigurnosti kompjutorskog sustava kao i neautorizirani korisnici. Neovisno o tome da li su neispravni podaci
uklonjeni iz baze podataka od strane neautoriziranog korisnika, virusa, neoekivane programske greke ili
udara groma, rezultat je identian. Zbog toga mjere zatite moraju obuhvatiti daleko vie od pokuaja
namjernih upada u raunalni sustav. Osiguranje raspoloivosti je...

Sigurnost informacija je prvenstveno problem upravljakih struktura (menadmenta), a ne, kao to se
ponekad misli, samo tehniki problem. Najsofisticiranije tehnike sigurnosne mjere mogu biti nedostatne u
sluaju korisnike nepanje i pogreaka u poslovnim procedurama. Prema nekim istraivanjima [1],
najozbiljniju prijetnju sigurnosti informacija predstavljaju nezadovoljni ili otputeni djelatnici. Prema tome,
nije teko sloiti se da menader koji svojim aktivnostima postie zadovoljstvo i motiviranost djelatnika, za
sigurnost ini jednako koliko i tehniko osoblje koje implementira npr. sustav za kontrolu fizikog pristupa.
Nekoliko initelja uzrokuje proirenja odgovornosti na rukovoditelje poslovnih funkcija. Istiem slijedee:

1. Masovna upotreba osobnih raunala. Veliki broj korisnika upotrebljava osobna raunala za obavljanje
svakodnevnog posla. Raunala su esto povezana lokalnim mreama, te je omoguen pristup do centralne
ili lokalne baze podataka. Rastui broj baza podataka koje se mogu organizirati na osobnim raunalima
(desktop databases) ini kompjutorski sustav jo ugroenijim. Veliki porast broja raunala i korisnika
raunalnih sustava je uzrono-posljedino vezan s poveanjem koliine informacija pohranjenih i
obraenih raunalnom tehnologijom. Praktiki, sve vitalne informacije svake napredne organizacije su
pohranjene u raunalnim sustavima. Menadment mora insistirati na adekvatnom koritenju, pouzdanosti i
sigurnosti raunalnih sustava koji slue za manipulaciju najvrednijim resursom informacijama.

2. Poslovanje preko Interneta je inicirano poslovnim odlukama rukovodstva. Zbog svoje otvorenosti i
velikog broja korisnika, Internet predstavlja znaajan sigurnosni problem.

3. Stupanj poznavanja informatike tehnologije se razlikuje od korisnika do korisnika: neki djelatnici
koriste samo poslovnu aplikaciju, dok su drugi gotovo postali raunalni eksperti. Grafiko suelje, alati za
uredsko poslovanje i postavljanje QBE upita su pribliili tehnologiju korisnicima. Time je i informacijski
sustav postao otvoreniji i osjetljiviji s aspekta sigurnosti. Menadment ima kljunu ulogu u obrazovanju
korisnika, definiciji sigurnosnih politika i procedura.

1
U engleskom jeziku se koristi izraz "buggy software".
227
1. Zatita resursa sistemske programske podrke - operativni sustav UNIX

1.1 Kontrola pristupa informacijskom sustavu upotrebom lozinki

Ovo je najraireniji i najei oblik zatite informacijskih sustava. Rukovoditelji esto pod pojmom
raunalne sigurnosti podrazumijevaju lozinke. Popularnost proizilazi iz jednostavnosti i fleksibilnosti.
Procedura definiranja lozinki je najee jednostavna, te se moe dopustiti korisnicima da samostalno
mijenjaju lozinke
2
. Ispravna lozinka identificira ovlatenog korisnika i doputa mu koritenje samo
odreenih pridjeljenih funkcija. Ipak, treba voditi rauna o slijedeem:

- lozinka nije jedini i sveobuhvatni oblik zatite informacijskog sustava; uspostava lozinki moe
biti efikasna jedino u kombinaciji s drugim sigurnosnim mjerama
- uspostava lozinki je onoliko efikasna koliko i njihova administracija tj. postupci i pravila
izmjene, uvanja i upotrebe.

U slijedeoj tablici su navedena odreena obiljeja upotrebe lozinki, te odreene prednosti i nedostaci:

Obiljeje Prednosti Nedostaci
postupak kreiranja lozinke:
korisniki

sistemski generirana

lako se pamti

teko se moe pogoditi

ponekad se lako pogaa

teko se pamti; neki algoritmi
za generiranje se mogu lako
izvesti
vrijeme trajanja
neogranieno


fiksni period



samo jednom (one-time
password)

lako se pamti


lako se pamti ako je
vremenski period koritenja
dovoljno dug; vea sigurnost

spreava pokuaje otkrivanja
pogaanjem

osjetljivost na pokuaje
otkrivanja pogaanjem

osjetljivost ovisi o duljini
vremenskog perioda


teko se pamti

Sustav lozinki je dio "prve linije obrane" protiv neovlatenog pristupa. Osobe koje pokuavaju neovlateno
pristupiti raunalnom sustavu najee pokuavaju doi do lozinki ovlatenih korisnika. Osnovni naini za
pronalaenje lozinki su:

- pokuaj prijave na raunalni sustav isprobavanjem moguih lozinki iz baze podataka esto
koritenih lozinki (common passwords database)
- dohvatom datoteke lozinki i deifriranjem ifriranih lozinki.

Nakon to napada pristupi raunalnom sustavu, moe pokuati ostvariti vei nivo privilegija. Stoga je
poeljno onemoguiti napadaa da se prijavi na raunalni sustav. U tome moe znaajno pomoi ispravno
koritenje lozinki.

Ako lozinke prolaze nezatienim telekomunikacijskim linijama (npr. Internet), potrebno je koristiti se
ifriranjem (npr. SSL prilikom koritenja Web usluge).


2
Ovo nije uvijek najbolje rjeenje. Korisnici esto za lozinke koriste osobne ili poznate podatke (npr. datum roenja,
ime djeteta, prezime poznatog sportaa i sl.).
228
1.2 Pojam korisnikog rauna na operativnom sustavu UNIX

Svaki korisnik koji se prijavljuje (login) na operativni sustav UNIX ima definiran korisniki raun.
Korisniki raun sadri korisniko ime (username) i odgovarajuu lozinku. Korisniko ime je javno ono
je identifikator korisnika na sustavu. Lozinka slui za autentikaciju korisnika s odreenim korisnikim
imenom lozinkom se dokazuje identitet korisnika.

Korisniko ime i lozinka mogu imati od jedan do osam znakova, iako neke novije verzije doputaju
koritenje duljih lozinki. Dulje lozinke su uglavnom sigurnije (jer ih je tee pogoditi). Nije dozvoljeno
kreiranje dva identina korisnika imena na sustavu. Dva korisnika imena mogu imati identine lozinke,
iako je to siguran znak da su oba korisnika odabrale lou lozinku.

Naravno, jedna osoba moe imati vie korisnikih rauna na istom UNIX raunalu.

1.3 Kako se spremaju lozinke na UNIX raunalu?

UNIX koristi datoteku /etc/passwd za identifikaciju svakog korisnika tj. za spremanje podataka o
korisnikim imenima i odgovarajuih lozinki. Svaki red (slog) datoteke sadri podatke o jednom korisniku
odnosno korisnikom imenu. Pojedina polja su odvojena dvotokom (:). Tipina /etc/passwd datoteka je
npr.:

mzgela:w/.izi"#m:134:121:Mario Zgela:/users/home/mzgela:/bin/bash
kpetrovi:x:140:100:Katica Petrovic:/users/home/kpetrovi:/bin/bash
admin:x:145:100:admin:/users/home/admin:/bin/bash
aperkov:x:146:100:Ana Perkov:/users/home/aperkov:/bin/bash
kreich:x:684:100:Karolina Reich:/ users /home/kreich:/bin/bash
ksosic:x:685:100:Ksenija Sosic:/ users /home/ksosic:/bin/bash

Pojedina polja datoteke imaju slijedea znaenja:

Polje Znaenje opis sadraja
mzgela korisniko ime
w/.izi"#m ifrirana lozinka
134 identifikacijski broj korisnika (UID)
121 identifikacijski broj grupe (GID)
Mario Zgela puno ime i prezime korisnika
/users/home/mzgela korisniki poetni (home) direktorij
/bin/bash korisnika ljuska (shell)

1.4 Postupak autentikacije

Prilikom prijave korisnika (login procedura) udaljenom UNIX raunalu, nakon to korisnik unese
korisniko ime, potrebno je dokazati svoj identitet. Postupak dokazivanja identiteta se naziva autentikacija.
Postoje tri osnovna naina autentikacije:

1. Predati raunalu podatak o neemu to korisnik zna npr. tastaturom unijeti lozinku
2. Predati raunalu neto to korisnik posjeduje i zna (npr. magnetna kartica i pin)
3. Dati raunalu informaciju o onome to korisnik jeste (npr. otisak prsta, ronica oka, glas itd.)

Niti jedan od navedenih postupaka nije potpuno siguran nain autentikacije. Prislukivanjem
telekomunikacijskih linija (packet sniffing) napada moe doi do lozinke. Takoer, fizikim napadom na
osobu, napada moe doi do magnetne kartice i pina. Openito, to je postupak autentikacije napredniji, to
napada mora upotrijebiti agresivnije metode da bi se uspio lano predstaviti raunalnom sustavu.
229

Mnoga osobna raunala ne koriste sustav lozinki niti bilo koji drugi postupak autentikacije. Time se
omoguava jednostavnije koritenje raunala od strane bilo kojeg korisnika. Veina korisnika osobnih
raunala se, stoga, pouzdaje u fizike mjere za zatitu informacija pohranjenih na diskovnim ureajima.

Meutim, im se raunalu moe pristupiti s udaljenih mjesta (npr. koritenjem modema i
telekomunikacijskih linija) ili s drugih mjesta lokalne mree raunala, lozinke su neophodne.

Lozinke su najjednostavniji nain autentikacije: one su tajna koju korisnici dijele s raunalom kojem se
predstavljaju (shared secret), tj. kojem se prijavljuju s ciljem koritenja resursa. Nakon unosa korisnikog
imena i lozinke, raunalo provjerava da li lozinka pripada (odgovara) korisnikom imenu, tj. obavlja se
autentikacija. Ako je identitet korisnika potvren, korisnik moe nastaviti i zapoeti s radom na raunalu.
Slika 1 prikazuje prozor unosa IP (Internet Protocol) adrese UNIX raunala na koji se korisnik eli prijaviti
koritenjem programa telnet
3
.


Slika 1: Unos raunalne IP adrese

Slika prikazuje da se korisnik eli prijaviti upravo na raunalo s adresom 170.170.111.29 (polje Host
name). Nakon klika na Connect, pojavljuje se ekran kao na slici 2:


Slika 2: Prijava na udaljeno raunalo

Zatim korisnik unosi korisniko ime (oracle u redu linux login) i lozinku (red Password)
4
. Nakon uspjene
autentikacije, korisnik je postavljen u svoj poetni direktorij (u ovom sluaju
/ora816/app/oracle/product/816).

Neke verzije UNIX-a omoguavaju blokiranje korisnikog rauna u sluaju unosa neispravne lozinke
nekoliko puta u nizu. Blokirani korisniki raun se moe ponovno poeti koristiti tek nakon intervencije
administratora sustava.


3
Program telnet omoguava prijavu na udaljeno raunalo - korisnik zapravo radi na udaljenom UNIX raunalu, tj.
njegovo osobno raunalo postaje "virtualni" terminal.
4
UNIX ne prikazuje lozinku koju korisnik unosi, tj. eventualno se prikazuje niz specijalnih znakova (npr '*'). Tako se
sprijeava tzv. shoulder sniffing itanje lozinke od strane prisutnih osoba.
230
Blokiranje ima dvije funkcije:

1. titi sustav od osoba koje velikim brojem pokuaja ele pronai odgovarajuu lozinku
poznatog korisnika
2. Obavjetava stvarnog korisnika i sistem administratora o pokuajima neovlatenih prijava na
raunalo.

Organizacija koja implementira sustav blokiranja mora definirati stroge formalne postupke za
odblokiravanje korisnikih rauna.

Meutim, automatsko blokiranje moe biti iskoriteno od strane napadaa za tzv. napade s ciljem
uskraivanja usluge (denial of service attacks). Napada koristi poznata korisnika imena, prijavljuje se
pogrenim lozinkama i onemoguava stvarnim korisnicima prijavu na raunalo. Stvarni korisnici e moi
ponovno koristiti resurse raunala tek kada im administrator sustava odblokira raun. Stoga, automatsko
blokiranje rauna nije optimalno rjeenje. Koritenje mehanizma rastue vremenske odgode prijave
(increasing delay login) je daleko bolji pristup. Ovaj pristup uvodi vremensku odgodu ponovne procedure
prijave nakon odreenog broja neuspjelih pokuaja. Vremenska odgoda ponovne procedure prijave je dulja
to je vei broj neuspjelih pokuaja prijave u nizu. Npr., nakon 3. neuspjelog pokuaja, korisnik e moi
ponoviti proceduru prijave tek za 5 minuta. Ako i 4. puta ne unese ispravnu lozinku, ponovni pokuaj
prijave e biti mogu tek nakon 15 minuta. Nakon 8 neuspjelih pokuaja, korisniki raun e biti blokiran.

Operativni sustav AIX ver. 4 se vrlo jednostavno moe konfigurirati s ciljem implementacije vremenske
odgode prijave tako da se izmijeni vrijednost logindelay varijable u konfiguracijskoj datoteci prijava
(/etc/security/login.cfg). Takoer, AIX podrava automatsko blokiranje (varijabla logindisable) i
odblokiranje terminala (varijabla loginreenable).

Linux takoer doputa konfiguriranje s ciljem vremenske odgode slijedee prijave i blokiranje korisnikog
rauna nakon definiranog broja neispravnih pokuaja.

Veina dananjih UNIX raunala koristi konvencionalne (jednostavne) lozinke za autentikaciju: korisnik
zna lozinku i unosi je tastaturom, tj. predaje raunalu na provjeru. Prednost koritenja konvencionalnih
lozinki je u jednostavnosti koritenja i injenici da nije potrebna dodatna oprema (kao to su npr. itai
magnetskih kartica ili otisaka prstiju). Nedostatak je u tome da se lozinke prilino jednostavno mogu
presresti za vrijeme prijenosa komunikacijskim linijama i preuzeti od strane napadaa. Ovo je posebno
problematino ako se raunalu pristupa s udaljenog mjesta. ak i prosjeno sposoban napada moe doi
do lozinki koje nezatiene putuju mreom na Internetu je dostupan veliki broj besplatnih programa za
prislukivanje mrenog prometa.

Jedini nain za obavljanje sigurne procedure pristupanja UNIX raunalu s udaljenog mjesta je koritenje
jednokratnih lozinki (one-time passwords) i/ili ifriranje lozinki. Na alost, veina UNIX sustava i dalje
koristi lozinke koje je mogue koristiti vie puta ili se lozinke neifrirane prenose komunikacijskim
linijama. Upravo zato su lozinke najei cilj napada.

1.5 Procedura izmjene i provjere nove lozinke

Procedura izmjene lozinki mora biti sastavni dio sigurnosne politike svake organizacije.

Izmjena lozinke se provodi naredbom passwd. U pravilu, novim tek kreiranim korisnikim imenima,
sistem administrator postavlja sluajno odabranu lozinku koju su korisnici obavezni promijeniti prilikom
prve slijedee prijave. Ovo je uobiajeno predefinirano (default) ponaanje na AIX operativnom sustavu.

231
Ukoliko korisnik zaboravi svoju lozinku, jedino administrator sustava (superuser, root) moe postaviti
novu lozinku. Niti administrator sustava ne moe deifrirati lozinku bilo kojeg korisnika, ali kao to je
prethodno reeno, moe postaviti novu lozinku bez poznavanja stare (tj. trenutno vaee)
5
.

1.6 Sustav ifriranja lozinki

Veina starijih operativnih sustava je uvalo lozinke svih korisnikih rauna u itljivoj ASCII datoteci.
Sustav je samo privilegiranim korisnicima i programima dozvoljavao pristup do datoteke lozinki (password
file). Meutim, programskom grekom, grekom sistem administratora
6
ili namjernom akcijom napadaa
sadraj datoteke lozinki moe postati vidljiv neovlatenim korisnicima.

Ovaj problem se u UNIX-u rjeava tako da se lozinke ne pohranjuju u stvarnom, itljivom obliku. U
datoteci lozinki (/etc/passwd) su pohranjene ifrirane lozinke. Postupak ifriranja se obavlja jednosmjernom
(nereverzibilnom) funkcijom crypt(). Kada se korisnik pokuava prijaviti sustavu, program bin/login
zapravo ne deifrira ifriranu lozinku pohranjenu u /etc/passwd nego izvrava obrnut postupak:

1. nakon unosa lozinke u liniju prijave (login prompt), program ifrira uneenu lozinku
2. usporeuje rezultat ifriranja unesene lozinke sa lozinkom za korisniko ime pohranjenom
u datoteci /etc/passwd
3. ako su vrijednosti jednake, korisniku se dozvoljava prijava, a time i koritenje odreenih
raunalnih resursa

Sigurnost ovog postupka se zasniva na snazi kriptografskog algoritma i tekoama pri pogaanju
korisnike lozinke. Do dananjeg dana, crypt() algoritam se pokazao vrlo otporan na napade. Na alost,
algoritam ne spreava korisnike da odaberu lozinke koje je lako pogoditi.

Algoritam crypt() se zasniva na DES algoritmu. Preuzima korisniku lozinku kao klju za ifriranje i ifrira
64 bitni blok sainjen od niza 0. Rezultat ifriranja se ponovno ifrira sa lozinkom. Proces se ponavlja 25
puta. Konanih 64 bita se transformira u niz od 11 ispisnih znakova (printable characters) koji se
pohranjuju u /etc/passwd datoteku. Svaki od 11 znakova sadri 6 bita rezultata ifriranja i predstavlja jedan
od 64 znaka iz niza ".", "/", 0-9, A-Z, a-z. Vrijednost 000000
(2)
ifriranog teksta e u konanoj lozinki biti
predstavljen znakom ".", a vrijednost 000101
(2)
=5
(10)
se predstavlja znakom "2"
7
.


Ciljna abeceda je:

./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

Primjer: Ako je rezultat crypt() algoritma

0101100101001110010010110100011100000100101011001101011000110001

onda se u datoteku lozinki sprema niz znakova:

2YBFnP1eALk



5
Ovo se radi navoenjem korisnikog imena ija lozinka se eli promijeniti nakon naredbe passwd (npr. passwd
mzgela).
6
Npr. sigurnosne kopije diskovnih podataka se moraju redovito kreirati i u pravilu se spremaju na magnetne trake, CD
medije ili neki drugi prijenosni medij. Mediji se moraju uvati na fiziki sigurnom mjestu (npr. sef). Ako je medij sa
datotekom lozinki ukraden, svi korisnici sustava moraju promijeniti lozinke.
7
Prva 4 bita slijeva se dopunjavaju na duljinu 6 bita sa 2 vrijednosti 0, tako da niz bita zapoinje sa 000101 (a ne
0101).
232
Objanjenje:

000101
(2)
= 5
(10)
se preslikava u 5. znak ciljne abecede -> 2
100101
(2)
=37
(10)
se preslikava u 37. znak ciljne abecede -> Y
001110
(2)
=14
(10)
... -> B
010010
(2)
=18
(10)
... -> F
110100
(2)
=52
(10)
... -> n
011100
(2)
=28
(10)
... -> P
000100
(2)
= 4
(10)
... -> 1
101011
(2)
=43
(10)
... -> e
001101
(2)
=13
(10)
... ->A
011000
(2)
=24
(10)
... -> L
110001
(2)
=49
(10)
... -> k

Iako je izvorni kd crypt() algoritma javan i dostupan, jo uvijek nije pronaena i objavljena tehnika kojom
bi se ifrirana lozinka mogla deifrirati, tj. kojom bi se od ifriranog niza dolo do izvornog teksta. Stoga su
jedini naini probijanja UNIX sustava lozinki tzv. brutalni napad (brute force attack) i napad pomou
rjenika lozinki (dictionary attack).

Brutalnim napadom se za poznati algoritam iskuavaju sve mogue vrijednosti kljua (u ovom sluaju se
radi o lozinki) kako bi se dolo do ifriranog teksta lozinke. Kada se za odreeni klju (lozinku) K dobije
niz znakova koji odgovara ifriranom tekstu lozinke, sa sigurnou se moe ustvrditi da je klju K lozinka.
Da bi brutalni napad sigurno bio uspjean, potrebno je iskuati 64
10
+ 16 (2
60
+ 2
4
)kljueva i usporediti
svaki rezultat sa stvarnom, ifriranom lozinkom.

Napad pomou rjenika lozinki se zasniva na rjeniku koji ima pohranjene nizove znakova koji se esto
koriste kao lozinke (npr. imena osoba, datumi, itd.). Svaka vrijednost iz rjenika se ifrira i usporeuje s
odgovarajuom vrijednosti spremljenom u datoteci /etc/passwd
8
.

1.7 Jednokratne lozinke (one-time passwords)

Najefikasniji pristup minimiziranja rizika upotrebe lozinki je upotreba jednokratnih lozinki koje se koriste
samo za jednu prijavu na raunalo.

U nastavku e biti pojanjena implementacija jednokratnih lozinki pomou token kartica. Korisnik
posjeduje karticu s programiranim funkcijama za autentikaciju i serijskim brojem. Da bi se prijavio na
centralno raunalo, korisnik mora upotrijebiti karticu i pripadnu lozinku (pin) da bi dobio vrijednost
jednokratne lozinke. Procedura generiranja jednokratne lozinke je slijedea:

1. Korisnik kontaktira udaljeno raunalo na koje se eli prijaviti; raunalo mu prikazuje
odreeni broj; raunalo izraunava lozinku na osnovi pina i broja prikazanog korisniku
2. Korisnik unosi prikazani broj u karticu, zajedno s tajnim pinom kartice
3. Kartica izraunava lozinku na osnovi uneenih vrijednosti i prikazuje je na
zaslonu
4. Korisnik upotrebljava prikazani broj kao svoju jednokratnu lozinku na udaljenom raunalu

Kartica moe biti programirana tako da se sama uniti ukoliko se vie puta pokua unijeti neodgovarajui
pin.

Osnovni nedostatak ovakvih sustava moe biti cijena.


8
Ova vrsta napada se esto naziva i pretraivanje kljueva (key search) ili razbijanje lozinke (password cracking).
233
Sustavi token kartica su pouzdani i efikasni, proizvoai u pravilu osiguravaju programsku podrku za
jednostavnu implementaciju i integraciju u UNIX operativni sustav. Kartice eliminiraju rizik prislukivanja
tj. presretanja lozinki.

1.8 Kerberos alternativa jednokratnim lozinkama

Autentikacija se u sustavu Kerberos zasniva na lozinkama pohranjenim na Kerberos posluitelju. Za razliku
od UNIX lozinki koje su ifrirane jednosmjernim nereverzibilnim algoritmom, Kerberos lozinke su
pohranjene na posluitelju i ifrirane su DES algoritmom. Zato se lozinke mogu deifrirati kada je
potrebno.

Korisnik i dalje dokazuje svoj identitet pomou lozinki. Kerberos posluitelj pristupa do neifriranih
korisnikih lozinki to je rezultat injenice da se ne koristi asimetrina enkripcija. To je ozbiljan nedostatak
sustava. Kerberos posluitelj mora biti osiguran fizikim mjerama, te neprobojan za napade prijavom (login
attacks). Ako bi se napada mogao prijaviti na posluitelj i doi do lozinke administratora, mogao bi
preuzeti sve korisnike lozinke.

Za obinog korisnika, prijava na UNIX posluitelj sa Kerberos sustavom je potpuno identina: korisnik
unosi svoje korisniko ime i lozinku. Ako korisniko ime postoji i lozinka je ispravna, korisnik moe
upotrebljavati raunalne resurse.

Ono to se dogaa u pozadini, daleko je sloenije. Nakon unosa korisnikog imena i lozinke, odgovarajua
poruka se prenosi do autentikacijskog posluitelja (Kerberos Authentication Server). Poruka sadri
korisniko ime i tono vrijeme enkriptirano simetrinim algoritmom (DES) i kljuem - korisnikom
lozinkom. Autentikacijski posluitelj sadri bazu podataka korisnikih imena i lozinki. Na osnovi
korisnikog imena dolazi do lozinke, koristi DES algoritam i lozinku kao klju za deifriranje primljenog
podatka o tonom vremenu. Ako je deifriranje uspjeno, server kreira "ulaznu kartu" (U
k
- ticket granting
ticket), ifrira je korisnikom lozinkom i alje korisniku. "Ulazna karta" sadri dva podatka:

- sesijski klju (session key) S
k

- kartu za Kerberos servis za dozvole (Ticket Granting Service - TGS); karta je ifrirana
sesijskim kljuem i kljuem servisa za dozvole

Tek nakon primljene "ulazne karte", radna stanica moe kontaktirati Kerberos servis za dozvole s ciljem
dobivanja dozvole za pristup resursima UNIX raunala. Na primjer, recimo da je korisniku potrebno
dozvoliti pristup do datoteka u poetnom (home) direktoriju. Kada korisnik pokua pristupiti datotekama sa
svoje radne stanice, sistemski softver inicira kontakt sa Kerberos servisom za dozvole i zahtijeva kartu
odnosno dozvolu za pristup servisu posluitelja datoteka (File Server Service - FSS). Servis za dozvole
dostavlja kartu korisnikoj radnoj stanici. Ova karta (P
k
) sadri:

- korisniko ime
- vrijeme kada dozvola pristupa istjee
- IP adresu korisnike radne stanice.

Karta je ifrirana lozinkom servisa posluitelja datoteka. Radna stanica korisnika zatim dostavlja ovu kartu
servisu posluitelja datoteka. Posluitelj datoteka deifrira kartu sa svojom lozinkom i zatim stvara vezu
izmeu korisnika i korisnike radne stanice (korisniko ime, IP adresa) i korisnikog imena. Cijela
komunikacija izmeu radne stanice, servisa za dozvole i servisa posluitelja datoteka je ifrirana ime je
prislukivanje onemogueno.

Kerberos servis za dozvole (TGS) je mogao ustanoviti identitet korisnika nakon to je korisnik zatraio
kartu za servis posluitelja datoteka jer je:

1. zahtjev korisnika ifriran sesijskim kljuem S
k

234
2. korisnik mogao saznati sesijski klju jedino deifriranjem originalne ulazne karte ifrirane
korisnikom lozinkom; originalnu ulaznu kartu je korisniku dostavio Kerberos autentikacijski
posluitelj

Treba primijetiti da se korisnika lozinka nikada ne prenosi mreom:
- korisnik unosi lozinku na svojoj radnoj stanici, ali se ona koristi samo za enkripciju tonog
vremena i ne prenosi se do servera
- autentikacijski posluitelj posjeduje lozinke svih korisnika i koristi ih za ifriranje ulazne
dozvole U
k


Servis posluitelja datoteka moe ustanoviti identitet korisnika jer:

1. karta P
k
koju posluitelj datoteka prima od korisnika je ifrirana kljuem servisa posluitelja
datoteka to ifriranje je obavio Kerberos servis za dozvole, a ne korisnik
2. karta P
k
sadri IP adresu i korisniko ime te podatke je u kartu mogao smjestiti i ifrirati,
kljuem FSS-a, jedino Kerberos servis za dozvole (TGS)

Stoga je TGS siguran u identitet korisnika, to je sasvim dovoljno za to da i FSS bude siguran u isto.

Treba napomenuti da Kerberos sustav u svaki korisniki zahtjev smjeta podatak o tonom vremenu kako
bi se napadae onemoguilo u namjeri da presretnu ulaznu kartu s ciljem kasnijeg ponovnog slanja s istog
raunala.

Nakon autentikacije, korisnik upotrebljava raunalne resurse na uobiajen nain.

1.8.1 Ogranienja Kerberos sustava

Postoji nekoliko ogranienja sustava Kerberos:

1. Sustav je dizajniran za okruenja u kojima svaku radnu stanicu koristi samo jedan korisnik. Kerberos
uva "karte" u direktoriju /tmp. Ako korisnik dijeli raunalo s drugim osobama, moe se dogoditi da
njegova karta bude ukradena s ciljem neovlatenog pristupa.
2. Obavezno je postojanje sigurnog Kerberos servera koji sadri centralnu bazu podataka lozinki. Server
bi morao biti uvan u zasebnoj, fiziki osiguranoj prostoriji.
3. Ako Kerberos server prestane s radom, cijeli sustav se ne moe koristiti.
4. Sve lozinke u centralnoj bazi podataka su ifrirane sa samo jednim, glavnim kljuem posluitelja
(server master key), koji je esto pohranjen na istom tvrdom disku na kojem je i baza podataka. Ako je
Kerberos server uspjeno napadnut, tj. napada je doao do glavnog kljua, sve lozinke moraju biti
promijenjene.
5. Obavezna je instalacija Kerberos sistemskih programa i podeavanje pristupnih parametara na svaku
radnu stanicu s koje e se pristupati Kerberos sustavu.
6. Zbog prethodne toke, Kerberos se ne moe efikasno upotrebljavati na Internetu.

1.9 Sustav UNIX datoteka i pristupnih privilegija

Korisnik koji kreira odreenu datoteku postaje njen vlasnik (owner), te ima razliite mogunosti
manipulacije s tom datotekom. Svaki korisnik sistema pripada odreenoj grupi i moe, ako to eli, dijeliti
svoje datoteke s korisnicima iste grupe. Svi korisnici koji nisu u njegovoj grupi se tretiraju kao "ostali"
(others). Pristupne privilegije (file permissions) odreuju tko moe itati, mijenjati i izvravati
odgovarajue datoteke i programe. To je osnovni nain zatite podataka pohranjenih u UNIX operativnom
sustavu.



235
Primjer:

Naredba ls l rezultira slijedeim ekranom:



Slijedi objanjenje sadraja ekrana:

total 212 ukupan broj blokova veliine 512 B u svim datotekama i direktorijima
tekueg direktorija
d (ili -) - tip datoteke: d znai da je direktorij, a "" znai da je obina datoteka
rw------ - dozvole za koritenje datoteke
1 - broj veza (links) na datoteku
mzgela - vlasnik datoteke (korisnik koji je kreirao datoteku)
users - grupa kojoj pripada vlasnik
126 - veliina datoteke u B
Svi 9 13:07 - datum i vrijeme zadnje izmjene datoteke
.bash_history - ime datoteke

Tree grupa znakova iz objanjenja (npr. rw-------) definira dozvole za koritenje datoteke/direktorija -
pristupne privilegije tj. prava korisnika za rad s tom datotekom/direktorijem. Niz od 9 znakova treba
razloiti na tri polja po tri znaka. Prva tri znaka oznaavaju dozvole pristupa za vlasnika datoteke, druga tri
znaka za korisnike iz iste grupe kojoj pripada vlasnik, a posljednja tri za sve ostale korisnike. Svaki znak
govori da li je, i kome, dozvoljeno itanje, izmjena i izvravanje datoteke:

r (-) - dozvoljeno itanje datoteke (nije dozvoljeno)
w (-) - dozvoljeno pisanje u datoteku (nije dozvoljeno)
x (-) - dozvoljeno izvravanje datoteke (nije dozvoljeno)

Dozvole imaju razliita znaenja za datoteke i direktorije:

1. Dozvola za itanje (r)
- za datoteku znai da se moe pregledavati sadraj te datoteke (naredbe more, cat, vi, joe)
- za direktorij znai da se moe pregledavati sadraj direktorija (ls)

2. Dozvola za pisanje (w)
- za datoteke znai da se moe mijenjati sadraj datoteke (vi, joe, ed) ili zamijeniti cijelu
datoteku s drugom (replace)
- za direktorij znai da se moe kreirati ili brisati datoteke iz tog direktorija (za brisanje datoteke
iz direktorija dovoljno je imati dozvolu za pisanje na tom direktoriju, a ne i na samoj datoteci)

3. Dozvola za izvravanje
- za datoteku znai da se moe izvriti kao naredba
- za direktorij znai da se moe pristupiti tom direktoriju (cd)

Pri dodjeli privilegija, vrijede slijedea pravila:

- Korisnik moe imati dodijeljenu privilegiju izvravanja, bez privilegije itanja. Program je mogue
izvravati bez itanja njegova sadraja. Ovo je korisno kada se program eli sakriti, a dozvoliti izvravanje.
236
Takoer, ova opcija se upotrebljava kada se korisniku dozvoljava izvravanje programa, a ne dozvoljava
kreiranje kopije programa.

- Korisnik moe imati dodijeljenu privilegiju itanja programa, bez privilegije izvravanja. Ako
korisnik kopira program, moi e ga i izvriti. Kopija e se od originala razlikovati u dvije bitne stvari:
apsolutnom putu (absolute pathname) i vlasnitvu - kopija e biti u vlasnitvu korisnika koji ju je kopirao, a
ne vie u vlasnitvu originalnog korisnika.

- Vlasnik datoteke ne mora imati nikakva prava pristupa, a lanovi grupe u kojoj je vlasnik mogu imati
sva prava. Vlasnik datoteke to moe napraviti kako ne bi npr. nenamjernom operacijom obrisao datoteku.

Za promjenu dozvola se koristi naredba chmod sa sintaksom:

chmod u?d datoteka

pri emu je:

u - polje koje elimo mijenjati (u vlasnik, g grupa, o - ostali); ako se izostavi onda se
izmjena radi za sva tri polja
? - operacija (+ dodavanje dozvole, - uklanjanje, = postavljanje na danu vrijednost)
d - dozvola (r itanje, w pisanje, x izvravanje).

Tako na primjer za datoteku sa dozvolama "rw-rw-r--", naredba chmod +x mijenja mod u "rwxrwxr-x".

Osim to moe promijeniti dozvola pristupa datoteci, korisnik moe promijeniti i grupu kojoj datoteka
pripada, ali i samog vlasnika. Drugim rijeima, korisnik moe prenijeti vlasnitvo datoteke na drugog
korisnikana sistemu. Naredba za promjenu grupe kojoj pripada odreena datoteka je naredba chgrp sa
sintaksom:

chgrp datoteka grupa

pri emu je datoteka ime datoteke, a grupa ime grupe kojoj elimo da datoteka pripada. Da bi se ovo moglo
uraditi, korisnik mora biti vlasnik datoteke i lan grupe kojoj datoteka pripada. Analogno, za promjenu
vlasnika se koristi naredba chown:

chown datoteka vlasnik

Kada korisnik jednom prenese vlasnitvo datoteke na drugog korisnika ili grupu, vie nema mogunosti
vratiti datoteku nazad u svoje vlasnitvo.

1.10 Liste za kontrolu pristupa (Access Control Lists, ACLs)

Neke verzije UNIX operativnog sustava podravaju liste za kontrolu pristupa. Liste za kontrolu pristupa su
nadopuna standardnim UNIX pristupnim privilegijama. Omoguavaju specificiranje dodatnih pristupnih
privilegija za odreene korisnike, to osigurava daleko bolju granulaciju privilegija nego kod standardne
mogunosti. Mogu se postaviti razliita pristupna prava za razliite korisnike grupe i pojedine korisnike.

Operativni sustav AIX podrava liste za kontrolu pristupa.

Liste su posebno pogodne za manipulaciju pristupnim pravima u okviru manjih projektnih grupa - kada
korisnici samostalno ele dodijeliti prava odreenim korisnicima ili grupama tj. kada je nuna fleksibilnost
u definiciji pristupnih prava. Npr. recimo da Darko eli Petru dodijeliti pravo pristupa do fajla F. Bez ACL-
a, Darko bi morao od administratora sistema zahtijevati dodjelu privilegija. Administrator bi morao uiniti
slijedee:
237

1. kreirati novu grupu G,
2. u grupu G smjestiti samo korisnike Darka i Petra
3. datoteku F pridruiti grupi G

U osnovi, lista za kontrolu pristupa u operativnom sustavu AIX ima slijedei izgled:

base permissions: osnovne pristupne privilegije u UNIX-u:
owner (janko): rw- pristupne privilegije vlasnika
group (statistika): rw- pristupne privilegije grupe 'statistika'
others: r-- pristupne privilegije ostalih korisnika
extended permissions dodatne pristupne privilegije:
enabled da li se specifine privilegije koriste ili ne
specify r-- u: marko pristupne privilegije za korisnika 'marko'
deny -w- g: proj pristupne privilegije grupe 'proj'
permit rw- u: damir, g: racun pristupne privilegije korisnika 'damir' kada je u grupi 'racun'

Linije ispod odjeljka 'base permissions' su zapravo standardna UNIX pristupna prava do datoteka i
direktorija. Dakle, vlasnik datoteke 'Janko' na koju se lista odnosi ima pravo itanja i izmjene datoteke,
lanovi grupe 'statistika', koja je vlasnik datoteke, takoer imaju ista prava, dok ostali korisnici sistema
imaju samo prava itanja.

Odjeljak 'extended permissions' doputa definiranje pristupnih prava za odreene korisnike i grupe.
Klauzula 'enabled' ukazuje da se dodatne pristupne privilegije doista koriste
9
.

Ostatak linija predstavlja tzv. "ulaze kontrole pristupa" (access control entries) koji imaju slijedeu
sintaksu:

operacija tip_pristupa podaci_o_korisniku_i_grupi

Pojam 'operacija' moe biti 'permit', 'deny' ili 'specify', koje odgovaraju operacijama + (dodavanje
privilegije), - (uskraivanje privilegije) i = (postavljanje na odreenu privilegiju) naredbe chmod.

Pojam 'tip_pristupa' je identian standardnim pristupnim mogunostima (r -itanje, w - izmjena, x -
izvravanje).

Pojam 'podaci_o_korisniku_i_grupi' sadri korisniko ime (kojem prethodi 'u:') i/ili jednu ili vie naziva
grupe (svakom nazivu grupe prethodi 'g:'). Pojedini podaci moraju biti odvojeni zarezom.

Prva linija ACE-a iz prethodnog primjera (specify r-- u: marko) daje privilegiju itanja korisniku
'marko' na datoteci za koju se pie ACL. Druga linija (deny -w- g: proj) uklanja pravo itanja grupi
'proj'. Svi korisnici koji pripadaju grupi 'proj' gube pravo itanja datoteke, bez obzira kakva prava su im
direktno pridijeljena. Posljednja linija (permit rw- u: damir, g: racun) daje prava itanja i izmjene
korisniku 'damir' dok je u grupi 'racun'.

Liste koje specificiraju i korisniko ime i grupu se esto koriste kada se korisniku pripadnost grupi
dodjeljuje privremeno. Takvom listom se osigurava da e pravo pristupa do odreene datoteke biti ukinuto
kada korisnik bude uklonjen iz grupe navedene u listi. U prethodnom primjeru, korisnik 'damir' e izgubiti
pravo pristupa do datoteke kada bude uklonjen iz grupe 'racun'.

Ako je u odjeljku 'podaci_o_korisniku_i_grupi' vie od jednog elementa, svi elementi moraju biti istiniti da
bi se redak primijenio (AND operator). Na primjer,

permit rw- g: racun, g: proj

9
Ako se pristupne privilegije koje slijede ne ele koristiti, potrebno je upisati klauzulu 'disabled'.
238

e dopustiti itanje i izmjenu korisnicima koji su istovremeno u grupama 'racun' i 'proj'. Pristup nee biti
dozvoljen korisnicima koji su u samo jednoj od navedenih grupa.

Slijedei ACE e dozvoliti korisniku 'marko' pristup samo ako se on nalazi u obje navedene grupe ('racun',
'statistika'):

permit rw- u: marko, g: racun, g: statistika

Ako se eli dozvoliti pristup svim korisnicima koji su u grupama 'racun' ili 'statistika' (OR operator),
potrebno je kreirati dva zasebna reda u ACL-u:

permit rw- g: racun
permit rw- g: statistika

Namee se pitanje to se dogaa kada se moe primijeniti vie od jednog reda za istog korisnika ili grupu.
Kada korisnik zahtijeva pristup do datoteke s dodatnim privilegijama u ACL-u, provodi se uniranje
osnovnih dozvola pristupa (base permissions) i svih primjenjivih ACE-a. Sve ACE koje se mogu
primijeniti na korisnika se kombiniraju sa operatorom unije (UNION). Takoer se kombiniraju i zabrane
pristupa iz skupa osnovnih dozvola i ACE-a. Ako je pristup dozvoljen i nije zabranjen, onda je pristup
mogu. Dakle, mogue kontradikcije meu ACE, se razrjeuju na najjednostavniji nain: pristup nije
dozvoljen osim ako je dozvoljen i nije zabranjen.

Na primjer, su ACE za odreenu datoteku:

base permissions
owner (petar): rw-
group (platni): r--
others: ---
extended permissions
enabled
specify r-- u: darko
permit rw- g: racun , g: proj
deny rwx g: info

Ako je korisnik 'darko' u grupama 'racun' i 'proj', a nije lan grupe 'platni', oito je da prema osnovnim
dozvolama pristup korisniku nije dozvoljen. Meutim, u dodatnim dozvolama je dozvoljeno itanje (1. red
dodatnih dozvola). Drugi red dozvoljava itanje i izmjenu svim korisnicima grupa 'racun' i 'proj'. Dakle, i
drugi red se odnosi na korisnika 'darko'. Prvi red, meutim, implicitno zabranjuje izmjenu i izvravanje, te
e 'darko' ipak imati samo pravo itanja.

1.11 Pojam sistem administratora (superuser, root)

Osim redovnih, "obinih" korisnika, svaki UNIX operativni sustav ima i poseban korisniki raun za
administriranje sustava (superuser, root). Korisnik root slui operativnom sustavu za izvoenje osnovnih
funkcija, kao npr. prijava i odjava korisnika, upravljanje ulazno-izlaznim ureajima itd. Zbog toga ima
gotovo potpunu kontrolu nad operativnim sustavom: gotovo sva sigurnosna ogranienja se zaobilaze ako se
program izvrava od strane root korisnika. Takoer se iskljuuju gotovo sve provjere i upozorenja.

Root korisnik ima UID vrijednost 0 u datoteci /etc/passwd. Bilo koje korisniko ime moe biti (ili
naknadno postati) superuser, tj. dobiti privilegije sistemskog administratora. Svaki korisnik koji ima
(dobije ili sam ostvari) UID vrijednost 0 ima privilegije superusera. sistem administrator treba paljivo
pratiti promjene u /etc/passwd datoteci odnosno u UID polju. Neoekivana pojava vrijednosti 0 u polju
UID najvjerojatnije znai napad na raunalni sustav.
239

U pravilu, veina dananjih UNIX sistema je tako konfigurirana da se root korisnik moe prijaviti na sistem
samo sa sistemske konzole, a ne s ostalih terminala.

Root korisnik moe:

- ukljuiti i iskljuiti postupke praenja korisnikih aktivnosti (logging, auditing)
- itati i izmijeniti svaku memorijsku lokaciju
- pristupiti svakom ureaju
- iskljuiti raunalo (shutdown)
- itati, mijenjati i brisati svaku datoteku ili direktorij na sustavu
- izvriti svaki program
- brisati, dodavati ili mijenjati obiljeja korisnika (npr. lozinke)
- mijenjati i dodjeljivati prava pristupa svakoj datoteci, direktoriju ili programu

1.11.1 Problemi sa root korisnikom

Superuser je glavni sigurnosni nedostatak UNIX operativnog sustava. Poto superuser moe izvoditi
gotovo sve operacije, nakon to napada ostvari superuser privilegije, moe uiniti mnoge neeljene
aktivnosti na sistemu. Zato svaki napada koji se uspije prijaviti kao obian, redovni korisnik na UNIX
raunalo, pokuava postati superuser.

Veina sigurnosnih problema proizilazi iz zadobivanja superuser privilegija od strane obinih korisnika.
Da bi se rizik smanjio, izmeu ostalog je neophodno:

- pohraniti vane podatke na prijenosnom mediju (removable media), tako da napada koji
zadobije privilegije superusera ipak nee imati pristup do kritinih datoteka, odnosno nee ih
moi unititi.
- ifrirati vane podatke; superuser ima sve privilegije na UNIX sistemu, ali to ne omoguava
deifriranje podataka ifriranih naprednim kriptografskim tehnikama
- redovito kreirati sigurnosne kopije korisnikih i sistemskih datoteka (backup)

1.11.2 Zatita root korisnikog rauna

Osnovni nain zatite root korisnikog rauna jesu sigurnosni terminali.

Napadai se esto pokuavaju prijaviti kao root korisnici uzastopnim pogaanjem root lozinke. Da bi se ovi
pokuaji onemoguili ili ograniili, mogue je dopustiti izvoenje procedure prijave root korisnika samo sa
zatienih terminala. Ako je terminal oznaen kao nesiguran, ne moe posluiti za prijavu root korisnika sa
standardnom procedurom prijave (login prompt).

Poslu deklariranja sigurnih terminala treba pristupiti vrlo paljivo. Terminali s modemskom vezom nisu
kandidati za sigurne terminale. Takoer, terminali kojima fiziki moe pristupiti vei broj osoba, takoer
ne bi trebali biti proglaeni sigurnima. Treba napomenuti da ako je terminal proglaen "nesigurnim", to ne
znai da je zabranjeno izvravanje superuser naredbi: to samo obvezuje korisnika da se prvo prijavi sa
svojim korisnikim imenom, a zatim naredbom su
10
moe postati root. Tako se dodaje jo jedan nivo
zatite - da bi napada mogao postati root, mora poznavati dvije lozinke (obinog korisnika i roota).

Nasuprot tome, ako se terminal nalazi u posebno osiguiranoj sistemskoj prostoriji, moe se deklarirati
sigurnim ime e biti omoguena brza prijava roota sustavu, bez prethodnog koritenja naredbe su.

10
Naredba su omoguava ve prijavljenom korisniku da se prijavi kao neki drugi korisnik. Npr. naredba su mzgela
znai da se prijavljeni korisnik eli prijaviti kao korisnik mzgela. Upotreba naredbe su bez parametara znai da se
korisnik eli prijaviti sustavu kao root. Veina UNIX sustava automatski registrira - zapisuje (log) svaki pokuaj
prijave root korisnika pomou su naredbe. To administratoru sustava moe posluiti za kontrolu neovlatenih
pokuaja prijave superusera.
240
1.12 Zato koristiti enkripciju u operativnom sustavu UNIX

Moemo se zapitati zato bismo u UNIX-u koristili tehnike ifriranja kada postoje sigurnosne metode koje
obuhvaaju lozinke i dozvole pristupa do odreenih datoteka i direktorija. Odgovor na ovo pitanje je vrlo
jednoznaan: zbog superusera. Kao to je napomenuto u prethodnom poglavlju, superuser moe zaobii
sve provjere i restrikcije u sustavu datoteka (file system). Meutim, niti superuser bez poznavanja kljua ne
moe deifrirati podatke ifrirane suvremenim algoritmom. To je vana razlika izmeu sigurnosnih
kontrola zasnovanih na pristupnim dozvolama (access control) i lozinkama i kontrola zasnovanih na
kriptografskim tehnikama.

Kada se sadraj datoteka titi pristupnim privilegijama u okviru UNIX sustava datoteka, podaci su
pohranjeni u itljivom obliku (plain text). Svaki korisnik koji dobije pravi pristupa do odreene datoteke
moe "proitati" njezin sadraj.

ifrirani podaci su zatieni:

- tajnou kljua - to dulji klju, vea je sigurnost
- snagom algoritma ifriranja

Usprkos injenici da sistem administrator, ili netko tko neovlateno zadobije superuser privilegije, moe
pristupiti svakoj, pa tako i ifriranoj datoteci, on nee moi deifrirati njen sadraj.

2. Neke mjere zatite poslovanja preko Interneta

Internet ima znaajan utjecaj na sve aspekte drutva. Postaje izuzetno vano orue gospodarskih subjekata
u marketinkim aktivnostima prema krajnjim kupcima i poslovnim partnerima. Broj obavljenih transakcija
i, to je jo vanije, koliina novca u optjecaju na Internetu su u velikom porastu. Meutim, sigurnost ostaje
sredinji problem elektronikog poslovanja:
- potencijalni korisnici nemaju dovoljno povjerenja u sigurnost komunikacija i
sigurnosne mjere koje poduzimaju ponuai robe i usluga putem Interneta
- korisnici nemaju povjerenja u "virtualne duane"
- u mnogim drutvima, veina pravnih problema jo uvijek nije rijeena

Prvi problem moe biti djelomino rijeen upotrebom naprednih kriptografskih tehnika i tehnikim
mjerama zatite. Da bi upotreba kriptografskih tehnika postala efikasna, mora biti definiran pravni okvir.

Neki tehniki problemi komunikacije preko Interneta koja treba rijeiti su:

1. prislukivanje poruka (osiguranje privatnosti) - packet sniffing
Program za prislukivanje paketa (packet sniffer) se instalira na odreeno raunalo u mrei koje zaprima
podatkovne pakete koji se prenose mreom. Na takav nain se prilino jednostavno moe doi do lozinki
pojedinih korisnika operativnog sustava, baza podataka i slino. Prislukivanje paketa moe biti vrlo
korisno za nadgledanje mrenog prometa (mreni administratori), ali i neautoriziranim osobama za analizu
podataka (hackers). Ovi programi se mogu i besplatno nabaviti na razliitim Web stranicama.

2. maskiranje (autentikacija) - IP spoofing
Svako raunalo na Internetu odailje odgovarajue IP pakete. Paketi obavezno sadre IP adresu raunala -
poiljatelja. Osoba s potpunom kontrolom softvera takvog raunala (npr. operativnog sustava), moe
izmijeniti protokol raunala te u paket ubaciti bilo koju IP adresu. Tako primatelj moe stei lanu
informaciju o adresi poiljatelja.

3. izmjena podataka prilikom prijenosa (data alteration)
241
Poruku je mogue presresti u komunikacijskom kanalu, proitati je, izmijeniti i proslijediti primatelju. ak
i ako je poruka ifrirana tako da ju je nemogue proitati, napada moe poruku presresti, izmijeniti je i
poslati primatelju.

Recimo da dvije osobe (A i B) ele ostvariti "sigurnu komunikaciju". To znai da osoba A - poiljatelj eli
postii da osoba B primatelj primi i uspjeno proita neizmijenjenu poruku. A eli biti siguran da doista
komunicira s B. Naravno, vrijedi i obratno. Ovisno o vrsti poruke, A i/ili B mogu zahtijevati da nitko drugi
ne moe proitati sadraj poruke dok je u komunikacijskom kanalu.

2.1 Uvod o kriptografskim tehnikama

ifriranje podataka (kriptografija) je skup postupaka kojima se mijenja nain predstavljanja informacija s
ciljem njihove zatite. Pretvaranje izvornog skupa podataka (plaintext, clear text) u ifrirani (ciphertext) se
naziva ifriranje (enkripcija, kriptiranje), a vraanje ifriranog skupa podataka u izvorni deifriranje
(dekripcija, dekriptiranje). ifriranje i deifriranje se provodi prema nekom algoritmu i uz upotrebu jednog
ili vie kljueva. Kae se da je tehnika ifriranja pouzdana, ako pouzdanost ovisi samo o kljuu, a ne o
algoritmu. Takvi algoritmi mogu biti i javni.

Postupci ifriranja mogu osigurati sigurnu komunikaciju, ak i kada je medij za prijenos (npr. Internet)
nedovoljno siguran, tj. otvoren je za napade. Takoer, ifriranje moe posluiti za kodiranje osjetljivih
datoteka, kako napada ne bi mogao doi do njihovog stvarnog sadraja.

Kriptografija je skup procedura i tehnika za ifriranje koje omoguavaju sigurnu pohranu i prijenos
ifriranih podataka.
Kriptografija je disciplina koja se bavi ifriranjem i deifriranjem podataka, i to tako da se ifrirani podaci
mogu deifrirati samo od strane odreenih pojedinaca. Sustav za ifriranje i deifriranje podataka se zove
kriptosustav. Kriptosustav obuhvaa algoritam za ifriranje i deifriranje pomou jednog ili vie kljueva.
Klju je niz znakova poznat samo poiljatelju i/ili primatelju. Kriptografija obuhvaa etiri osnovne
operacije:
1. ifriranje (enkripcija)
2. deifriranje (obratno od 1.)
3. digitalno potpisivanje
4. provjera digitalnog potpisa (obratno od 3.)

Postupak ifriranja se moe pojednostavljeno izjednaiti sa spremanjem podataka u kuvertu. Po istoj
analogiji, deifriranje je slino otvaranju kuverte. Digitalno potpisivanje je slino runom potpisivanju
dokumenta i zatim parafiranju svakog dijela kako bi se osiguralo da se niti jedan dio dokumenta ne moe
promijeniti. Provjera digitalnog potpisa je ekvivalentna usporedbi potpisa sa potpisom u "mapi potpisa" i
provjeri da li se ijedan dio dokumenta promijenio.

ifriranje se moe koristiti za osiguranje:
1. tajnosti i privatnosti poruke: mogue je postii sigurnu komunikaciju i kada
komunikacijski kanal sam po sebi nije siguran (Internet)
2. autentikacije: digitalni potpis dokazuje da je potpisnik, a ne netko drugi, potpisao
dokument. Primatelj i poiljatelj moraju biti sigurni u identitet druge strane.
3. integriteta podataka tj. poruke: ako je dokument izmijenjen nakon operacije digitalnog
potpisivanja, operacija provjere digitalnog potpisa nee biti uspjena. ak i ako su
poiljatelj i primatelj uspjeno autenticirani, takoer ele osigurati da poruka tijekom
prijenosa nije izmijenjena, bilo sluajno ili namjerno
4. bezuvjetnog priznavanja (non-repudiation): potpisnik ne moe naknadno tvrditi da nije
digitalno potpisao dokument

Postoje dva tipa kriptografskih algoritama:

242
1. simetrini
2. asimetrini

2.2 Simetrini algoritmi

Simetrini algoritmi koriste identian klju za ifriranje i deifriranje. Osnovni nedostatak simetrinih
algoritama je upravljanje kljuevima. Jedinstveni klju se mora dijeliti izmeu obje strane koje sudjeluju u
komunikaciji. To uzrokuje dodatni problem distribucije kljueva: kako da se poiljatelj i primatelj
dogovore oko tajnog kljua, a da nitko ne otkrije njegov sadraj? Trebalo bi koristiti pristupe kojima dvije
strane komuniciraju bez bojazni od prislukivanja i otkrivanja stvarnog sadraja preneenih podataka. To je
posebno problematino u otvorenim, globalnim mreama kao to je Internet. ak i ako se kljuevi sigurnim
putem razmijene izmeu obje strane, mora postojati povjerenje u drugu stranu da e paljivo uvati
zajedniki klju i da ga nee odati treoj strani. Odreena osoba, mora imati razliit tajni klju za svaku
osobu s kojom razmjenjuje poruke. Dakle, u ovakvom sustavu je neophodan vrlo visok stupanj povjerenja
izmeu svih strana koje komuniciraju. Praktino, to znai da je sigurna komunikacija mogua samo ako su
strane prethodno imale odreene kontakte.

2.2.1 Premjetanje

Premjetanjem se mijenja meusobni poloaj znakova kojima se predstavlja informacija. Slijedi primjer u
kojem se kao algoritam koristi vertikalni pomak znakova i dubina pomaka 3:

izvorni tekst: DANAS JE LIJEP DAN
vertikalni pomak: 3

D S _ E A
A A _ E L J P D N
N J I _

ifrirani tekst: DS_EAAA_ELJPDNNJI_

2.2.2 Supstitucija (zamjena)

Tehnikom supstitucije se znakovi mijenjaju nekim drugim znakom ili grupom znakova. Da bi se zamjena
mogla provesti, potrebno je poznavati ciljnu abecedu, tj. skup znakova u koje se znakovi izvornog teksta
preslikavaju. Tri su tipa supstitucije:
- Cezarovo ifriranje za ifriranje se koristi jedna ciljna abeceda iji se znakovi
izraunavaju pomakom tj. odreeni znak izvornog teksta se uvijek supstituira s istim
znakom ciljne abecede. Vjeruje se da je jo Julije Cezar koristio ovaj algoritam. Svaki znak
izvorne poruke se mijenja sa znakom koji se nalazi k mjesta (pomak) nakon odreenog
znaka izvorne poruke. Na primjer, ako je pomak k=4, onda e slovo 'e' izvorne poruke biti
zamijenjeno s 'i' u ifriranoj poruci.
- polialfabetska za ifriranje se koristi vie ciljnih abeceda tj. zamjena odreenog znaka
ovisi i o njegovoj poziciji u tekstu

Slijedi primjer monoalfabetske supstitucije u kojoj je pomak 4, a algoritam je horizontalni pomak za broj
znakova kljua:

izvorni tekst: DOBAR DAN
horizontalni pomak: 4
izvorna abeceda: A B C D D E F G H I J K L M N O P R S T U V Z _
ciljna abeceda: D D E F G H I J K L M NO P R S T U V Z _ A B C
ifrirani tekst: FDUFS

243
Na UNIX platformama i na Internetu je vrlo poznat jednostavni algoritam monoalfabetske supstitucije
ROT13 (ROTate 13) kojim se ciljna abeceda pomie za 13 mjesta udesno. ROT13 je jednostavan algoritam
za ifriranje teksta, ali nije namijenjen za osiguranje privatnosti i tajnosti nego prvenstveno za skrivanje
teksta od jednostavnog itanja. Najee se koristi za skrivanje sadraja poruka na Usenetu.
Najjednostavniji nain za koritenje ROT13 algoritma u npr. UNIX operativnom sustavu je upotreba
naredbe tr (TRanslate):

# /bin/sh tr 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
'nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM'

Naredba e prihvatiti tekst sa standardnog ulaza (tipkovnica) i zatim prikazati ifrirani tekst na
standardnom izlazu (ekran).

Slijedi primjer polialfabetske supstitucije sa dvije ciljne abecede, od kojih jedna ima pomak 3, a druga 5.
Prvi znak izvorne poruke se supstituira s odgovarajuim znakom prve ciljne abecede, drugi znak s
odgovarajuim znakom druge ciljne abecede, trei znak s odgovarajuim znakom prve ciljne abecede itd.

izvorni tekst: KAKO STE DANAS
izvorna abeceda: A B C DD E F G H I J K L M N O P R S T U V Z _
1. abeceda (+3): DD E F G H I J K L MN O P R S TU V Z _ A B C
2. abeceda (+5): DD E F G H I J K L MN O P R S T U VZ _ A B C
ifrirani tekst: NDNTCZZJCGZ

Nakon to se poruka ifrira dogovorenim kljuem, poiljatelj je alje primatelju (slika 3).



Slika 3: Simetrina enkripcija i slanje poruka

2.3 Jednostavni XOR simetrini algoritam

Logika operacija XOR (ekskluzivno ILI) je jedna od standardnih binarnih logikih operacija:

0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0

Mnogi algoritmi se zasnivaju na XOR operaciji. Jednostavni XOR algoritam, koji e biti prikazan u
nastavku, je simetrini algoritam. Izvorni tekst se pretvara u niz odgovarajuih binarnih brojeva, te se zatim
provodi operacija XOR sa kljuem.

Primjer:

244
Izvorni tekst: Dobar dan.
Izvorna abeceda:
_.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
klju: 2Mza

Poto izvorna abeceda ima 64 znaka, svaki znak se moe predoiti sa 6 binarnih znamenki.

Postupak ifriranja:

1. izvorni tekst i klju pretvoriti u niz binarnih brojeva:
Izvorni tekst: D se nalazi na 15. poziciji izvorne abecede - > 15
(10)
= 001111
(2)

o ... 52. ... - > 52
(10)
=110100
(2)

b ... 39. ... - > 39
(10)
= 100111
(2)

a ... 38. ... - > 38
(10)
= 100110
(2)

r ... 55. ... - > 55
(10)
= 110111
(2)

_ ... 0. ... - > 0
(10)
= 000000
(2)

d ... 41. ... - > 41
(10)
= 101001
(2)

a ... 38. ... - > 38
(10)
= 100110
(2)

n ... 51. ... - > 51
(10)
= 110011
(2)

. ... 1. ... - > 1
(10)
= 000001
(2)


Klju (24 bita): 2 ... 4. ... - > 4
(10)
= 000100
(2)

M ... 24. ... - > 24
(10)
= 011000
(2)

z ... 63. ... - > 63
(10)
= 111111
(2)

a ... 38. ... - > 38
(10)
= 100110
(2)


2. Izvriti XOR operaciju binarnih vrijednosti izvornog teksta i kljua:
D o b a r _ d a n .
XOR 2 M z a 2M z a 2 M

001111 110100 100111 100110 110111 000000 101001 100110 110011 000001
XOR 000100 011000 111111 100110 000100 011000 111111 100110 000100 011000
= 001011 101100 011000 000000 110011 011000 010110 000000 110111 011001

3. Dobiveni niz 6-znamenkastih binarnih brojeva pretvoriti u izvornu abecedu, prema rednom broju.

001011
(2)
= 11
(10)
na 11. poziciji izvorne abecede se nalazi znak 9
101100
(2)
= 44
(10)
na 44. ... g
011000
(2)
= 24
(10)
na 24. ... M
000000
(2)
= 0
(10)
0. ... _
110011
(2)
= 51
(10)
na 51. ... n
011000
(2)
= 24
(10)
na 24. ... M
010110
(2)
= 22
(10)
na 22. ... K
000000
(2)
= 0
(10)
na 0. ... _
110111
(2)
= 55
(10)
na 55. ... r
011001
(2)
= 25
(10)
na 25. ... N

ifrirani tekst je: 9gM_nMK_rN

Za operaciju ekskluzivno ILI vrijedi:
x XOR y = z i z XOR y = x

pa je deifriranje obrnut proces:
1. svaki ifrirani znak se pretvara u niz binarnih vrijednosti, u ovisnosti o poziciji u izvornoj abecedi
2. Izvriti XOR operaciju binarnih vrijednosti izvornog teksta i kljua
245
3. Dobiveni niz binarnih brojeva pretvoriti u niz znakova, u ovisnosti o poziciji u izvornoj abecedi.

2.4 Zakljuak o simetrinim algoritmima

Problemi koje simetrini algoritmi ne rjeavaju su autentikacija, bezuvjetno prihvaanje i sigurna
distribucija kljueva. Poto dvije strane koriste odreeni tajni klju, mogue je da jedna strana kreira
odreenu poruku u ime druge strane. Takoer, ako je mrea preko koje se podaci prenose otvorena (npr.
Internet), sigurna razmjena kljueva moe biti vrlo problematina. Nedostaci su rijeeni asimetrinim
algoritmima.

Osnovna prednost simetrinih algoritama je njihova brzina.

2.5 Asimetrini algoritmi

Problemi iskazani u toki 5.3 su teorijski obradili Whitfield Diffie i Martin Hellman koji su 1976. godine
objavili koncept metode za razmjenu tajnih poruka bez razmjene tajnih kljueva. Ideja je praktino
implementirana s izumom RSA algoritma. Umjesto koritenja istog (tajnog) kljua za ifriranje i
deifriranje, RSA koristi dva kljua: svaki klju je inverzna funkcija drugoga. Javni klju (public key) je
dostupan svim zainteresiranim stranama, dok je privatni klju (private key) tajan, tj. poznat je samo
vlasniku. Javni klju se koristi za ifriranje i provjeru potpisa, a privatni klju za deifriranje i kreiranje
potpisa

Poto je javni klju svima dostupan, a privatni klju je tajan, svatko moe koristiti javni klju za ifriranje
poruke koja se alje primatelju s odgovarajuim privatnim kljuem, a samo osoba koja doista posjeduje
privatni klju moe provesti operaciju deifriranja (slika 4). Takoer, samo osoba koja posjeduje
odgovarajui privatni klju moe digitalno potpisati poruku, dok svatko tko posjeduje javni klju moe
provjeriti valjanost digitalnog potpisa.



Slika 4: Slanje poruka asimetrinom enkripcijom

Osnovni problem je uvanje tajnog kljua, jer osoba koja ga posjeduje moe deifrirati sve poruke ifrirane
s korespondirajuim javnim kljuem, te potpisivati poruke u ime vlasnika.

2.5.1 Digitalno potpisivanje i provjera

Digitalni potpis se koristi kada se eli osigurati integritet poruke i autentikacija poiljatelja. Digitalno
potpisivanje ne mijenja poruku, nego se kreira dodatni niz podataka koji se prenosi zajedno s porukom.

246
Privatni klju se koristi za generiranje potpisa, a odgovarajuim javnim kljuem se provjerava potpis (slika
5).

Koncept digitalnog potpisa omoguava korisnicima da provjere da li je poruka doista izraena od strane
odreene osobe-vlasnika privatnog kljua i da li je izmijenjena u komunikacijskom kanalu. Osim digitalnog
potpisivanja, poruka moe, ali i ne mora, biti ifrirana.

Digitalno potpisivanje se svodi na:

1. izraun saetka poruke (hash) - S i
2. ifriranje saetka poruke (S) pomou privatnog kljua poiljatelja.


Slika 5: Digitalno potpisivanje i provjera digitalnog potpisa

Provjera digitalnog potpisa se svodi na:

1. deifriranje saetka (DS) koritenjem javnog kljua poiljatelja,
2. izraun saetka (S) primljene poruke i
3. usporedbu deifriranog saetka (DS) sa izraunatim (S)

Ako su saeci razliiti, poruka ili saetak su promijenjeni u komunikacijskom kanalu.

Funkcija za kreiranje saetka (hash functions)
11
, bi trebala biti to vie jednosmjerna (one-way) tako da je:
- za poznatu vrijednost saetka i/ili poruke, vrlo teko kreirati drugu poruku s
istom vrijednou saetka
- posebno teko izvesti modifikaciju postojee poruke, a da saetak bude
identian saetku izvorne poruke

Primjer funkcije za kreiranje saetka je npr. izraun kontrolnog broja (checksum). Najee se koristi
funkcija za izraun kontrolnog broja po modulu 11.

Prema prethodno reenome, moe se zakljuiti da vjerodostojnost digitalnog potpisa (strength of a
signature) ovisi o kvaliteti jednosmjerne funkcije za izradu saetka i o tehnici za ifriranje saetka. Ako
funkcija nije dovoljno jednosmjerna, originalna poruka moe biti izmijenjena. Ako je tehnika za ifriranje
saetka nedovoljno snana tj. postoji mogunost relativno lakog probijanja, poruka je mogla doi od
nekoga drugoga, a ne od stvarnog vlasnika privatnog kljua.


11
Najpoznatije funkcije za kreiranje saetka su SHA-1 i MD5
247
Funkcije ifriranja i deifriranja poruka, potpisivanje i provjera potpisa zahtijevaju distribuciju javnih
kljueva:
- Ako osoba A eli poslati ifriranu poruku osobi B, A mora poznavati javni
klju od B.
- Ako osoba B eli provjeriti digitalni potpis poruke koja dolazi od A, B mora
poznavati javni klju od A.

Tu se postavlja vano pitanje: kako primatelj moe biti siguran kome pripada odreeni javni klju? Ako
primatelj primi javni klju, za koji se tvrdi da je klju njegove banke, da li bi trebao u to povjerovati?
Prikladan odgovor bi mogao biti: "Ovisi tko je rekao da se radi o javnom kljuu odreene banke". Digitalni
certifikati i infrastruktura javnih kljueva omoguava povezivanje javnih kljueva sa odreenim fizikim i
pravnim osobama. Digitalni certifikat je potpisani digitalni dokument koji povezuje javni klju s dodatnim
informacijama o vlasniku (npr. javni naziv, adresa itd.).

2.6 Usporedba simetrine i asimetrine enkripcije

Osnovna prednost asimetrinog ifriranja je poveana sigurnost i olakana distribucija kljueva. Privatni
kljuevi se nikada ne moraju prenositi komunikacijskim linijama niti ih treba dijeliti s drugim osobama.
Nasuprot, u simetrinim tehnikama tajni klju mora biti poznat i primatelju i poiljatelju, poto se isti klju
koristi za ifriranje i deifriranje. Mogunost da napada otkrije vrijednost tajnog kljua tijekom prijenosa
predstavlja ozbiljnu prijetnju.

Nadalje, asimetrino ifriranje osigurava koncept digitalnih potpisa kojem se vjerodostojnost autentikacije
ne moe naknadno zanijekati. U sustavima koji koriste simetrino ifriranje preduvjet autentikacije je
dijeljenje tajnog kljua i povjerenje tree strane. U takvom sustavu, vrlo je teko osigurati da poiljatelj ne
moe zanijekati slanje ve autenticirane poruke. Poiljatelj moe tvrditi da je dijeljeni klju kompromitiran
od strane osobe (ili osoba) koje ga dijele. Primjer ovakvog sustava je Kerberos koji sadri centralnu bazu
podataka tajnih kljueva svih korisnika sustava. Uspjean napad na bazu podataka bi omoguio napadau
lanu autentikaciju i prijevare. Autentikacija pomou javnih kljueva spreava ovakav scenario, poto je
svaki korisnik odgovoran za zatitu vlastitog tajnog (privatnog) kljua.

Osnovna prednost simetrine kriptografije je brzina: simetrini algoritmi su u pravilu znaajno bri od
trenutno dostupnih asimetrinih algoritama.

U nekim situacijama, asimetrina kriptografija nije potrebna - simetrini sustavi mogu zadovoljiti potrebe
za sigurnom komunikacijom. Takav sluaj je u zatvorenim sustavima, u kojima su sve strane koje
komuniciraju meusobno poznate i jedna nadlena (centralna, ovlatena) ustanova poznaje i upravlja svim
kljuevima. Poto nadlena ustanova zna sve kljueve, koristi se zatvorena raunalna mrea (a ne Internet),
nema mnogo prednosti u implementaciji privatnih i javnih kljueva. Takoer, simetrina enkripcija je
jedino logino rjeenje u jednokorisnikim sustavima. Npr. ako postoji potreba za ifriranjem korisnikih
datoteka, to se moe uiniti sa simetrinim algoritmom koritenjem osobne lozinke kao tajnog kljua.
Mnogi suvremeni kriptografski algoritmi koriste kombinaciju asimetrine i simetrine enkripcije s ciljem
iskoritenja prednosti oba pristupa. Asimetrina enkripcija se moe upotrijebiti za razmjenu tajnog kljua
izmeu primatelja i poiljatelja. Poto je ifriranje podataka najee vremenski najzahtjevniji dio sigurnog
komuniciranja, koritenje asimetrine enkripcije za razmjenu kljua predstavlja zanemarivi dio cijelog
postupka ifriranja. Moe se zakljuiti da:

1. asimetrina kriptografija osigurava efikasno koritenje digitalnih potpisa i upravljanje
distribucijom kljueva
2. simetrina kriptografija je efikasna u ifriranju poruka

Privatni kljuevi u asimetrinim sustavima moraju biti znatno dulji nego tajni kljuevi u simetrinim
sustavima. Pretraivanje svih moguih kljueva ("sirovi napad" - brute force attack, exhaustive key search)
je najefikasniji nain napada na poruke ifrirane simetrinim algoritmima. Svi poznati asimetrini algoritmi
su podloni efikasnijim metodama, tj. nije potrebno pretraiti cijelu domenu kljueva. Posljedica je da bi,
248
za jednaki stupanj sigurnosti, kljuevi u asimetrinom sustavu trebali biti 10 puta vei od tajnih kljueva u
simetrinim sustavima.
2.7 RSA algoritam za asimetrinu enkripciju

RSA je algoritam asimetrine enkripcije koji omoguava ifriranje i digitalno potpisivanje tj. autentikaciju.
Najkoriteniji je asimetrini sustav ifriranja dananjice i esto se naziva de facto standardom. Poto se
nalazi u irokoj upotrebi, ifrirani i potpisani dokumenti se mogu razmjenjivati izmeu velikog broja
korisnika neovisno o softveru i platformama na kojima se koristi.

Preduvjet primjene RSA algoritma je generiranje (izrada) javnog i tajnog kljua.

Trenutno je vrlo teko doi do privatnog kljua na osnovi poznatog javnog kljua. Ako bi netko pronaao
jednostavnu metodu za pronalaenje privatnog kljua na osnovi javnog kljua, RSA algoritam bi bio
probijen (cracked).

U praksi, RSA se u pravilu koristi u kombinaciji sa nekim simetrinim algoritmom. Takvo koritenje se
naziva RSA digitalna omotnica (RSA digital envelope):

1. poiljatelj izabire sluajni tajni klju S
2. poiljatelj ifrira poruku koritenjem simetrinog algoritma (npr. DES) i tajnim kljuem (S)
3. poiljatelj koristi primateljev javni klju i RSA algoritmom ifrira klju S
4. ifrirana poruka i tajni klju ine RSA digitalnu omotnicu koja se alje primatelju



Slika 6: Digitalna omotnica - aktivnosti poiljatelja

1. primatelj deifrira tajni klju S sa svojim privatnim kljuem i RSA algoritmom
2. primatelj koristi tajni klju S i simetrini algoritam za deifriranje poruke.

249


Slika 7: Digitalna omotnica - aktivnosti primatelja

Ovaj pristup kombinira brzinu simetrinih algoritama sa prednostima distribucije kljueva algoritma RSA.
2.8 Infrastruktura javnog kljua (Public Key Infrastructure - PKI)

Zatita informacija koje se prenose globalnom i otvorenom svjetskom mreom kao to je Internet je
usporedivo sa procedurom potpisivanja obinog pisma, stavljanjem u omotnicu i peatiranja. Potpis
osigurava autentinost, a peatirana omotnica garantira privatnost sadraja poruke.

Simetrini algoritmi osiguravaju privatnost ifriranjem poruke upotrebom tajnog kljua. Primatelj deifrira
poruku koritenjem istog kljua. Osnovni problem ovakvog pristupa lei u upravljanju i distribuciji
kljueva. Kriptografija javnog kljua rjeava ove probleme, ali sama po sebi nije dovoljna ako je potrebno
ostvariti uvjete za tradicionalno poslovanje, ali koritenjem Interneta i raunalne tehnologije. Osnovni je
problem kako garantirati da odreeni javni klju pripada odreenom poslovnom subjektu ili osobi. Ovaj
problem se rjeava digitalnim potvrdama (digital certificates). Digitalne potvrde povezuju identitet osobe s
javnim kljuem, a u biti su javni kljuevi potpisani od strane ovlatenog izdavatelja potvrda (certificate
authority). Ovlateni izdavatelj potvrda je trea strana u koju oba sudionika u komunikaciji imaju potpuno
povjerenje.

Infrastruktura javnih kljueva (Public Key Infrastructure) je skup mjera, postupaka i aktivnosti za izradu i
dodjelu digitalnih potvrda. Infrastruktura mora definirati:

- sigurnosnu politiku
- proizvode koji generiraju, pohranjuju ili upravljaju kljuevima
- procedure koje objanjavaju kako se digitalne potvrde generiraju, distribuiraju i koriste

Infrastruktura javnih kljueva je kombinacija strojne podrke i programskih proizvoda, politika i procedura.
Osigurava osnovni okvir neophodan za sigurno komuniciranje i poslovanje zainteresiranih strana koje
prethodno jesu ili nisu imale kontakte. Tako se postie ostvarenje etiri osnovna sigurnosna obiljeja
transakcija elektronikog poslovanja (E-business):

1. Privatnost - tajnost informacija
2. Integritet - osiguravanje da se informacija nije promijenila tijekom prijenosa
komunikacijskim kanalom
3. Autentikacija - dokazivanje identiteta osoba poiljatelja i primatelja
12

4. Bezuvjetno prihvaanje - osiguravanje da poiljatelj ne moe naknadno zanijekati da je
poslao odreenu poruku

12
Takoer postoji potreba za identificiranjem/autentikacijom aplikacija koje automatski provode odreene aktivnosti
na osnovi naloga osoba (npr. agenti). Naime, nakon definicije odreenih pravila i ponaanja, agenti su ovlateni
izvravati odreene zadatke.

250

Kao to je ve naglaeno, PKI se zasniva na digitalnim potvrdama koji funkcioniraju kao "osobne karte". U
praksi, ako posluitelj ima digitalnu potvrdu koju prezentira klijentima koji mu pristupaju, onda klijenti
mogu biti sigurni u identitet posluitelja. Korisnik koji kontaktira Web stranicu koja ima digitalnu potvrdu
potpisanu od strane povjerljivog ovlatenog izdavatelja potvrda, moe biti siguran da posluitelj doista
pripada organizaciji navedenoj u potvrdi. Vrijedi i obrnuto: digitalne potvrde osiguravaju pouzdanost u
identitet klijenta. Kada korisnik doe na odreenu Web stranicu, server moe biti siguran u identitet
klijenta ako primi njegovu digitalnu potvrdu.

Digitalne potvrde su osnova sigurne komunikacije i kontrole pristupa na Internetu i intranetu. Osiguravaju
slijedee:

- visok nivo sigurnosti - autentikacija pomou digitalnih potvrda smanjuje sigurnosni rizik jer korisnik
ne mora slati korisniko ime i lozinku kroz nesigurnu mreu; potvrde se mogu slati preko nesigurnih
telekomunikacijskih linija - ako napada izmijeni podatke iz potvrde, na strani primatelja e to biti
primijeeno

- jednokratnu prijavu (single log on) - potvrde omoguavaju jednokratnu prijavu veem broju
posluitelja i usluga. Korisnici ne moraju pamtiti razliita korisnika imena i lozinke za razliite usluge i
aplikacije. Korisnici se prijavljuju jednom, a njihov Web pretraiva (Web browser) automatski serverima
dostavlja digitalnu potvrdu kada je to potrebno. Ovakvo rjeenje pojednostavljuje administriranje, poto
nije potrebno odravati bazu podataka korisnika na svakom serveru.

Komponente PKI-a su:

1. Sigurnosna politika (Security Policy)
Sigurnosna politika definira sigurnosne smjernice organizacije, kao i opis principa koritenja kriptografskih
tehnika. Sadri opis manipulacije kljuevima i vrijednim informacijama, te postavlja kontrolne mehanizme
za upravljanje rizicima.

2. Ovlateni izdavatelj potvrda (Certificate Authority - CA)
Ovlateni izdavatelj potvrda je osnovica PKI-a. Upravlja digitalnim potvrdama javnih kljueva. Zadaci CA
su:

- izdavanje potvrda kojima se garantira veza izmeu identiteta korisnika i javnog kljua - potvrda
se potpisuje privatnim kljuem CA
- povlaenje potvrda kada je potrebno - to se osigurava objavom liste uskraenih potvrda
(Certificate Revocation List - CRL)
- efikasno distribuiranje potvrda - to se postie posluiteljem direktorija certifikata (Certificate
Directory Server)

3. Ovlateni registracijski ured (Registration Authority - RA)
Ovlateni registracijski ured je veza izmeu osoba koje zahtijevaju potvrdu i CA. RA provjerava identitet
osoba i ovlatenom izdavatelju potvrda dostavlja zahtjev za potvrdom. Kvaliteta ovog postupka je kljuna
za stupanj povjerenja koji se moe imati u potvrde.

4. PKI aplikacije
To su aplikacije koje koriste tehnologiju javnog kljua. Podravaju generiranje javnih i privatnih kljueva,
digitalne potpise, ifriranje i upravljanje digitalnim potvrdama. Primjeri ovakvih aplikacija su usluge
WWW-a, e-mail, podrka za transakcije inicirane kreditnim karticama itd.

251
2.8.1 Sigurnost CA i RA

CA i RA su centralne komponente svakog PKI-a. Sigurnost ovih sustav je od primarne vanosti, jer ako je
naruena, ugroen je i cijeli PKI sustav. Posebno je osjetljivo pitanje sigurnosti privatnog kljua CA kojim
se potpisuju javni kljuevi klijenata tj. kojim se kreiraju sve izdane potvrde. Raunala s kojih se provodi
potpisivanje javnih kljueva, tj. koja imaju pristup do privatnog kljua, ne bi trebala biti povezana s
mreama izvan sigurnog CA okruenja (npr. Internet). Takoer, neophodno je na sigurnim mjestima uvati
rezervne kopije privatnih kljueva, koje se koriste za potrebe oporavka od nezgode (disaster recovery).

Fiziki pristup u prostorije CA i RA mora biti rigorozno kontroliran npr. koritenjem pametnih kartica za
autentikaciju i autorizaciju osoba. Poeljno je da su za proces odobravanja potvrda potrebna barem dva
operatera. Sve potvrde moraju biti potpisane pouzdanim algoritmom za ifriranje. Preporua se da duljina
privatnog kljua CA kojim se potpisuje javni klju korisnika nije manja od 1024 bita.

U osnovi, digitalna potvrda se izdaje u pet koraka:

1. Popunjavanje korisnikog zahtjeva obrazac za registraciju je objavljen na CA i RA web stranicama.
Moe biti interaktivno (on-line) popunjen ili se moe zatraiti otisnuti obrazac.
2. Registracija registracija se obavlja osobno u prostoru RA; identifikacijski dokumenti (osobna karta,
putovnica) se koriste za autentikaciju fizikih osoba, a dokumenti o registraciji za pravne osobe.
3. Izdavanje potvrde nakon primanja i ponovne provjere registracijskog obrasca, CA izdaje potvrdu;
potvrda se u pravilu dostavlja e-mailom.
4. Instalacija korisnik instalira potvrdu na svoj sistem i podeava koritenje u svojim aplikacijama
5. Objava potvrde CA dodaje izdanu potvrdu u javnu listu potvrda (public certificate directory). Ova
lista se zasniva na Web tehnologiji i omoguava pretraivanje podataka o potvrdama i njihovim
vlasnicima.

2.9 Tehnologija vatrozida (Firewall technology)

Tehnologija vatrozida obuhvaa skup mehanizama koji proputaju ili blokiraju promet podataka izmeu
unutranje (LAN) i vanjske mree (Internet). Vana pretpostavka implementacije vatrozida je sigurnosna
politika koja bi se trebala sastojati od pravila koja eksplicitno odreuju koji dio prometa izmeu vanjske i
unutranje mree treba proputati, a koji dio blokirati. Stupanj restriktivnosti ili slobode pristupa do
odreenih podataka bi trebao biti usklaen s vrijednosti i tajnovitosti podataka unutranje mree, tj. sa
potencijalnim gubicima u sluaju gubitka ili krae podataka, te prekida rada raunalne mree i opreme.

U organizaciji koja ih koristi, vatrozidi mogu ograniiti koliinu tete koju napada moe poiniti: napada
se, eventualno, moe probiti do odreenog skupa raunala, ali vatrozid nee dopustiti prolaz do ostalih,
vanijih raunala koji se nalaze iza vatrozida.

3.9.1 Predefinirano doputanje i zabrana (default permit vs. deny)

Osnovna funkcija vatrozida je ograniavanje tijeka informacija izmeu dvije mree. Da bi vatrozid bio
odgovarajue implementiran, potrebno je definirati koji tipovi podataka mogu proi iz jedne mree u drugu
i obratno, te koji podaci se ne smiju prenijeti. Ova pravila se definiraju vatrozidnom politikom (firewall
policy).

Osnovni pristupi definiranju politike su:

- predefinirano doputanje
Postavljaju se pravila koja rezultiraju ne doputanjem prolaska podataka. Svako raunalo i protokol koji
nije obuhvaen pravilom e biti proputen kroz vatrozid.

- predefinirana zabrana
252
Postavljaju se specifina pravila koja doputaju prolazak podataka pod tono odreenim uvjetima.
Nenavedena raunala i protokoli koja nisu navedena u pravilima nee biti proputena kroz vatrozid.

Oba pristupa imaju odreene nedostatke i prednosti. Osnovna prednost predefiniranog doputanja je
jednostavno konfiguriranje: administrator blokira prolaz protokolima i raunalima koji su nepoeljni. U
sluaju predefinirane zabrane, potrebno je navesti sve protokole i raunala kojima je doputen prolaz. S oba
pristupa je mogue kreirati vatrozid koji je siguran ili nesiguran, ako se doputa ili se propusti zabraniti
odreeni tip komunikacije.

3.9.2 Ukratko o upotrebi vatrozida

Vatrozid je smjeten na presjeku dvije mree i stoga se moe koristiti za neke druge svrhe osim kontrole
pristupa:

1. Zabrana pristupa odreenim Web stranicama za sve korisnike ili zabrana odreenim korisnicima i/ili
raunalima da pristupaju odreenim uslugama i/ili posluiteljima.

2. Nadgledanje prometa izmeu bilo kojeg raunala u LAN-u (prema IP adresi) i vanjske mree (Internet).
Na primjer, 56 KB iznajmljena veza s Internetom omoguava prijenos 605 MB podataka dnevno, tj. 4,03
GB tjedno to se moe pohraniti na jednu 8mm digitalnu traku. Ovi podaci mogu biti vrlo bitni za praenje
pokuaja napada ili otkrivanje internih subverzivnih radnji.

3. Ako organizacija ima vie fizikih lokacija i postoji vatrozid na svakoj lokaciji, mogue je programirati
vatrozide tako da automatski ifriraju podatkovne pakete koji se prenose od jednog do drugog vora. Tako
se javna, globalna Internet mrea moe koristiti kao privatna mrea bez kompromitiranja podataka. esto
se ovakav koncept naziva virtualnom privatnom mreom (Virtual Private Network - VPN).
Literatura:

1. Baker, R. : Computer Security Handbook, TAB Books, Blue Ridge Summit, 1991.
2. Date, C. J.: An Introduction to Database Systems, Addison-wesley, Reading, 1995.
3. Garfinkel, S; Spafford, G.: Practical UNIX & Internet Security, O'Reilly, 1996.
4. Koch, G.; Loney, K.: Oracle - The Complete Reference, McGraw-Hill, Berkeley, 1997.
5. Martin J.; Odell, J.: Object-Oriented Methods - A Foundation, Prentice Hall, Englewood Cliffs, 1995.
6. Orfali, R., et al.: The Essential Client/Server Survival Guide, John Wiley&Sons, New York, 1996.
7. Scherer, S., et al.: Oracle 8i - Tips & Techniques, Oracle Press, Redwood Shores, 2000.
8. Schneier, B.: Applied Cryptography, John Wiley & Sons, New York, 1996.
9. Skoblar, M.; gela, M.: Napredna svojstva Oracle8 baze podataka, CASE savjetovanje, Opatija, 1999.
10. Vujnovi, R.: SQL Relacijski model podataka, Znak, Zagreb, 1995.
11. gela, M.: Bankovni informacijski sustavi, Hrvatski institut za bankarstvo i osiguranje - skripte za
predavanje, Zagreb, 2000.
12. gela, M.: Some Public Key Cryptography Issues in E-business, Meunarodni simpozij IIS, Varadin,
2000.

DISTRIBUIRANI OPERATIVNI SISTEMI

I pored velikih istraivanja u ovoj oblasti, narocito u poslednjoj dekadi, distribuirani
operativni sistemi koji su danas prisutni ne predstavljaju sistem opte namene koji uspeva
da ispotuje sve principe distribuiranih sistema


1. Definicija distribuiranog operativnog sistema
Krajem prole dekade doivljavamo veliku ekspanziju u broju i velicini raunarskih mrea kao i
razvoj same kako hardverske arhitekture tako i softverskih modela. Opte prisuran je trend
napredovanja mobilnosti, i portabilnosti u softverskim modelima kao i elja za povezivanjem
uredaja i resursa na globalne raunarske mree.

Pretee distribuiranih operativnih sistema
su bili sistemi sa podrkom za vie
procesora sa zajednikom memorijom
nakon cega su doli mreni operativni
sistemi na kojima se izvravaju sloeni
distribuirani sistemi uz pomi middleware
sloja jer sam OS nema podrku za
transaprenciju distribucije. Ukljuivanjem
middleware sloja u sam OS dolazimo do
distribuiranog operativnog sistema koji
implementira transparentnost distribucije i
manje ili vie omoguava izvravanje
procesa kao na jednoprocesorskom
sistemu sa zajednikom memorijom i
resursima.

Distribuirani operativni sistem je sistem
koji upravlja kolekcijom nezavisnih
raunara i njihovim resursima ineci da
se oni korisniku prikazju kao jedan
raunarski sistem.

Iako istraivanja u ovoj oblasti do sada
imaju velikog uspeha, distribuirani operativni sistemi koji danas postoje ne ispunjavaju sve
zadatke distribuiranih sistema. Proirivost i transparentnost konkurencije su veliki problemi
upravo zbog nepostojanja centralizovanog upravljanja resursima kao u klasicnim operativnim
sistemima.

Svaki vor distribuiranog sistema mora imati implementaciju kernela koji e upravljati lokalnim
resursima obezbedujuci njihovu distribuciju na nivou celokupnog sistema svih vorova najcee
obeleenog kao klaster. vorovi mogu biti isti, kada se govori o homogenom, ali i razliciti kada
je rije o heterogenom klasteru.

Za potrebe distribuiranog operativnog sistema koriste se mikrokerneli koji sadre minimum
koda koje je potrebno izvriti u kernel modu (postavljanja podeavanja nad hardverom,
1
prebacivanje procesora sa procesa na proces, upravljanje MMU procesora, prihvatanje
hardverskih prekida itd.) dok se sve ostale celine (upravljanje procesima, memorijom, resursima,
komunikacija itd) obavljaju iz procesa pokrenutih u korisnikom modu iz procesa kernela.
Prednost mikrokernela je u fleksibilnosti, sami djelovi sistema iz korisnikog prostora mogu imati
potpuno drugaiju realizaciju na razlicitim vorovima, uz zadravanje istog interfejsa
komunikacije sa kernelom. Mana mikrokernela je pojava usporavanja usled povecanja
komunikacije izmedu delova sistema, to za distribuirane operativne sisteme ne predstavlja veliki
gubitak poto se odvijaju u mrenom okruenju gde nesumnjivo postoje mnogo ua uska grla.
Druga mana je razbijanje tradicije razvoja sistemskog softvera koji nije u skaldu sa monolitickim
kernelima koji se koriste u dananjim Unix sistemima. Distribuirani operativni sistemi pak inae
razbijaju stege konzervatizma razvoja te mikrokerneli definitivno predstavljaju najbolje reenje za
korienje.

Distribuirani operativni sistem treba da obavlja sve poslove klasicnog operativnog sistema
(upravljanje memorijom, procesima i resursima) samo u drugaijem okruenju. Osnova svakog
distribuiranog sistema je komunikacija sa ostalim vorovima koja se odvija po odredenom
aplikativnom protokolu. Uvek treba znati da se distribuirani operativni sistemi izvravaju u
mrenom okruenju te je komunikacija esto nepouzdana i prespora. Postoje brojna reenja kako
se sigurnost i brzina komunikacije mogu povecati korienjem kvalitetnih aplikativnih protokola
koji imaju brzo vreme odziva i dobru kontrolu greaka, koji dobro povezuju i dobro prosleduju
poruke vorovima klastera,
Krajnja reprezentacija distribuiranog operativnog sistema je virtualni sistem (VM computer) koji
na raspolaganju ima sve resurse klastera i u svakom trenutku moe obezbediti korisniku njihovo
korienje

2. Komponente DOS-a

Pod komponentama distribuiranog operativnog sistema se pored komponenata klasicnog
operativnog sistema (upravljanje memorijom, resursima i procesima) ubrajaju i komponenete
koje se nalaze u slojevima iznad ili ispod nabrojanih. U ove dodatne, za DOS specificne
komponente se ubrajaju model deljenja memorije, model deljenja resursa i procesorskog
vremena, kao i komunikacija i sinhronizacija.

Distribuirani operativni sistem takode mora implementirati kontrolu greaka u sistemu,
sigurnosnu zatitu pri pristupu resursima kako na korisnikom tako i na sistemskom nivou,
distribuirani sistem datoteka,...

Da bismo dobili distribuirani operativni sistem opte namene, mora postojati, pored vec u sistemu
obezbedene transparencije, i dodatni nivo emulacije sistema koji uskladuje API sistema (interfejs
koji procesi koriste za komunikaciju sa sistemom, potraivanje i oslobadanje memorije i resursa
itd) sa POSIX i SysV specifikacijama bilo da se to radi na binarnom nivou (podrka za pokretanje
programa kompajliranih za druge sisteme) ili putem specijalnih biblioteka koje ostvaruju
kompatibilnost i sa programom se vezuju za vreme prevodenja stvarajuci verziju programa za
konkretni distribuirani operativni sistem.
Model deljenja memorije

Jedan od razloga zato je mnogo tee napraviti distribuirani operativni sistem jeste iz razloga to
nije mogue kao kod klasicnih operativnih sistema vrlo jednostavno napraviti deljenje memorije
gde e biti smeteni podaci o stanju sistema kako softvera tako i hardvera i njegovih kompozitnih
2
delova, potrebni za rad operativnog sistema. Za razliku od toga posedujemo samo razmenu
poruka kroz komunikacione mehanizme. Kanjenje takvih poruka u komunikaciji usled zaguenja
mree, a pak neophodna komunikacija u realnom vremenu za, na primer blokiranje pojedinih
resursa, samo oteava stvar.

Upravo zbog navedenog problema, pojavili su se razliciti modeli koji pruaju emuliranje deljene
memorije unutar klastera. Uz pomi ovakvog dizajna prua se podrka za rad programima koji su
pisani za klasicne sisteme, a omoguena je i podrka POSIX stadarda.

Jedan od modela deljenja memorije u DOS okruenju jeste DSM (Distribuited shared memory) i
zasniva se na postojecoj implementaciji imaginarnog adresnog prostora u klasicnim operativnim
sistemima po principima stranicenja i segmentacije. DSM prikuplja stvarni fizicki adresni prostor
memorije svakog vora klastera i organizuje virtualni adresni prostor nad kojim postavlja
organizaciju stranicenjem. Kada proces koji se izvrava zahteva adresu koja nije prisutna lokalno,
lokalni kernel distribuiranog operativnog sistema suspenduje proces, prihvata sadraj stranice i
dostavlja je procesu nakon cega ponovo nastavlja sa izvravanjem procesa.

Usko grlo ovakvog sistema jeste brzina mree. Pristojna ubrzavanja je pak vrlo lako postici
prostom replikacijom stranica memorije. Naime, nakon to proces zahteva odredenu adresu
memorije koja se nalazi u udaljenoj stranici u koju je mogue samo vriti upis, kernel moe
izvriti replikaciju te stranice, odnosno lokalno napraviti njenu kopiju. Kako je nad stranicom
memorije omogueno jedino citanje, ne dolazimo do problema konkurencije i sinhronizacije, tj.
ne moramo pratiti promene nad stranicom. Postoje i modeli kod kojih postoji replikacija svih
stranica, kao i heuristicko pronalaenje stranice koja e sledeca trebati kako bi se izvrila i njena
replikacija pre nego to proces uopte i zahteva ucitavanje neke adrese iz te stranice. Kada se radi
replikacija svih stranica, na sistemu mora biti definisan efikasan i vrlo brz nain obavetavanja
svih vorova da je stranica promenjena kako bi se izbeglo postojanje vie razlicitih kopija istog
adresnog prostora. Kako bi informacija sigurno stigla, ovo obavetavanje svih vorova mora biti
izvreno pre samog upisa. Tada ce, u trenutku upisa postojati samo jedna kopija stranice, i to ona
u koju se trenutno upisuje promena.

Odredivanje veliine same stranice, kao i
kod klasicnih operativnih sistema, puno
menja ponaanje sistema, ali se ovde to
deava na drugaiji nain. Stranice su
svakako dovoljno male da su podaci za
uspostavljanje komunikacije (zahtevanje i
prihvatanje stranice) kao i zaglavlje same
poruke veci od stranice. Ukoliko bi stranice
bile vee (8, 16 ili 32Kb), a process
pristupao kontinuiranom bloku adresnog
prostora (nizovi podataka) bilo bi manje
transfera stranica. Medutim, tada postoji
veca verovatnoca da e se u adresnom
prostoru iste stranice nalaziti podaci vie
procesa, pa distribuirani operativni sistem
mora vriti vie replikacija i cee se boriti sa viestrukim upisima i problemima konkurencije.

Iako istraivanja traju due od 15 godina, jo uvek se bije bitka izmedu efikasnosti distribuiranja
memorije, lakoe implementacije takvog modela ali i brzine izvravanja takvog sistema.

3
Model deljenja resursa
Osnovna uloga distribuiranog operativnog sistema jeste da klaster, bilo da je on otvoren ili
zatvoren, predstavi kao koherentni jedinstveni sistem i da procesima kao korisnicima sistema
omogui transparentno korienje resursa bez potrebe da procesi poznaju lokaciju resursa koji
koriste. Djelovi distribuiranog operativnog sistema koji implementiraju pronalaenje resursa se
oznacavaju kao podsistemi za imenovanje i lociranje.
Kako se ne moemo osloniti na fizicku adresu ili na neki fizicki adresni opseg, resursu moramo
dodeliti virtualno ime kroz sistem imenovanja (engl. naming). Samo ime resursa mora biti
jedinstveno unutar distribuiranog operativnog sistema, jer se mora omoguiti jednoznacno
lociranje fizickog resursa na osnovu imena cime se moe korienje fizicke adrese u potpunosti
zameniti imenom i time postici transparenciju lokacije.

Resurs koji se imenuje, unutar distribuiranih operativnih sistema, moe biti vor klastera,
tampac, datoteka u distribuiranom sistemu datoteka, proces, prijavljeni korisnik, dokument,
objekat, graficki prozor na jednom od ekrana prikaza, poruka u mrenoj komunikaciji, mrena
konekcija itd... Imenovanje postoji i u klasicnim operativnim sistemima, kada se imenuje
komunikacioni port, putanja datoteke u sistemu datoteka itd.

Vecini resursa se moe i pristupati, tj.
mogu se koristiti. Za ove potrebe
definiemo adresu tacke pristupa
imenovanog cinioca (engl. Access point
address) ili krae samo adresu
imenovanog cinioca. Na osnovu adrese
imenovanog cinioca, a preko sistema
imenovanja i lociranja procesi i korisnici
distribuiranog operativnog sistema mogu
koristiti interfejs datog distribuiranog
resursa, odnosno pristupati i koristiti sam
resurs. Imenovani resurs, esto za ime
vezuje i vie tacaka pristupa, medusobno
potupno ravnopravnih.

Logicno je sada postaviti pitanje zato
razlikovati ime resursa i adresu tacke p
(kakvog ga mi vidimo fizicki, tampac) sa posebnim jedinstvenim imenom koje obavija
dodeljenu adresu tacke pristupa preko koje se obavija komunikacija sa resursom kroz namenski
interfejs model koji obezbeduje transparentnost lokacije. Resurs e imati stalno ime, uz
promenjljivu adresu tacke pristupa koju je uvek mogue dobiti na osnovu imena resursa i zatim je
koristiti.
ristupa. Odgovor je da se upravo vezivanje resursa

Treba imati u vidu da su svi elementi sistema imenovanja virualne adrese i imena koje se tek na
nivou mikrokernela vora klastera povezuju sa fizickim memorijskim opsegom koji je rezervisan
za komunikaciju sa datim fizickim resursom.

Samo ime resursa moe biti sastavljeno od niza bitova ili karaktera. esto se ime gradi u
citljivom i razumljivom obliku kako bi se olakao pristup resursima. Na primer, ime datoteke u
sistemu datoteka je tipican primer takvog imena.

Radi breg lociranja fizicke adrese imenovanog resursa koriste se razlicite tehnike grupisanja u
logicke celine prostore imena, koji se mogu pretraivati efikasno korienjem povezanih lista.
4
Drugi nain ubrzavanja lociranja se zasniva na pamcenju lokacije pristupne tacke jednom vec
lociranog resursa, kada se naruava transparencija, pa je neophodan mehanizam obavetavanja
kada se dogodi migracija ili relokacija resursa.

Postoje situacije kada nije neophodno uopte poznavati adresu tacke pristupa vec na vie tacaka
pristupa koje odgovaraju razlicitim resursima postoji jedno ime, a sam distribuirani operativni
sistem na osnovu parametara (optereenost resursa, korisnikcka ovlaenja procesa i dr.) odreduje
sa kojom pristupnom tackom e povezati proces koji je zatraio lociranje imenovanog resursa.

Veliki problem u izradi modela deljenja resursa predstavlja i imenovanje i lociranje privremeno
dostupnih resursa kao i mobilnih resursa koji esto menjaju fizicku lokaciju pa su relokacije i
migracije ceste. Opisan koncept modela imenovanja i lociranja moe efikasno da se izbori sa
ovim problemom uz dodatnu proveru da li je resurs i dalje dostupan i uklananja imena resursa u
slucaju nedostupnosti. Medutim, ovaj koncept ne moe da postigne efikasnost modela u kome je
prisutno keiranje lokacija, hijerarhijsko povezivaje, grupisanje resursa u prostore imena itd.

Model deljenja procesorskog vremena

Distribuirani operativni sistem opte namene mora da ima podrku i za deljenje procesorskog
vremena. Za implementaciju ove, najverovatnije najsloenije distribucije, potrebno je izraditi
poseban model distribucije na nivou sistema, ali i na nivou upravljanja procesima lokalnog
kernela svakog vora.

Procese koji se brzo izvravaju najcee je bolje izvriti lokalno na voru, osim ukoliko je
potreban intezivni pristup udaljenom resursu kada je proces bolje migrirati na vor koji poseduje
resurs koji se koristi jer je lokalna unutar procesorska komunikacija za nekoliko redova veliine
bra od komunikacije izmedu vorova, cak i u danas prisutnim veoma brzim LAN okruenjima.

Korisnik e proces svakako pokrenuti na jednom voru sistema. Zavisno od dizajna
distribuiranog operativnog sistema, vor e ili krenuti sa izvravanjem procesa ili e process
uvrstiti u centralizovani sistem upravljanja procesa koji e ga rasporediti veoma slicno kao i u
klasicnim operativnim sistemima uz pomi odredenog modela (RoundRobin, Multiple
Feedback,...). U drugom metodu, korisnik sa sistemom komunicira preko terminala, unoseci
naredbe koje sistem izvrava poput mainframe viekorisnikih sistema. Medutim, kako je cilj
DOS-a to veca decentralizovanost cime se dobija laka proirivost, drugi metod ne predstavlja
dobar izbor, iako je jednostavniji za realizaciju.

Za koncept distribucije je efektniji pristup pokretanja procesa lokalno kroz modifikovani Multiple
Feedback algoritam koji forsira krae procese. Ukoliko je trajanje izvravanja due, proces e
prelaziti u sledeci nivo. Kada dode do kritinog nivoa, proces e prestati sa lokalnim
izvravanjem i biti dodeljen upravljanju procesa na nivou distribuiranog operativnog sistema.
vor sa najvie neiskorienosti procesorskog vremena e preuzeti proces, odnosno proces e
migrirati sa sobom prevlaceci i delove deljene memorije koja mu je neophodna za izvravanje.
Ukoliko je model distribucije memorije dobro dizajniran, migracija procesa e se svesti na
prebacivanje stanja procesora i izmenu liste procesa na jednom i na drugom voru. Pri poetku
izvravanja, proces e zahtevati memoriju iz virtuelnog adresnog prostora drugog vora pa e i
stranice biti replicirane na novom mestu izvravanja procesa. Proces e se ponovo izvravati na
isti nain primenom Multiple Feedback algoritma. Odabir kritinog nivoa za migraciju procesa je
jako bitan jer e uz malu vrednost biti previe prebacivanja to je veoma vremenski zahtevna
operacija narocito ako postoji veliki memorijski blok koji proces koristi, dok e se uz veliku
vrednost izgubiti distribucija tj. nee ni dolaziti do migracije.
5

Ako bismo eleli da dodatno unapredimo ovakav model distribucije procesorskog vremena,
morali bismo uracunati i ostale faktore isplativosti migracije procesa velicinu i lokaciju
memorijskog bloka koji proces koristi i resurse kojima proces pristupa ili moe pristupati.
Ispitivanje ovih faktora esto zahteva i odredenu heuristiku i pretpostavljanje ta proces moe
raditi u narednom ciklusu dodele procesorskog vremena. Tako dobijamo kvalitetan model
distribucije gde proces migrira na najrastereeniji vor klastera, najblie korienom resursu, uz
lokalno dostupan adresni prostor memorije koju proces koristi pri izvravanju. Medutim, situacija
najcee nije tako idealna pa je potrebno napraviti kompromis izmedu izvravanja na
najrastereenijem procesoru i, na primer, voru gde je lociran resurs koji se koristi to se vri
pravilnim odabirom nivoa migracije, nivoa uticaja svakog pojedinacnog faktora, predhodnim
istorijatom migriranja procesa i drugo.

Komunikacija

Radno okruenje distribuiranog operativnog sistema iskljuuje postojanje zajednikog deljenog
memorijskog prostora koji se moe iskoristiti za komunikaciju izmedu procesa. Sve to se odvija
u distribuiranom operativnom sistemu je praceno veoma intenzivnom komunikacijom izmedu
sistemskih procesa na vorovima klastera. Ocigledno je da je kvalitet implementirane
komunikacije jako bitan za brzinu izvravanja distribuiranog operativnog sistema. Takode,
mreno okruenje u kome se komunikacija odvija, zavisno od upotrebljene infrastrukture esto
nije potpuno pouzdana pa distribuirani operativni sistem mora imati metode za verifikaciju
informacija.

Prvo to treba odluciti u dizajnu komunikacije distribuiranog operativnog sistema jeste koji
protokol e se koristi. Protokol treba biti dovoljno portabilan (OSI kompatibilnost), dovoljno
visokog nivoa sa mogucnostima ispunjenja osobina koje su gore navedene, ali u isto vreme
dovoljno pouzdan i, zbog pitanja performansi, redukovan do najmanje mogue mere.

Vrlo esto korien, a jako efikasan nii protokol komunikacije jeste TCP. On skriva omake,
izgubljene poruke, duplirane poruke, zakanjele poruke i sl. Specijalnim nainom grupisanja i
transporta poruka. TCP stack jeste OSI kompatibilan ali odstranjuje dio OSI slojeva, tako da se
sastoji od sloja mrene infrastrukture, mrenog sloja (IP, ICMP, IGMP), transportnog sloja gde je
sam TCP protkol i aplikacionog sloja gde se nalaze vii protokoli. Vii protkoli mogu potpuno
zanemariti smetnje u komunikaciji. Ipak u slucaju prekida komunikacije, TCP protokol ne moe
ponovo pokrenuti komunikaciju ili pronaci vor klastera koji poseduje replikaciju stanja sistema i
podataka koje je trebalo preneti vec je to zadatak viih protokola kao to je RPC (Remote
Procuders Calls).

RPC protokol komunikacije
Osnova RPC protokola jeste obezbedivanje lakog pozivanja deljenog udaljenog serivsa, na isti nain kao to se obavlja poziv
lokalne sistemske procedure (sistemskog poziva). Ulazni podaci na osnovu kojih se izvrava servis se prenose kao parametri
poziva udaljene procedure. U lokalnom pozivu sistemskih procedura parametri mogu biti preneti po vrednosti i po referenci, a
pored direktnih parametara, koriste se i globalne varijable. Ocigledno je da globalne varijable nisu mogue u pozivima
udaljenih procedura. Prenos po referenci je, zavisno od modela deljenja
radne memorije obicno sporiji od prenosa po vrednosti jer je potrebno izvriti dodatne upite kako bi se saznao sadraj
referenciranog virtualnog adresnog prostora sa drugog vora.
6

RPC se ni po cemu ne sme razlikovati od obicnog sistemskog poziva. Kernel presree poziv i usmerava ga na RPC modul koji
od sistema imenovanja (takode predefinisana udaljena deljena procedura) saznaje adresu na koju treba uputiti poziv, pakuje
parametre poziva na osnovu IDL specifikacije deljene procedure i emituje ih ka njoj u klijent-server komunikaciji. Serverski
RPC modul prima zahtev, na osnovu IDL-a obraduje zapakovane parametre i poziva ovaj put lokalnu proceduru i hvata
rezultat. Ponovo na osnovu IDL-a deljene procedure formira odgovor i povratnu vrednost procedure i vraca je klijentu koji
prima odgovor i procesu koji je zahtevao poziv deljene procedure dostavlja povratnu vrednost kao da je procedura izvrena
lokalno.

O RPC-u (i objektnoj varijanti RMI-u) je vec bilo rijei u prikazu distribuiranih sistema. Princip
rada RPC-a jeste u skrivanju eksplicitne komunikacije, odnosno pruanja mogucnosti da pomiu
posebnih podsistema smetenih unutar kernela i proirenog TCP stack-a procesi mogu pozivati
procedure sa drugih vorova klastera na isti nain kao i lokalno dostupne sistemske pozive. RMI
za razliku od RPC-a umesto sa procedurama interaguje sa objektima i njihovim metodama. RPC i
RMI protokoli se koriste za obavljanje i komunikacije niskog nivoa (u klasicnim operativnim
sistemima realizovana preko deljene memorije) i meduprocesnom komunikaciju vieg nivoa
(eksplicitna takozvana IPC komunikacija).

Svu komunikaciju u DOS-u moemo podeliti u nekoliko kategorija. To je najpre komunikacija
izmedu dva vora, uredena po klijent-server modelu. Komunikacija ove vrste zapocinje slanjem
zahteva od klijenta ka serveru, a zavrava vracanjem odgovora nakon to server izvri traenu
uslugu. Za formiranje zahteva klijent mora znati adresu servera. Adresa moe biti unapred
predodredena, ili moe biti promenljiva. U drugom slucaju klijent najpre emituje broadcast paket
sa zahtevom usluge koju trai, a server koji tu uslugu prua odgovara sa svojom adresom.
Alternativno postoje i modeli sa posebnim serverima zaduenima za adresiranje koji cuvaju listu
usluga koje serveri pruaju. Sama komunikacija se obavlja u protokolu vieg nivoa, a ukoliko je
to RPC, onda klijent poziva proceduru servera cime je obuhvacen celokupni proces.

Druga vrsta komunikacije je komunikacija sa grupom. Obicno je izradena u jedan ka ostalima
modelu gde se jedan clan grupe obraca svim ostalim clanovima grupe, odnosno obraca se grupi
kao virtualnom serveru, dok on preuzima ulogu klijenta. Grupa moe biti dinamicna, tj.
promenljiva kada je virualizacija grupe neophodna. Adresiranje grupe se moe vriti adresiranjem
svakog njenog clana to je relativno sporo i nedovoljno proirivo. Modelu dinamicne grupe bolje
odgovara broadcast komunikacija kada samo clanovi grupe primaju poruku upucenu svim
vorovima klastera. Iako efikasna za realizaciju, ovakav princip komunikacije nepotrebno
zaguuje mreu. Treci metod adresiranja, obeleen kao unicast, predstavlja varijaciju broadcast-a
kada se poruka na nivou protokola komunikacije upucuje samo clanovima grupe.

7
est je slucaj kada u grupi vorova treba izabrati lidera, koji e voditi bilo oporavak od havarije
ili biti zaduen za koordinaciju grupe i njenu interakciju sa spoljnim clanovima. Termin lider ne
treba shvatiti bukvalno, jer u jednom trenutku u grupi moe postojati vie lidera, zaduenih za
razlicite operacije. Algoritam korien u Amoeba distribuiranom operativnom sistemu je poznat
kao pozivni algoritam (engl. Invitation Algorithm), primenjuje se u izboru lidera u grupi vorova
koji komuniciraju asihrono. Na poetku izbora svi vorovi imaju jednake anse da postanu lider,
to je jedan od osnovnih zahteva potpune distribucije i samim tim i velike otpornosti na greke jer
ne postoji predodredeni ili favorizovani lider. Svaki vor pamti informacije o grupi kojoj pripada
i lideru te grupe. Najpre svaki vor kreira samostalnu grupu i sebe proglaava liderom.
Periodino svaki vor alje poruku ostalim vorovima koji zajedno sa njim treba da oforme grupu
proveravajuci da li su oni lider svoje pod-grupe. Ukoliko je odgovor potvrdan, vor pauzira
aktivnost odredeno vreme koje je proporcionalno velicini njegove grupe, a zatim pokree
proceduru sjedinjavanja grupa. U ovoj proceduri, vor poziva ostale lidere da mu se prikljuce.
Drugi lider po prijemu poziva prosleduje poziv svim svojim clanovima. Svaki vor koji bilo
direktno ili indirektno dobija poruku da se prikljuci odgovara svojim pristankom. Svaki vor koji
je odgovorio da pristupa grupi ne dobije potvrdu o clanstvu u zadatom periodu cekanja (koji
zavisi od toga da li je on trenutno lider neke grupe i kolika je ta grupa) on pokree operaciju
slanja poziva. Postoji nekoliko uslova kojima se odreduje da navedena procedura uvek rezultuje
svim clanovima u grupi i jednim odabranim liderom, odnosno razbijanjem do sada sacinjenih
pod-grupa i ponovnim pokretanjem procedure.

Pored izbora lidera u grupi procesa i formiranje samih grupa procesa, u grupi je potrebno
obezbediti i decentralizovano glasanje kojim procesi mogu doneti zajedniku odluku onda kada je
to potrebno. Najcee se koristi dvofazni protokol odluivanja, u kome se u prvoj fazi najpre
odrava glasanje, a u drugoj izvrava akcija na osnovu rezultata glasanja. Klasicna
implementacija ovakvog dvofaznog algoritma ide sledecim tokom: u grupi se izborom odreduje
lider koji organizuje glasanje, on multicast-uje zahtev za glasanje svim ostalim clanovima grupe.
Zatim clanovi obraduju zahtev i odgovaraju organizatoru izbora koji prebrojava glasove i
odreduje konacnu odluku. U drugoj fazi grupa se obavetava o rezultatima i akcija se preduzima.

Problem dvofaznog protokola glasanja je ocigledan ne postoji kontrola prebrojavanja glasackih
listica i krada na izborima je time omoguena. Ovakvo ponaanje je dodue esto u stvarnosti, ali
u distribuiranim operativnim sistemima nije dozvoljeno jer naruava sigurnost sistema. Zato se
uvode posmatraci - kontrolori prebrojavanja, ili u boljem slucaju vri se vie prebrojavanja,
moda cak i ekstremno kada svaki bira ucestvuje u prebrojavanju glasova. Sada, umesto
organizatora glasanja postoji distribuirani interfejs glasanja. Proces glasanja se zapocinje i
interfejs sistema glasanja formira proctor za cuvanje rezultata, i otvara distribuirane procedure za
pregled rezultata i slanje rezultata. Nakon toga on pokree vremensko ogranicenje u kome se
biraci moraju javiti. Svaki bira pojedinacno proverava da li do sada postoji neki glas prijavljen
interfejsu glasanja i ako ne postoji alje glas. Ukoliko vec postoji glas prijavljen interfejsu, bira
najpre uporeduje vrednost glasanja sa svojim glasom. Ako se slau, bira ne radi nita, u
protivnom oglaava svoj glas ostalim biracima. Kada svi biraci dobiju priliku da uporede svoj
glas sa prvim sacuvanim u interfejsu glasanja (pre isteka vremenskog ogranicenja), biraci
analiziraju sve oglaene vrednosti i utvrduju da li postoji kritina vecina koja se nije sloila sa
prvim glasom. Ako kritina vecina postoji, u saradnji sa interfejsom se po
utvrdenim kriterijumima ponavlja glasanje kako bi se eliminsali ubaceni ili pogreni glasovi
pojedinih biraca. Jedini preduslov za uspeno glasanje u ovom algoritmu jeste da vecina biraca
budu ispravni, to je i logicno. Sam algoritam je vrlo uspean i jako dobro se skalira sa porastom
broja biraca (priblino ostvaruje idealnu zavisnost O(1)).

8
Kada se govori o grekama u komunikaciji mora se imati u vidu da protokoli nieg nivoa (TCP na
primer) imaju zadatak da obezbede pouzdan transfer poruke medutim u slucaju prekida veze ili
havarije transmisija poruka se nikako ne moe obezbediti. Zato protokol vieg nivoa (RPC) i sam
model komunikacije u distribuiranom operativnom sistemu mora imati naina da premosti greke
nastale usled havarije mree, usled havarije servera i usled havarije klijenta. Kod havarije servera,
server moe biti onesposobljen pre primanja zahteva kada klijent (i sistem imenovanja) ne moe
da pronade server koji nudi datu proceduru. U takvom slucaju se korisniku i procesu prijavljuje
greka. Havarija servera moe nastati i nakon primanja zahteva i tada nastaje problem jer klijent
ne moe znati da li je server izvrio operaciju pre havarije ili ne. Ovo postaje narocito opasno u
slucaju da operacija poziva druge udaljene procedure ili menja stanje distribuiranog operativnog
sistema. Zato se ovakve bitne operacije rade pomiu transakcija.

Transakcije mogu potpuno da zamene princip delimicne sinhronizacije, ili da ga u blaoj varijanti
korienja kvalitativno dopunjuju. Promene koje se vre transakcijama imaju osobinu sve-ili-
nita, odnosno ukoliko dode do greke u komunikaciji ni jedna operacija iz tekue sesije nee biti
izvrena, odnosno bie sve izvrene ukoliko se transakcija zavri uspeno.

Kontrola greaka u komunikaciji u distribuiranim operativnim sistemima i distribuiranim
sistemima uopte postoji na vie razlicitih nivoa. Sam protokol prenosa (TCP, UDP i sl.) ima
kontrolu greaka kojom se ostvaruje pouzdanost prenetih poruka i podataka izmedu dva vora.
Ukoliko je protokol konekcijski (sesijski) orijentisan, kao to je TCP, onda je zagarantovan i
redolsed poruka kao i informacija o prekidu konekcije.

Ipak, na nekim viim nivoima je potrebno ostvariti potvrdu da li je poruka validno obradena.
Ovde se dizajneri DOS-a susrecu sa klasicnim problemom dve armije. Naime, dva generala se
moraju dogovoriti o napadu na treceg. Ukoliko napadnu istovremeno, pobjedie dok e u
protivnom izgubiti. Problem je to je njihova jedina komunikacija nepouzdani glasnik koji se
mora provuci kroz teritoriju treceg generala. Prvi general je poslao glasnika da obavesti drugog
da napad pocinje sutradan izjutra i glasnik je stigao do drugog generala. Medutim, drugi general
se bojao da prvi nee znati da li je glasnik stigao i da e odustati od napada pa je poslao glasnika
nazad da potvrdi da je poruka stigla. Glasnik je ponovo uspeno stigao, ali se sada prvi general
bojao da drugi nee znati da je glasnik stigao pa da e odustati od napada. Kao to se vidi, ma
koliko puta generali slali glasnika, nikada nee doci u situaciju da su sigurni da e jedan i drugi
napasti istovremeno, odnosno nisu uspeli da razmene jednu veoma jednostavnu informaciju.
Logicno je zapitati se kako e se onda u distribuiranim operativnim sistemima prenositi
pokazivaci na memorijske strukture, informacije o distribuciji procesa i mnoge druge znatno
sloenije informacije.

Upravo je kontrola greaka u komunikaciji, komponenta protokola vieg nivoa zaduena za
uspostavljanje uspene verifikacije primljene i obradene informacije.

Malo drugaiji je i problem vizantijskih generala. Umesto o dogovoru o vremenu napada, n
generala moraju razmeniti informacije o broju svojih trupa kako bi se dogovorili o napadu.
Medutim, medu njima postoje generali koji ili nemaju sigurnu komunikaciju (glasnik moe biti
zarobljen i zamenjen prevarantom koji e lairati informaciju) ili sami generali ele da zbune
ostale (neprijateljski proces, ili falican proces). Reenje problema spada u klasicne algoritme i
moe se pronaci obraden na razlicite naine. Kao krajnju informaciju svi generali moraju imati
podatke o validnom stanju ostalih, odnosno obeleene neispravne podatke. Reenje se svodi na
prenos informacija o svim generalima kroz sve generale, i generalno reenje se moe dobiti samo
u slucaju da postoji vie od dve treine pouzdanih generala. Konkretno, u distribuiranim
9
operativnim sistemima algoritam reavanja problema vizantijskih generala se esto koristi u
sistemima za glasanje, dogovor, komunikaciju unutar grupe i sl.

Razliciti su scenariji prekida komunikacije. Klijent moe neuspevati da locira server, poruka sa
zahtevom moe biti izgubljena, server moe napraviti greku prilikom obrade zahteva, poruka sa
odgovorom moe biti izgubljena, ili klijent moe naleteti na greku nakon slanja zahteva. Svaki
od ovih problema trai razlicita reenja. Ponekad je mogue izvriti oporavak od greke
ponovnim slanjem zahteva, dok to ponekad nije moguce.
Takode, u nekim situacijama vremensko ogranicenje nakon cega se emituje poruka o greci je
jedino reenje. Ipak, ponekad je to neprihvatljiva solucija.

Greke u komunikaciji sa grupom se moraju razloiti na dva dela. Prvi su greke koje nastaju u
komunikaciji grupe sa spoljnim ciniocima, kada se one posmatraju kao greke u klijent-server
komunikaciji, a drugo su greke koje nastaju u komunikaciji unutar same grupe bilo da su one
vezane za odluivanje i glasanje ili za razmenu informacija. Takode, unutar same grupe mora u
svakom trenutku postojati sinhronizacija, i svaka pojava nesinhronizovanosti grupe pre ili kasnije
vodi ka pojavi greke u radu te grupe.

Sinhronizacija vremena

vorovi klastera su, kao to je vec nekoliko puta naglaeno nezavisni raunarski sistemi. Kao
takvi, svaki vor operie samostalno, pod upravljackom palicom distribuiranog operativnog
sistema. Na nivou sistema medutim vecina atomskih operacija mora biti izvrena tacno
odredenim redosledom, u tacno odredenom vremenskom trenutku na nivou celokupnog sistema.
Upravo obezbedivanje uskladenosti toka vremena na svim vorovima klastera kao i toka
komunikacije na nivou distribuiranog operativnog sistema uopte je zadatak sistema za
sinhronizaciju.

U klasicnim operativnim sistemima pojam sinhronizacije vremena je potpuno nepoznat jer se
svaki proces u svakom trenutku moe obratiti kernelu odgovarajucim sistemskim pozivom kako
bi dobio informaciju o tacnom vremenu. Ukoliko jedan process zahteva informaciju o vremenu, i
odmah zatim drugi proces zahteva informaciju o vremenu, drugo vreme e biti vee od prvog, ba
kao to je i realno stanje. U distribuiranim operativnim sistemima ovo nije slucaj jer svaki vor
klastera meri sopstveno vreme na nivou hardvera. Kada se prvi proces pokrene na jednom voru i
zahteva informaciju o vremenu, nepostoji nikakva garancija da e to vreme biti manje od
vremena koje kasnije dobije drugi proces koji je pokrenut na drugom voru klastera.

Najpre moramo utvrditi kako moe doci do odstupanja u vremenu izmedu razlicitih vorova
klastera. Casovnik u svakom voru predstavlja oscilujuci kristal sa relativno stalnom
frekvencijom (brojem otkucaja). Nakon definisanog broja perioda oscilacije, stalni brojac u
posebnoj memoriskoj oblasti pod kontrolom BIOS-a se uvecava za jedan kvant vrednosti. Unutar
BIOS-a se povezuje vrednost memorijske lokacije sa stvarnim datumom i vremenom nakon cega
dobijamo vreme izraeno u klasicnim jedinicima (godina, mesec, dan, cas, minut, sekunda,...).
Ipak, broj oscilacija kristala nije isti na svim vorovima klastera. Iako naizgled neznatna, nakon
kritinog perioda razlika pocinje da se intenzivno primecuje ometajuci rad distribuiranog
operativnog sistema.

Kao reenje ne moemo koristiti jedan casovnik kome verujemo i to iz dva razloga. Jedan je
naruavanje autonomnosti svakog vora, a drugi prakticna neupotrebljivost takvog pristupa jer bi
centralizovani merni casovnik imao preveliko opterecenje iz celog sistema, odnosno postojalo bi
kanjenje izmedu realnog vremena i informacije koju casovnik prosleduje kao odgovor usled
10
perioda potrebnog za obradu zahteva, pripremanje odgovora i njegovo uspeno slanje do
destinacije.

Ako sinhonizujemo sve casovnike u realnom trenutku T1 na broj otkucaja N1, u realnom trenutku
T2 svi casovnici vorova bi trebali da pokazuju N2= N1+ (T2-T1) * C, gde je C odnos broja
otkucaja po jedinici merenja vremena. Prakticno, dananji casovnici stvaraju greku tako da N2
nee biti isto na svim vorovima klastera, odnosno broj moe biti manji ili veci zavisno od naina
devijacije merenja vremena u samom casovniku. Da bismo ispravili greku, moramo periodino
sinhronizovati casovnike sa mernim casovnikom i pri tome formirati takav sistem koji ispravlja
dve greke. Prvo, da je od trenutka kada vor poalje informaciju o trenutnom broju otkucaja, do
trenutka kada drugi vor informaciju primi, proteklo vreme i drugo da ni po koju cenu ne smemo
na bilo kom voru vreme vratiti
unazad jer to moe izazvati probleme sa objektima, datotekama i procesima na samom voru i
sistemu uopte.

Kao to se vidi na slici, pretpostavka je da
e vreme slanja zahteva i vreme slanja
odgovora biti isto, te da moemo smatrati
da ono stoga iznosi (T2-T1)/2. Kako i T2 i
T1 merimo na istom casovniku, iako on nije
tacan, moemo tacno izracunati interval. U
ovakvoj postavci nije uracunato vreme
obrade zahteva pa dodatno moemo
poboljati sistem aljuci i vreme obrade uz
informaciju o trenutnom broju otkucaja.
Opisani pristup je vrlo centralizovan, ali v
tacnost poredbenog casovnika to je lako izvesti sinhronizujuci casovnik sa radio signalom sa
satelita ili sl. preko komercijalno dostupnih uredaja.
eoma pouzdan ukoliko moemo da garantujemo

Alternativno, moemo izbeci prisustvo poredbenog casovnika koristeci se prosecnom vrednou.
Periodino svaki vor moe upitati ostale vorove klastera trenutno vreme, aljuci im svoje
trenutno vreme. Na osnovu prikupljenih odgovora vor moe odluciti kako treba da podesi svoj
casovnik.

Trece, u modernim distribuiranim operativnim sistemima takode prisutno reenje jeste korienje
logickih casovnika. Pre poetka vremenski kritinog procesa, za potrebe tog procesa vorovi se
dogovore o poetku inicijalizacije logickog casovnika za dati proces. Nakon toga, logicki
casovnik se aurira na osnovu razlike broja otkucaja izmedu vremena formiranja casovnika i
sadanjeg vremena. Usled razlicite frekvencije oscilovanja, logicki casovnik se takode mora
aurirati ali je jednostavnije dobiti tacniju sinhronizaciju jer je casovnik vezan samo za jedan
proces, a ne za ceo vor ili ceo distribuirani operativni sistem.

Kontrola greaka

Do sada je u kontekstu pojedinih komponenti distribuiranog operativnog sistema bilo reci o
sistemu za kontrolu i prikrivanje greaka, odnosno tolernaciji greaka. Specificnost greaka u
distribuiranim sistemima jeste parcijalna greka, greka samo na jednom delu ili u jednom sloju
sistema. Greka moe biti izolovana ili moe voditi krahu sistema procesa ili gubitku podataka.
Za zadovoljavanje osnovnih principa u dizajnu distribuiranog operativnog sistema, sistem mora
imati mogucnost da nastavi funkcionisanje i pri takvim neocekivanim situacijama.

11
Kao merilo kvaliteta distribuiranog operativnog sistema se uzima dostupnost sistema, odnosno
verovatnoca da se sistem moe odmah koristiti. Sa druge strane pouzdanost je verovatnoca da e
sistem raditi neprekidno. Iako slicni, ova dva indikatora nisu isti. Sistem koji svakog sata ne radi
jednu milisekundu ima dostupnost od preko 99,999%, ali je jako nepouzdan. Sistem koji svakog
januara ne radi dve nedelje ima dostupnost od skromnih 96%, ali visoku pouzdanost. Sigurnost i
mogucnost popravke su takode bitni faktori u oceni kvaliteta. Sigurnost obezbeduje da se nita
katastrofalno nece
dogoditi pri pojavi greke, iako to nikako ne moe biti zagarantovano jer greke u sistemu nisu
predvidive.

Sve mogue greke moemo klasifikovati u prolazne (privremeni gubitak kvaliteta transmisije
podataka), periodine (lo kontakt u delu sistema) i stalne (havarija koja se manifestuje sve do
popravke otecenog dela). Po tipu nastanka greke mogu biti hardverske i softverske. Dalje, po
posledicama greke moemo podeliti na one koje dovode do prestanka rada sistema, one koje
dovode do neispunjavanja zahteva, greke koje dovode do vremenskih prekoracenja, ali i greke
mnogo tee za prepoznavanje kao greke koje dovode do greaka u odgovoru, greke koje dovode
do promene stanja sistema (narocito opasne kod distribuiranih sistema datoteka), i na vrhu
greke koje dovode do slucajnih posledica, najcee nastale usled prepisivanja memorije,
pogrene komunikacije, zakazivanjem sistema sigurnosti i slicno kada su posledice najgore.

Klasicna kontrola greaka se uglavnom svodi na redundantnost na svim nivoima gde moe doci
do greke. Na primer, u komunikaciji se pored same poruke dodaje i informacija koja pomae
verifikaciji ispravnosti poruke. Ukoliko verifikacija neuspe, zahtevae se ponovno slanje poruke,
ili preusmeravanje poruke drugom rutom kako bi se zaobile smetnje. Tako dolazimo do drugog
uslova, postojanja fizicke redundantnosti. Kao to covek ima dva oka iako moe videti i sa
jednim, Boeing 747 ima cetiri motora iako moe da leti sa tri, tako se i u hardveru distribuiranog
sistema koriste iste metode.

Kontrola greaka hardvera se moe relativno lako implementirati uz pomi dobrih protokola
komunikacije i dobre postavke sistema sa kvalitetnom redundancijom na razlicitim hardverskim
nivoima. Medutim, kontrola greaka procesa koji se izvravaju na distribuiranom operativnom
sistemu je izuzetno sloena i zahteva velike izmene naina pogleda na rad procesa u
distribuiranom operativnom sistemu. Najpre treba utvrditi da li se moraju svi procesi kontrolisati.
Ukoliko proces nije sistemski, niti sistemski proces zavisi od njegovog rezultata, pod
pretpostavkom da mehanizam sigurnosti sistema titi sistem od nepropisne interakcije sa
procesom, nije potrebno procesu obezbedivati kontrolu greaka. Osnovna kontrola greaka
procesa se svodi na redundantost. Umesto da imamo jedan proces koristimo grupu procesa
sastavljenu od vie nezavisnih indenticnih procesa. Grupa se spoljnim procesima predstavlja kao
jedistveni proces, kao to se i klaster kroz distribuirani operativni sistem predstavlja kao
homogeni raunarski sistem. Grupa ne sme biti hijerarhijski uredena jer onda postoji jedinstvena
tacka oslonca koordinator grupe cijim krahom grupa prestaje da funkcionie. Sve odluke koje je
potrebno doneti u grupi se donose sistemom glasanja gde svaki proces grupe donosi odluku, a
preovladujuca odluka se smatra odlukom grupe tj. odlukom procesa ukoliko grupu posmatramo
spolja. Pri greci na nekom od clanova grupe, taj clan prestaje da ucestvuje u komunikaciji unutar
grupe, a ostali clanovi moraju proveriti da li se ne radi o privremenom kanjenju u komunikaciji.
Postoji opasnost da dio clanova grupe izgubi komunikaciju sa ostalim clanovima cime se zapravo
uspostavljaju dve grupe. Zato distribuirani operativni sistem mora imati naina da ili grupu
eliminie ili da procese povee u novu grupu, prethodno ustanovivi ta se dogodilo. Iako na prvi
pogled jednostavno, ovo je izuzetno sloeno za realizaciju i danas postoji vie aktuelnih
istraivanja koja utvrduju najbolje algoritme kojima se moe postici sigurnost u odluivanju nad
operacijama sa grupom. Ne treba ni pominjati da je i sam proces koji odlucuje ta treba uraditi sa
12
grupom (dio raspodele procesa) takode grupa procesa i da se svaki put odvija glasanje unutar te
grupe. Takode, radi poboljavanja performansi odabir vorova na kojima e se izvravati u svakoj
svojoj atomskoj jedinici je vrlo vaan, a procesi grupe moraju imati tenju da migriraju na one
vorove izmedu kojih je komunikacija najbra.

Broj procesa koji trebaju biti u grupi zavisi od kritinosti procesa koji se izvrava (odnosno od
kritinosti po sistem ako se dogodi greka pri izvravanju procesa) ali i od statisticke analize
verovatnoe dogadanja greke pri izvravanju procesa. Metod je narocito efikasan ukoliko se
proces esto izvrava to i jeste slucaj sa sistemskim procesima.

Pored kontrole greaka koja e osigurati sistem od potpunog kolapsa, sistem mora imati i
mogucnost da stanje sistema u kome se dogodila greka zameni sa prethodno ispravnim stanjem
sistema. Dva su pristupa na koji se ovo moe izvesti. U prvom se sistem iz sadanjeg stanja sa
grekom vraca u prethodno zabeleeno stanje. Drugi pristup je da se sistem umesto vracanja u
ranije stanje pokua prebaciti u novo ispravno stanje. Prvi pristup je univerzalniji ali esto
nedovoljno potuje principe distribuiranog sistema, dok drugi moemo izvesti jedino onda kada
unapred znamo koja se greka moe dogoditi jer samo tada sistem moe znati na koji nain da
ispravi greku i krene dalje. Razlike ova dva pristupa se najlake vide na primeru greke u
komunikaciji. Ukoliko trenutno emitovani paket ne dopre do svog cilja, ispravkom greke
vracenjem unazad e biti zahtevano ponovno slanje paketa. U drugom pristupu, primalac paketa
e pokuati da na osnovu primljenih paketa otkrije paket koji zbog greke nije stigao, a ukoliko u
tome ne uspe zatraice, po prvom pristupu, ponovno slanje paketa. Evidentno je da u drugom
slucaju mora doci do preklapanja paketa, tj. da se u svakom slanju paketa alje dio prethodnog i
dio sledeceg, tako da se gubitkom jednog paketa ne naruava komunikacija.

Postoje situacije kada ipak nije mogue uraditi svojevrsnu popravku nastale tete kada sistem nad
kojim je izvedena operacija ne moemo vratiti u stanje pre te operacije. Drugi problem je to ne
postoje nikakve garancije da nee doci do iste greke i nakon vracanja stanja sistema.

3. Distribuirani sistemi datoteka

Sistem datoteka u operativnom sistemu ureduje nain na koji e se datoteke i direktorijumi
organizovati i cuvati na memorijskom medijumu. Analogno tome, distribuirani sistem datoteka
(distributed file systems DFS) ima istu ulogu, koju medutim igra u znatno teem okruenju, kao
i sami distribuirani operativni sistemi. Cilj DFS-a je da omogui korisnicima distribuiranog
operativnog sistema deljenje podataka i deljenje resursa stalne memorije kroz jedinstveni sistem
datoteka. Postojanje jedinstvenog sistema datoteka prua mobilnost korisnika, odnosno prua
mogucnost da se korisnik prijavi na bilo kom voru sistema i normalno pristupa svojim
podacima.

Idealan DFS eliminie probleme performansi, dostupnosti, i proirivosti ovakvih sistema, i
potuje principe transparentnosti na nain na koji to radi i distribuirani operativni sistem ciji je
DFS dio. Performanse DFS-a se mogu posmatrati i kao jo jedna dimenzija transparentnosti jer se
DFS mora ponaati, ako ne isto, onda barem slicno kao i klasican sistem datoteka. Ocigledna
razlika u performansama koju je potrebno premostiti jeste vreme da zahtev korisnika stigne do
fizicke lokacije gde je traeni podatak smeten kao i vreme potrebno da korisnik dobije odgovor.
Razlicitim metodama keiranja informacija o podacima, putanja do podataka, i samih podataka ali
i razvojem brzina internih mrea se u dananjim sistemima problem performansi potpuno
iskljuuje.

13
Otpornost na greke je bitna karakteristika DFS-a. Greke mogu nastati u komunikaciji, u
hardveru vora, bilo da je to vor koji treba da primi ili vor koji treba da poalje informaciju u
nekom trenutku, ali greke mogu nastati i pojavom nepredvidenog stanja u DFS-u te sam sistem
mora biti dovoljno inteligentan da izade iz zastoja koji na taj nain mogu nastati. Idealan DFS
omoguava neometani nastavak rada do neke granice, a svakako ne dozvoljava gubitak podataka,
nemogucnost kratkorocnog premoavanja problema i sl. Za razliku od klasicnih sistema
datoteka, distribuirani sistemi datoteka imaju veliku prednost u reavanju problema otpornosti na
greke jer je zbog velikih memorijskih resursa mogue cuvati kopije podataka i informacija o
stanju sistema. Neodgovarajujci dizajn sistema moe pak potpuno sakriti ovu prednost do krajnjih
granica.

Sistem datoteka mora da obezbedi interfejs za rad sa datotekama kao osnovnim jedinicama
zapisanih podataka. Datoteka (file) sadri same podatke i atribute koji odreduju osobine datoteke
i nain na koji e joj korisnik preko operativnog sistema i sistema datoteka pristupati. Osnovne
operacije nad datotekom su kreiranje nove datoteke, pisanje u datoteku, citanje datoteke, i
brisanje datoteke. Dodatna operacija predstavlja premetanje datoteke i ona moe biti realizovana
na nivou sistema datoteka ili na nivou programskog interfejsa operativnog sistema preko
osnovnih operacija. Atributi datoteke (sigurnosne postavke, reimi rada, trenutno stanje)
predstavljaju podatke o podacima ili metapodatke. Moderni sistemi datoteka ili dodaci za klasicne
sisteme datoteka koji jo uvek nisu u upotrebi (GNOME Storage, Microsoft Yukon) proiruju
metapodatke razlicitim informacijama koje omoguavaju indeksiranje, sortiranje i pretraivanje
podataka.

Pojavi DFS-a je prethodila pojava mrenih sistema datoteka koji su se koristili u mrenim
operativnim sistemima i pruali uslugu pristupa sistemu datoteka udaljenog raunara, ali su to
radili na za korisnika netransparentan nain. Prvi distribuirani sistemi datoteka su zadravali
centralizaciju podataka koji su bili smeteni na posebnoj grupi vorova oznacenih kao data
serveri. Ovakav koncept nije omoguavao transparentnost distribuiranog sistema pa se u
modernim distribuiranim sistemima pristup uredajima za cuvanje podataka poistovecuje sa
ostalim resursima, odnosno postoji potpuna distribucija podataka. Ovo je narocito izraeno kod,
jo uvek teorijskih sistema datoteka koji rade na otvorenom klasteru mobilnih uredaja.

Na korisnikom nivou (u finalnoj reprezentaciji
sistema) postoje dva modela DFS-a. U prvom,
istorijski starijem modelu DFS nema jedinstvenu
strukturu direktorijuma. Svaki vor poseduje svoj
lokalni sistem datoteka koji je vidljiv procesu koji
se na njemu trenutno, u atomskim jedinicama
izvravaju. Procesom montiranja (engl. mount u
Unix i map u DOS/Windows terminologiji) se
vezuje korenski direktorijum sistema nekog
drugog vora sa direktorijumom u strukturi
lokalnog sistema na voru koga posmatramo.
Direktorijum se oznacava kao tacka montiranja, a
veza izmedu
tog direktorijuma i posebnog sistema datoteka
(najcee modul u mikrokernelu vora) koji
obezbeduje pristup korenskom direktorijumu
drugog sistema se pamti u tabeli montiranih
jedinica koja je smetena u memoriji. Ovakav
pristup koriste mnogi DFS-i kao to su Locus,
14
NFS, AFS, Sprite, Microsoft CIFS i drugi. Sama operacija montiranja moe biti automatizovana i
sistemski uredena tako da se obezbeduje transparentnost lokacije, relokacije i migracije podataka,
ali to ipak najcee nije slucaj.

Drugi, moderniji pristup, se zasniva na postojanju globalnog stabla direktorijuma (prostora
imena), jedinstvenog na svim sistemima. Ovakav pristup obezbeduje potpunu transparentnost,
omoguava mobilnost korisnika, a daje i izvesne prednosti u mogucnostima odvajanja
metapodataka od samih podataka i podrku za laku realizaciju keiranja podataka. Ostvarivanje
veze izmedu logicke reprezentacije lokacije datoteke (tekstualno ime datoteke) i fizicke lokacije
datoteke na uredaju za cuvanje podataka se odvija kroz sistem imenovanja (naming). Najcee se
tekstualno ime vezuje sa numerickom oznakom (analogno memorijskoj adresi u deljenju
memorije) koja se onda mapira na stvarne podatke. Ako potujemo transparentnosti lokacije,
migracije i relokacije preslikavanje imena datoteke na numericku oznaku nee biti jednoznacno.
Zapravo, kako e zbog poboljanja performansi vorovi koji su pristupali datoteci (i gde
distribuirani operativni sistem ima razloga da sumnja da e procesi sa tog vora ponovo pristupati
datoteci) na vorovima biti zadrana replikacija (kopija) datoteke, povratna informacija upita
pretvaranja tekstualnog imena u numericki reprezent e biti set razlicitih odgovora sa svih
vorova koji poseduju replikaciju datoteke. Medu njima ne sme postojati glavni vor, vor koji je
vlasnik datoteke jer bi grekom u interakciji sa njim bila naruena funkcionalnost celog
distribuiranog sistema datoteka i distribuiranog operativnog sistema u celini. Nakon dobijanja
liste vorova, zavisno od karakteristika (omiljeni vor, vor sa kojim je ostvareno najvie uspene
komunikacije na nivou DFS-a, vor sa najbrim odgovorom i slicno) proces mora odluciti koji
odgovor e koristiti. Distribuirani operativni sistem se brine o problemima replikacije te proces
moe smatrati da su sve kopije iste i jednake.

Kvalitetan sistem imenovanja i lociranja obezbeduje i bolju proirivost. Ukoliko sistem moe da
istu datoteku dobije od vie izvora to predstavlja rasporedivanje opterecenja u sistemu i sprecava
kanjenje usled prezauzetosti jednog vora.

Mnogi, danas korieni, distirbuirani sistemi datoteka ipak ne potuju potpuno transparentnost
lokacije (ime datoteke ne otkriva njenu fizicku lokaciju) i nezavisnost lokacije ili transparentnost
migracije i relokacije (ime datoteke se ne mora promeniti kada se fizicka lokacija smetaja
datoteke izmeni). Takvi sistemi su Locus, NFS9, Sprite, Microsoft CIFS10 i drugi. AFS (Andrew
File System) pak na primer ima primitivan nain ostvarivanja transparentnosti relokacije i
migracije, ali ne i transparentnosti lokacije to izaziva veliku konfuziju. Naime u tekstualom
imenu datoteke (sa kojim korisnik interaguje) je prisutna indentifkacija fizicke lokacije, ali se
takva indentifikacija kroz svojevrsnu bazu podataka (volume manager) koja se replicira na sve
klijente prevodi u stvarnu indentifikaciju vora na kome se datoteka nalazi. Izmenom sloga u
bazi, mogue je uraditi relokaciju na transparentan nain, ali kako je korisniku i dalje vidljiva
stara lokacija u imenu datoteke nakon vecih izmena sve postaje isuvie komplikovano za
odravanje. Drugi DFS-i kao to su Lustre i CODA su potpun uklopljeni u distribuirani koncept.

Radi poboljanja performansi, kao i kod deljenja radne memorije, distribuirani sistem datoteka
vri keiranje na razlicitim nivoima. Da li e keiranje biti u radnoj memoriji ili na disku, kako se
reava problem sinhronizacije svih keiranih datoteka, koje su jedinice keiranja (dio podataka,
cijela datoteka, sektor memorijskog uredaja, ceo memorijski uredaj), sve su to pitanja ciji
odgovori odreduju dizajn sistema za keiranje i replikaciju. Nain implementacije keiranja
direktno zavisi od polise deljenja podataka koja specifira kako sistem reaguje na promenu
datoteke koju trenutno koristi vie procesa. Tradicionalna, UNIX polisa deljenja zahteva da se
svaki upis u datoteku odmah prikae i u svim trenutno otvorenim datotekama. Vrlo efikasna, ali i
gruba i esto neupotrebljiva polisa deljenja jeste da se deliti mogu samo datoteke kojima je upis
15
zabranjen. Distribuciji prilagodenija, sesijska polisa zahteva da se upis u otvorenu datoteku tretira
kao u UNIX polisi unutar lokalnog sistema datoteka, ali ne i na datotekama koje su otvorene
preko DFSa. Po zatvaranju datoteke u koju je vren upis zavrava se sesija i keirane kopije
datoteke se sinhronizuju. Ovo je u skladu sa POSIX standardima, ali u razlicitim trenucima
postoji vie razlicitih verzija iste datoteke, a uzastopnim upisima u njih dolazi do jo veceg
arenila i potrebe za reavanjem konflikata. Na kraju, postoji i transakcijska polisa deljenja koja
reava probleme sesijske polise, ali kreira i nove (prvenstveno u pitanju brzine). Ona zahteva da
se upis u datoteku razmatra kao transakcija u bazama podataka. Pre upisa datoteka se zakljucava
tako da nijedan drugi proces ne moe pristupiti toj datoteci za upis, a po zavretku upisa
sinhronizuju se replikacije datoteke i datoteka se otkljucava. Potrebno je obezbediti mehanizme
odbrane u slucaju havarije u fazama dok je datoteka zakljucana, kao i obezbediti da se
zakljucavanje datoteke odigra atomski nad svim njenim
replikacijama.

Keiranje moe biti na razlicitim nivoima. Mogu se
keirati odgovori dobijeni od sistema imenovanja
(takozvani hint). Keirani odgovor se ipak mora
proveriti pre korienja (naravno, ne novim pozivom
sistema imenovanja jer time nita nismo dobili) jer je
mogue da se dogodila relokacija u meduvremenu za
koju ne znamo. Dalje, mogue je keirati metapodatke,
same podatke, ali i takozvane prljave podatke, odnosno
datoteka u koju se trenutno vri upis zajedno sa novim
podacima koji su upisani.

Posmatrajuci polise deljenja, postoje razliciti naini da
se sistem keiranja odbrani od postojanja
nesinhronizovanih podataka na sistemu. Postoje situacije
kada je mogue dozvoliti postojanje neuskladenih
datoteka, ali to onda nije distribuirani operativni sistem
opte namene jer sami procesi moraju voditi racuna o
keiranim datotekama. NFS ne garantuje sinhronizaciju podataka. Primitivni metod koji on koristi
jeste vremensko ogranicenje, odnosno svaka replicirana kopija e biti obrisana kroz 60 sekundi,
dok e prljavi podaci biti obrisani za 30 sekundi. Generalno moe se smatrati da keiranje ne
postoji u NFS-u.

Za razliku od NFS-a koji implementira UNIX polisu deljenja, u AFS-u postoji keiranje datoteka
na distribuirani nain, a sinhronizacija se vri pomiu callback poziva, odnosno koristi se sesijska
polisa. Kada vor zahteva dio datoteke, umesto prenosa traenog dela prenosi se cijela datoteka
kao osnovna jedinica keiranja i cuva na lokalnom disku ali i ostvaruje callback veza sa vorom
od koga je preuzeta datoteka. Prilikom upisa u neku drugu replikaciju datoteke, nakon zatvaranja
sesije, lancem callback poziva se osigurava sinhronizacija na celom sitemu. Problemi koji se
javljaju jesu vezani za prekid mrene komunikacije, otkazivanje vora koji treba da incijalno
prosledi callback ili slicno. Takve situacije se u AFS-u reavaju vremenskim ogranicenjem. Nova,
treca verzija AFS-a umesto callback mehanizma koristi token mehanizam koji kombinuje proveru
verzije datoteke sa sesijskom polisom deljenja.

Sprite sistem datoteka se na treci nain sukobljava sa sinhronizacijom, koristeci transakcijsku
polisu deljenja. Pri otvaranju datoteke za upis, blokira se keiranje te datoteke, a pre zavretka
transakcije osigurava se da na sistemu ne postoji zaostala keirana verzija datoteke. Svi procesi
nakon toga moraju napraviti novu keiranu verziju datoteke koja se koristi do sledeceg upisa.
16
Ukoliko je broj upisa prema broju citanja mali, keiranje je vrlo efikasno, u protivnom, keiranje
se minimalizuje jer je esto neophodno ponovo dobaviti keiranu datoteku od vora na kome je u
nju izvren upis. Drugi problem je to ukoliko dode do prekida komunikacije ili do kraha vora
na kome je izvren upis, sve promene e biti izgubljene.

Svako keiranje se smatra i repliciranjem i samim tim pomae u otpornosti na greke jer postoji
vie sinhronizovanih kopija podataka. Postoji mogucnost da se u trenutku sinhronizacije dogodi
havarija i time unite sve replikacije, te se u praksi i sama sinhronizacija datoteka nakon
zavrenog upisa odvija
po modelu transakcije.

Da bismo imali stabilniji sistem sa boljom transparentnou u slucaju pojave greaka na razlicitim
nivoima ne sme postojati kritina tacka sistema u kojoj se pamti stanje sistema. Na primer, kada
proces otvori datoteku sistemskim pozivom fopen, klasicni sistem datoteka kao povratnu
informaciju vraca pokazivac na datoteku koji slui kao indentifikacija zahteva od procesa ka
datoteci i sve dalje interakcije su na taj nain obeleene. Sistem datoteka u internoj memoriji
pamti metapodatke o procesu i o datoteci (kao na primer pozicija u datoteci) koje koristi u
procesiranju daljih zahteva. Ukoliko isto primenimo i na distribuirani sistem datoteka susreemo
se sa problemom distribuirane greke. Do greke moe doci na strani vora koji prima zahtev i
cuva podatke o zahtevu u memoriji kada se gubi svaka informacija o zahtevima koji e uslediti.
Nemogue je u tom trenutku konekciju migrirati ka replikaciji datoteke na drugom voru jer on
nema informacije koje je imao prethodni vor klastera. U povoljnijem ishodu, sistem za oporavak
na strani klijenta e ponoviti zahtev, dok bi u drugaijem ishodu dio podataka bio izgubljen, a
izvravanje procesa bi bilo prekinuto. Obrnuto, ako bi se havarija desila na strani vora koji
postavlja zahtev, drugi vor bi imao ostatke memorije koje ne bi mogao da ukloni (jer datoteka
nije zatvorena) vec bi to bio dodatni posao za takozvani sistem uklanjanja sirocadi (engl. orphan
detection and elimination). Stoga, ukoliko elimo stabilan, na greke otporan distribuirani sistem
datoteka, vor koji postavlja zahtev je taj koji mora cuvati stanje (jer njegovim krahom se prekida
i sam proces) i prosledivati ih prilikom svakog zahteva (kako poetnog tako i svakog narednog)
voru koji poseduje jednu od replikacija zahtevane datoteke. Greka u interakciji sa vorom koji
poseduje datoteku se lako reava upuivanjem zahteva nekom drugom voru koji poseduje
replikaciju datoteke. Tek ukoliko takvog vora nema, aktivira se mehanizam oporavka koji
ponavljanjem zahteva, uz vremenski uslov prekida moe efikasnije da rei problem.

17
4. Primeri distribuiranih sistema datoteka

CODA sistem datoteka

Ovaj sistem datoteka implementira jedinstveno stablo direktorijuma koje se montira unutar
lokalnog stabla svakog vora, kao to je slucaj i kod AFS-a. Sistem je originalno kreiran za rad na
GNU Mach mikrokernelu, ali sada ima zvanicnu podrku za Linux, NetBSD, FreeBSD, a
podrava i druge Unix-olike sisteme. CODA sistem je sacinjen od nekoliko komponenti koje se
nalaze na svakom voru - upravljac replikacija (Venus), server (Vice) i modula za kernel.
Sistemski poziv za neku od operacija nad datotekom ili direktorijumom koji se nalazi unutar
tacke montiranja sistema datoteka se upucuje CODA kernel modulu. On otvara standardni
teletype uredaj za komunikaciju ka Venus-u koji se nezavisno izvrava u korisnikom prostoru.

Venus najpre provera da li poseduje traeni objekat interakcije u lokalnom skladitu replikacija.
Ukoliko ga ne poseduje, Venus kontaktira sistem imenovanja od koga saznaje listu vorova koji
poseduju replikaciju objekta. Na odabranom voru koristeci RPC2 protokol komunikacije
uspostavlja vezu sa serverskom komponentom nazvanom Vice. Objekti se preuzimaju kao
atomske jedinice (cijela datoteka, odnosno sve informacije o direktorijumu) i smetaju u lokalno
skladite replikacija. Kada je objekat interakcije dostupan u skladitu replikacija, Venus o tome
obavetava CODA modul kernela koji novim sistemskim pozivom izvrava stvarnu akciju nad
objektom.

Pored podele u datoteke i direktorijume, unutar jednog vora distribuirane datoteke se dele u
logicke celine - delove (engl. volume). Svaki dio sadri nekoliko direktorijuma i datoteka
povezanih u logicku celinu (datoteke vezane za jedan projekat i sl.) koju odreduje administrator.
Oznaka djela je osnovna jedinica montiranja preko koje se obezbeduje od upada u ciklicni graf
putanje koja u sebi sadri montirane direktorijume.

Dio je osnovna jedinica replikacije datoteka. Prilikom replikacije djela, indentifikacija vora
se dodaje u listu vorova koji poseduju replikaciju tog dela. Listom je obeleena grupa vorova
oznacena kao VSG (Volume Storage Group). Prilikom izmena nad objektom, podaci se citaju sa
jednog vora, a dostavljaju svim vorovima iz VSG grupe djela u kome se nalazi objekat koji
se menja. CODA sistem datoteka podrava multicast (unicast) RPC komunikaciju i ovakva polisa
upisa ne usporava rad sistema.

Venus moe da detektuje i prekid veze kada se prebacuje u offline reim rada to je jedna od
naprednih mogucnosti CODA sistema datoteka, izuzetno korisna u mobilnom okruenju, ali i u
okruenju podlono havarijama na mrei kada se ova mogucnost ponaa kao komponenta sistema
zaduenog za kontrolu greaka i transparetnost pri grekama uopte.

Mogucnost offline naina rada i agresivni model cuvanja replikacija dovodi do problema
postojanja vie verzija iste datoteke na sistemu (izmena datoteke u lokalnom skladitu na voru
koji se privremeno nalazi van mree), pa CODA sistem datoteka poseduje mehanizme za njegovo
reavanje. Kada je u normalnom reimu rada, po izmeni podataka u lokalnom skladitu
replikacija Venus obavetava odgovarajuci VSG skup. U offline reimu to nije mogue raditi pa
se izmene cuvaju lokalno u bazi oznacenoj kao CML (Client Modification Log). Po
uspostavljanju konekcije, Venus e poslati sadraj CML-a VSG-ovima na cije datoteke se izmene
odnose. Pri tome se nee izvriti ponitene izmene (datoteka koja je kreirana pa kasnije obrisana
nee izazvati nikakvu akciju). Problem koji se deava jeste to su se mogle dogoditi i druge
izmene nad istim datotekama pa se promene iz CML-a ne mogu izvriti. Na primer, vor u offline
18
modu kreira novu datoteku u jednom od direktorijuma ciju replikaciju poseduje. Operacija se
upisuje u CML. Medutim, u vremenu offline rada drugi vor kreira datoteku sa istim imenom. Po
ponovnom uspostavljanju veze, akciju iz CML baze nije mogue izvriti. Konflikti mogu biti i
usled promene strukture direktorijuma, uklanjanja datoteke, ali i konkurentnih upisa u istu
datoteku ili izmena istog direktorijuma. Neke situacije reavaju Vice i Venus komponente
odgovarajucih vorova u direktnoj komunikaciji, dok je za neke sloenije konflikte neophodna
akcija korisnika ili procesa. Sam mehanizam na krajnjem nivou je vrlo slican popularnom sistemu
kontrole konkurentnih verzija datoteka - CVS-u.

CODA sistem datoteka je namenjen velikim distribuiranim operativnim sistemima sa nekoliko
stotina do nekoliko hiljada klijenata u klasteru. Aktivno se koristi i razvija na Carnegie Mellon
univerzitetu, a pomi prua i veliko udruenje korisnika. CODA sistem se moe efikasno
iskoristiti i na drugim poljima, za FTP i WWW mirror, kao reenje za repikaciju bitnih podataka
na klasicnim operativnim sistemima i sl.

Lustre sistem datoteka

Ovo je primer distribuiranog sistema datoteka nove generacije, namenjenog velikim
distribuiranim sistemima, sa podrkom za desetine hiljada vorova i memorijom koja se meri u
petabajtima ( jedan petabajt ima 2
50
bajtova), velikim prenosnim brzinama, sistem datoteka koji
svojim dizajnom eliminie probleme performansi, dostupnosti, proirivosti. Lustre sistem
datoteka potpuno ostvaruje transparentnost lokacije, ne sadri jedinstvenu tacku oslonca sistema,
i ima visoku otpornost na greke.

Razvija se kao softver otvorenog koda (GNU GPL licenca), a pod pokroviteljstvom kompanije
Cluster File Systems, Inc. koja kao strateke partnere ima najbolje predstavnike raunarske
industrije (Dell, Cray, HP i drugi).

U novembru 2003. godine je izvreno testiranje Lustre sistema datoteka u jednom od
produkcionih okruenja gde se on danas koristi (Americka nacionalna agencija za razvoj
superraunara) i ostvareni rezultati su inpresivni. Operiuci nad 1000. vorova klastera, ostvaren
je paralelni ulaz/izlaz pri brzini od 11,1 GB podataka u sekudi, uz ostvareno 90% konstantno
opterecenje veze izmedu svih vorova!

Lustre sistem datoteka razdvaja fizicku lokaciju cuvanja podataka i metapodataka. Ulogu cuvanja
podataka i metapodataka preuzimaju grupe vorova, a generalizacijom je mogue postici i
potpunu distribuciju. Informacije o stanju datoteka na sistemu (pozicija pokazivaca u datoteci,
status zakljucavanja datoteke i sl.) se cuvaju zajedno sa podacima i njihovim replikacijama cime
se obezbeduje bolje snalaenje pri grekama.

Sistem se ne oslanja samo na Ethernet mrene slojeve, vec postoji sloj za apstrakciju mree iznad
koga stoji Portals API, specijalni mreni protokol. Na vrhu slojevitog modela se nalazi Lustre-ov
protokol komunikacije. Kao i ostale komponente Lustre sistema i protokoli komunikacije su laki
za integraciju u razlicita postojeca okruenja i standarde. Vec pomenute informacije o stanju
datoteka ali i informacije o samom Lustre DFS-u se cuvaju u standardizovanim formatima kao to
su XML i LDAP to olakava prelazak i dozvoljava korienje postojecih administracionih alata i
po prelasku na Lustre sistem datoteka.

Osnova predstavljanja datoteke je objekat koji se belei (kroz apstrakciju) na magnetne uredaje sa
stalnom memorijeom. Objekat se locira i objektu se pristupa na osnovu informacija o opisu
objekta sacuvanih na serverima koji cuvaju metapodatke (MDS). Ovi serveri podravaju sve
19
operacije nad prostorom imena datoteka, odnosno vie operacije nad objektima kao to su
kreiranje objekta, imenovanje i lociranje objekta, operacije nad atributima objekata i
direktorijuma, itd., dok se same ulazno izlazne operacije obavljaju nad objektno-baziranim
diskovima, odnosno danas kroz objektnu apstrakciju sa uredajima za spremanje podataka.


Ilustracija 17 Tokovi komunikacije izmedu komponenti Lustre sistema datoteka


Pojavom diskova koji na nivou hardvera podravaju osnovne operacije sa objektima, takozvanih
objektno-baziranih diskova (OBD) ubrzale bi se perfomanse Lustre sistema datoteka. Kompanija
Cluster File Systems pregovara sa proizvodacima i pojava ovakvih uredaja bi se mogla ocekivati
u buducnosti. Trenutno Lustre emulira ovakve uredaje kroz
specijalne kernel module u OST kernelima koji prave vezu izmedu OBD interfejsa i sistema
datoteka na klasicnim diskovima kao to su ex3, JFS, ReiserFS i XFS.

Razdvajanjem metapodataka i samih podataka (objekata) se pojavljuju novi slucajevi prestanka
funkcionalnosti pojedinih delova Lustre distribuiranog sistema datoteka, pa se distribuirana
LDAP baza sa listom dostupnih MDS ali i OST vorova mora stalno odravati. Takode
razdvajanjem se mogu dobiti prednosti u dostupnosti sistema jer se mnoge operacije mogu obaviti
interakcijom samo sa jednom grupom vorova, a ulazno-izlazna interakcija se obavlja bez
posrednika.

Poput AFS-a i CODA sistema datoteka, i Lustre koristi jedinstveni prostor imena, ali tacka
montiranja virtualne hijerarhije datoteka nije predefinisana vec se ona odreduje pomiu
konfiguracionih datoteka u samim direktorijumima koji predstavljaju tacku montiranja sistema
datoteka. Tako je mogue u Lustre sistem datoteka uklopiti postojee tacke montiranja drugih
sistema pa i drugih distribuiranih sistema datoteka, prepisati dio lokalnog stabla distribuiranim
stablom i slicno. U ubrzanja koja e se dodatno postici daljim razvojem Lustre sistema datoteka
spada podrka za asihroni upis u datoteke, naspram sadanjeg zahtev-odgovor modela. Dalje, u
planu je podrka za bolju distribuciju servera sa metapodacima koji su trenutno u redundantnoj
grupi vorova, umesto u ravnopravnoj distribuiranoj grupi. Pristup objektima se ureduje POSIX
ACL semantikom pristupnih lista koja je jako efikasna u okruenjima sa velikim brojem
korisnika. Lustre bi u buducnosti trebao da potpuno podrava Kerberos5 i PKI mehanizme kao
pozadinu autentifikacije. Transmisija podataka je obezbedena automatskom
enkripcijom/dekripcijom i metodom deljenih kljuceva.
20

Dalji razvoj Lustre-a se kree ka vecoj distribuciji, ka povecanju koliine keiranih i repliciranih
vrsta podataka i koliine samih takvih podataka. Takode, za novu verziju je predvidena pojava
prelomnih tacaka sistema (engl. breakpoint ili snapshot) na koje e se sistem moci vratiti u
svakom trenutku. Djelovi podataka za kreiranje prelomne tacke e biti ravnopravno raspodeljeni
na klijente, OST i MDS servere.

5. Sigurnost i viekorisniki rad

Distribuirani operativni sistemi najcee imaju veliki broj korisnika, veliku kolicinu vanih i
poverljivih podataka, komplikovanu organizaciju pristupa velikom broju uredaja itd. Pod pojmom
sigurnosti se podrazumeva nekoliko razlicitih stvari. Najpre, sigurnost podataka u distribuiranom
sistemu datoteka, odnosno obezbedenje da e podatke moci da vidi, koristi, izmeni i ukloni samo
onaj ko za to ima dozvolu. Dalje, sigurnost podrazumeva i zatitu radne memorije kako bi se
sprecila nasilna promena stanja distribuiranog operativnog sistema ili procesa koji se na njemu
izvravaju od strane treceg procesa. Pod istim pojmom se podrazumeva i uredenje korienja
resursa i uredaja (prostor u memoriji, adresni opseg, procesorsko vreme, ulazno izlazne jedinice i
sl.) od strane procesa i korisnika. Na kraju, sigurnost podrazumeva i zatitu od umetanja stranog
vora u klaster kako bi se sprecila krada informacija.

Osnovno pravilo u koncepciji bilo kog sigurnosnog sistema jeste ne verovati nikome i nicemu.
Mehanizmi sigurnosti su enkripcija, autentifikacija, autorizacija i zapisivanje i ispitivanje (engl.
auditing). Enkripcija je fundamentalni mehanizam sigurnosti nastao i pre pojave raunarskih
sistema. Pored onemogucavanja lakog pristupa samim podacima, moe posluiti i za proveru
integriteta i verodostojnosti samih podataka. Autentifikacija je prvi preduslov za izvravanje
usluge. Moe se posmatrati na nivou korisnika (prijavljivanje na sistem) i na nivou distribuiranog
operativnog sistema kada postoji autentifikacija procesa i samih vorova klastera. Nakon
autentifikacije, potrebno je izvriti proveru da li proces/korisnik/vor ima pravo korienja usluge
koju je zatraio to je proces sistema za autorizaciju. Na kraju, zapisivanje i ispitivanje se obavlja
kroz analizu zapisa sistema (engl. log). Iako ne predstavlja nikakvu stvarnu sigurnosnu zatitu ovi
zapisi (i njihova analiza) mogu pomii za spoznaju naina upada u sistem i pruaju eventualnu
mogucnost za otkrivanje pocinilaca.

Za obezbedivanje sigurne komunikacije esto nije dovoljna samo enkripcija, vec i autorizacija
puta poruke pre slanja podataka. Postoje situacije kada je dovoljno imati informaciju o kolicini
podataka, bez potrebe uvida u podatke. Karakteristican primer koji se esto navodi u literaturi
jeste sledeci slucaj: Za vreme nove svetske krize, kolicina informacija ka Beloj Kuci se smanjuje,
dok se istovremeno uvecava kolicina informacija upucena na lokaciju u Koloradu. Iako su poruke
pravilno enkriptovane, sama cinjenica o
postojanju komunikacije u ovom primeru isuvie mnogo govori.


Sama enkripcija moe biti simetricna, kada je kljuc za ifrovanje i deifrovanje poruke isti ili
asimetricna kada se oni razlikuju, ali zajedno ine jedinstveni par. Vrlo koristan je i metod
jednosmerne enkripcije (kada ne postoji mogucnost mogucnosti dekripcije). Koristi se prilikom
verifikacije samih podataka. Odlika funkcije za ovakvo ifrovanje jeste mala podudarnost, tj.
zanemariva verovatnoca da e f(m) biti isto to i f(n), za mVn.

Van okvira ovog rada je obrada konkretnih algoritama ifrovanja i deifrovanja jer bi to zahtevalo
preveliki odlazak u irinu. Napomenimo samo poznate algoritme kao to je DES za simetricnu
21
enkripciju, RSA za asimetricnu i izuzetno esto korieni MD5 algoritam jednosmerne enkripcije.
Svi pomenuti algoritmi su definisani RFC dokumentima, a njihove implementacije postoje na
svim programskim jezicima. esto se prakticnosti radi autentifikacijom najpre otvara sigurni
kanal komunikacije, a zatim kroz njega alju informacije bez potrebe za sloenijim algoritmima
enkripcije.

Spoljne karakteristike sistema sigurnosti (dozvola korienja podataka i datoteka) je lako
implementirati kada je prisutna sigurna komunikacija na nivou distribuiranog operativnog sistema
kao i naini za utvrdivanje indentiteta vora i procesa. U toku implementacije najpre se deskriptor
procesa proiruje za oznaku korisnika i grupe kojoj korisnik pripada. Dalje, deskriptor deljenog
resursa (ne ukljuujuci i distribuirane stranice memorije) se proiruje kako bi obuhvatio povezanu
listu korisnika koji mogu pristupiti resursu, kao i spisak grupa korisnika. U ovoj informaciji se
sadri i pravo pristupa koje se uporeduje sa zahtevanom operacijom i onda tek ako je zahtev
validan sistem prelazi na izvravanje operacije.

Zatita memorije se ne vezuje za korisnika vec za proces. U deskriptoru stranice memorije se
dopisuje informacija veza sa deksriptorom procesa koji je memoriju alocirao. Ukoliko DOS
podrava deljenu memoriju, zapisuje se povezana lista deskriptora i niti koji joj mogu pristupati.
Na osnovu ove informacije procesima se ne dozvoljava pristup memoriji koju nisu oni alocirali ili
im nije data eksplicitna dozvola da mogu da pristupe toj memoriji.

Same informacije o stanju prijave korisnika, pomenute proirene informacije deskriptora i sl. se
takode repliciraju i keiraju na sistemu, to je slucaj i sa samim i javnim i tajnim kljucevima
vorova. Ove informacije i pored validne autentifikacije vorova ipak ne mogu biti distribuirane
potpuno slobodno vec se poverljive informacije repliciraju samo na pojedine grupe vorova, a
sam nain tretmana ovih informacija je razlicit od sistema do sistema.

Kada se govori o industrijski priznatim i podranim sistemima (i standardima) sigurnosti koji
ukljuuju sve pomenute komponente treba svakako pomenuti Kerbreos i SESAME. Ipak,
uputanje u dizajn ovih sistema je isuvie nezahvalno zbog glomaznosti samih sistema. O
sistemima postoji velika kolicina literature i mogue je detaljno prouciti njihov rad bez potrebe za
preterani odlazak u irinu u ovom radu.

22
6. Dizajn Amoeba sistema

Prvi distribuirani operativni sistemi su se pojavljivali kao prilagodene
verzije vec postojecih mrenih operativnih sistema napravljeni za potrebe
konkretnih ciljeva, za rad na konkretnim klasterima. Takvi sistemi nisu
imali dovoljnu otvorenost, skalabilnost niti transparentnost.

Pojavom distribuiranih sistema iroke namene i razvojem modela distribuiranog programiranja,
pojavom prvih specifikacija standarda komunikacije, imenovanja i distribucije pojavljuju se i
distribuirani operativni sistemi nove generacije.

Nakon Multix-a i njemu slicnih sistema, u drugoj polovini osamdesetih godina se pojavljuje
Amoeba distribuirani sistem nove generacije koji se aktivno razvija do dananjih dana. Sistem
poseduje biblioteke za emulaciju POSIX specifikacije tako da se na njemu mogu ponovo prevesti
programi kompatibilni sa njom i normalno izvravati kao na ostalim Unix sistemima.

Amoeba sistem, po recima autora distribuirani operativni sistem nove generacije koji se
korisnicima uspeno predstavlja kao klasicni operativni sistem, potpuno skrivajuci samu
distribuciju, je baziran na distribuiranim objektima. Za komunikaciju koristi RPC (Remote
procedure calls). Sistem datoteka (FileSystem) je odvojen i posebno distribuiran, tako da moe
doci do uskog grla u komunikaciji izmedu vorova i sistema datoteka. Medutim, procesi na
distribuiranim operativnim sistemima nemaju veliko I/O opterecenje, a Amoeba poseduje
mehanizme koji takve procese izvravaju lokalno.

Amoeba sistem je nastao pre pojave CORBA i IDL specifikacija, ali on koristi slicnu
specifikaciju za definiciiju distribuiranih objekata AIL (Amoeba interface language).

Sistem koristi mikrokernel dizajn kernela, gde kernel poseduje samo minimalne sisteme
upravljanje memorijom, kreiranje procesa i niti, komunikaciju procesa i upravljanje lokalnim
resursima. Kreiranje udaljenih procesa se vri preko sistema za upravljanje procesima koji
obezbeduje kreiranje udaljenih procesa, ispravljanje greaka (debugging), postavljanje prelomnih
tacaka izvravanja (breakpointing), migraciju procesa i sl. Svi ostali djelovi distribuiranog
sistema se izvravaju kao korisniki procesi to pojednostavljuje dizajn sistema, bez dodatnih
gubitaka u performansama.

Izuzev emulacije POSIX specifikacije, Amoeba sistem ne kopira ni jedan drugi operativni sistem
i time izbegava da zbog pokuaja implementacije dizajna sistema druge namene ne uspe u svom
osnovno cilju stvaranja kvalitetnog i dovoljno brzog distribuiranog operativnog sistema opte
namene.

Svaki poziv za izvravanje odredene metode objekta se obavlja preko RPC toka komunikacije.
RPC model kod Amoeba sistema je vrlo jednostavan i sastoji se od tri sistemska poziva:
do_oper at i on, get _r equest i send_r epl y. Prvi sistemski poziv koristi proces koji
zahteva korienje udaljene procedure. Implementacijom se poziva sistem imenovanja, alje
zahtev, verifikuje potvrda prijema zahteva, i po prispecu odgovora isti dostavlja procesu kao
povratna vrednost. Drugi koristi proces koji eli da primi zahtev, a treci slui za slanje odgovora
nakon obavljene operacije.

Dakle, klijentski proces ili nit procesa koji poziva distribuirani proces alje zahtev lokalnom
sistemu procesa (sistemski poziv do_oper at i on) koji pokuava da locira vor na kome se
23
nalazi zahtevani proces (proces koji je pozvao poziv get _r equest ). Ukoliko sistem ne zna tu
informaciju, on e poslati broadcast paket na koji e odgovoriti sistem procesa koji poseduje dati
objekat ili vie njih kada e se izbornim algoritmom odabrati jedan. Informacija dobijena od
sistema imenovanja se pamti u keu u memoriji. Sada, kada je poznata lokacija objekta, alje se
RPC upit sacinjen od zaglavlja fiksne duine i samih parametara za poziv metode. Udaljeni vor
prima upit, poziva proces sa dobijenim parametrima i nakon izvravanja vraca odgovor sa
povratnim vrednostima, eventualno izmenjenim prvobitno prenetim parametrima (sistemski poziv
send_r epl y). Proces ili nit procesa koja je pozvala distribuirani proces dobija povratne
vrednosti kao da se metoda nalazila lokalno.

Da bi se dodatno olakalo korienje razvijen je i poseban vie RMI orijentisan interfejs koji
dozvoljava interakcije sa objektima.


Ilustracija 18 Arhitektura Amoeba sistema

Prilikom poziva get _r equest proces navodi prikljucak (port) na koji treba uputiti
do_oper at i on sistemski pozv. Port je 48-bitna vrednost i poznat je celom sistemu samo za
neke sistemske procedure (kao to je interakcija sa DFS-om) dok je za ostale procedure nepoznat.
Poznavanje porta je prvi uslov verifikacije prava poziva procedure. Drugi nivo sigurnosti u
Amoeba sistemu dodatno zabranjuje interakcije sa pojedinim objektima, bilo da je ona direktna ili
preko distribuirane procedure. Port ipak ne moe biti jedini mehanizam autentifikacije procesa jer
proces moe pokrenuti svoju distribuciju na portu koji je dat DFS-u pokuavajuci da se se
predstavi kao DFS ostatku sistema. Zato Amoeba implementira specijalno hardversko reenje za
enkripciju portova po principu razmene javnog i tajnog kljuca (F-box) kojim se ureduje koji
proces moe koristiti odredeni port.

Ovo reenje enkripcije porta se svodi na postojanje dva reprezenta samog porta, gde se drugi (P)
izracunava preko javno poznatog preslikavanja prvog reprezenta (G) koje ima osobinu da nije
mogue napraviti inverzno preslikavanje (hash algoritam enkripcije, poput popularnog RSA MD5
algoritma). vor koji prua neku proceduru prilikom prijave dobija vrednost G i izracunava
vrednost P. Vrednost G se cuva skriveno od ostatka sistema, dok se potencijalni klijenti
obavetavaju slanjem vrednosti P. Parametar poziva get_request je tajni kljuc G, gde F-box
izracunava javni kljuc P i ceka poruku za port P.
Kada poruka stigne, preusmerava se na proces koji prua uslugu deljenja procedure. Kako je G
strogo cuvan podatak, ni jedan zlonamerni proces ne moe koristiti isti port, niti ga na osnovu
javnog porta moe saznati. Svaki pokuaj zlonamernog procesa da oslukuje poruke za javni kljuc
P e rezultirati oslukivanjem za vrednou preslikavanja vrednosti P u P, to je beskorisno. U
daljem razvoju e se ovaj metod autentifikacije vorova i procesa proiriti na podrku za digitalne
potpise, odnosno javni i tajni kljuc za klijentske procese Amoeba distribuiranog sistema.
24

Sistem datoteka Amoeba sistema koristi strukturu usmerenog grafa za prikaz direktorijuma u
globalnom prostoru imena koji u hijerarhiji sadri i lokalni sistem datoteka montiran u jednom
direktorijumu. Direktorijum je reprezentovan kao objekat, a pristupa mu se RPC pozivima za
ulazak, pregled i brisanje. Uredivanje pristupa se obavlja pristupnim listama u korisnik/grupa
notaciji. Objekat direktorijuma moe sadrati reference na druge objekte cime se formira
pomenuti usmereni graf bilo ciklicnog ili razgranatog tipa. Pored referenci na direktorijume,
objekat direktorijuma sadri i referencu ka povezanoj listi refernci na datoteke. Amoeba-in sistem
datoteka ne podrava upis u postojee datoteke tako da ne postoje problemi prilikom replikacije.
Kada je potrebno kreirati novu datoteku, proces zahteva kreiranje novog objekta, zatim dostavlja
podatke i dodeljuje referencu novog objekta u povezanu listu nekog direktorijuma. Metapodaci su
smeteni unutar objekta i kreiraju se automatski.

Proces u Amoeba sistemu se ne moe simultano izvravati na vie od jednom voru. Deskriptor
procesa sadri indentifikaciju domacina, interfejs ka sistemu imenovanja ako je proces
distribuiran, deskriptore svih niti koje je proces pokrenuo kao i povezanu listu segmenata
memorije koje proces trenutno dri alocirane. Distribucija memorije jednog procesa nije
podrana. Kernel koji se ne nalazi u indentifikaciji domacina u deskriptoru procesa ili nije u
grupi koja je navedena ne moe izvriti taj proces niti moe izvriti njegovu lokalnu replikaciju.
Deskriptor niti dalje ukazuje na pokazivac na stek, vrednosti registara, stanje sistemskih poziva i
sl. Iako memorija nije distribuirana, alocirani segment memorije naveden u deskriptoru procesa
moe se replicirati na drugi vor koji je naveden u indentifikaciji domacina procesa ili na njega
premestiti ako se vri migracija procesa.

to se stanja procesa tice, proces moe biti zaglavljen ili pokrenut. Proces moe biti zaglavljen
spoljnim ili licnim zahtevom. Pri migraciji procesa on se prvo zaglavljuje, zatim
kreira njegova replikacija kao i replikacija svih niti, memorijskih segmenata, stanja i steka. Na
kraju originalni proces biva ubijen cime se zavrava migracija.

Iako po mnogim stvarima neobican sistem, sa manjkom podrke za na, primer virtualnu
memoriju, mogucnost parcijalnog upisa u datoteke na DFS-u, podrku za UNIX emulaciju na
binarnom nivou, pristupne liste naspram objektno opisanih mogucnosti i sl.,
Amoeba kernel je jednostavan i mali, jer ne prilagodava distribuirano okruenje klasicnim
operativnim sistemima vec funkcije OS-a prilagodava okruenju.

7. Dalji razvoj

Usko grlo dananjih distribuiranih operativnih sistema opte namene jeste samo njihovo
okruenje koje po brzini prenoenja informacija izmedu komponenti ne moe da se meri sa
unutarprocesorskom komunikacijom. Stoga se razvoj distribuiranih operativnih sistema danas
odvija na dva polja hardverskom gde se stvara nova, bra mrena infrastruktura i softverskom
gde se stvaraju bolji metodi komunikacije, kvalitetniji i efikasniji protokoli sa boljom kontrolom
greaka i sa manjom velicinom gubitaka po svakoj poruci kroz zaglavlja, kontrolne pakete i sl.

Razvoj vetacke inteligencije omoguava bolju primenu heuristike u odluivanju vezanom za
migraciju procesa pri distribuciji procesorskog vremena dok praksa koja se do sada stekla i stie u
distrisbuiranim operativnim sistemima sa prakticnom primenom omoguava bolji odabir
karakteristicnih vrednosti. Primenom dinamickog odabira vrednosti pojedinih faktora kroz
genetske algoritme i automatsko ucenje dodatno obezbeduje optimalnije performanse.

25
Iako veoma mlada grana u razvoju sistemskog softvera, ovakvi sistemi se mogu vec sada
pohvaliti dobrom upotrebnom vrednou, a uspeno se primenjuju u brojnim naucnim
istraivanjima za komplikovana i procesorsko-memorijski izuzetno zahtevna izracunavanja,
analize i obrade rezultata.

Distribuirani operativni sistemi nisu optereceni kocnicom kompatibilnosti jer predstavljaju
potpuno novi nain razmiljanja pri dizajniranju sistemskog softvera te se u narednom periodu
mogu ocekivati izvanredni, prvo teorijski, a onda i prakticni prodori u ovoj oblasti.


Miljenje autora ovog rada je da e zbog kvaliteta u dizajnu (proirivost, otpornost, geografska
nezavisnost delova i modularnost, a ipak visoka transparentnost) i samoj ideji distribucije resursa
unutar virtualnog sistema, distribuirani operativni sistemi svakako predstavljati jo dugo vremena
vrh razvoja sistemskog softvera kako na klasicnim arhitekturama tako i na mobilnim uredajima
koji bi cinili heterogeni otvoreni klaster uz obezbedivanje resursa na zahtev omoguavajuci
njihovo korienje svima u svakom trenutku.

Popis koriene literature
[1] Andrew Tanenbaum i Maarten van Steen:Distributed systems principes and paradigms, Pretince Hall,
2002.
[2] Raphael Finkel:An Operating System vade mecum, University of Wisconsin at Madison i Pretince Hall,
1988.
[3] David Hulse i Alan Dearle:Trends in operating systems design, University of Stirling, 1998.
[4] Andrew Tanenbrawn: Modern Operating Systems , Pretince Hall, 2002.
[5] OSKIT The Flux Operating system toolkit 0.97, University of Utah, 1997-2002.
[6] Cornelius Frank: Compiling kernel using C compiler, 2000.
[7] The Amoeba Distribuited operating System User Guide, Amoeba project, 1996.
[8] Intel Arhitecture Software Developer's Manual Volume 1 (Basic architecutre) , Intel, 2003.
[9] Pei Cao: Distributed File System: Design Comparisons, transkript predavanja
[10] Eliezer Levy i Abraham Silberschatz:
Distributed File Systems: Concepts and Examples, University of Texas at Austin, ACM
Computing Surveys, Decembar 1990.
[11] Lustre whitepaper, Cluster File Systems Inc., 2003.
26

You might also like