You are on page 1of 64

8

8.1

UPRAVLJNJE MEMORIJOM
UVOD

Memorija je jedna od temeljnih komponenata raunarskog sustava. Ona je veliko polje


okteta ili rijei koji imaju svaki svoju adresu. Procesor dohvata naredbe iz memorije u
ovisnosti o vrijednosti upisanoj u programsko brojilo. Naredbe mogu rezultirati dodatnim
pristupima memoriji kako bi se dohvatilo operande, odnosno pohranilo rezultate
operacija.
8.1.1 Generiranje adrese
Obino su programi zapisani na disku (ili nekoj drugoj neizbrisivoj memoriji) u binarnom
obliku (executable). Program se s diska upisuje u memoriju kako bi postao proces koje
se moe izvoditi. U zavisnosti o sustavu za upravljanje memorijom proces se moe i
tijekom obrade prebacivati iz radne memorije na disk i obratno. Skup procesa na disku
koji ekaju da budu upisani u memoriju naziva se ulazni red (input queue). Normalna
procedura se sastoji u odabiru jednog od procesa iz ulaznog reda i upisa tog procesa u
radnu memoriju. Tijekom izvoenja proces dohvata iz radne memorije naredbe i
podatke te u nju upisuje rezultate obrade. Po zavretku obrade memorijski prostor koji
je proces koristio proglaava se slobodnim.
Veina raunarskih sustava dozvoljava da se proces nalazi bilo gdje u radnoj memoriji.
Tako iako je poetak adresnog prostora raunala obino adresa 00000H, prva naredba
korisnikog procesa ne mora se nalaziti na toj adresi. U veini sluajeva korisniki
program prolazi kroz vie faza pripreme prije njegovog izvoenja (slika 8.1). Adrese se
razliito prikazuju u svakom od navedenih koraka. Adrese u izvornom programu obino
su simboliki prikazane kao npr. za simboliki programski odsjeak:
start.
mov
mov

al,$00H
bl,$0AH

petlja.
...
adrese su start i petlja. Program za tumaenje simbolikog jezika (assembler) ove
adrese vezuje (bind) s relativnim (relocatable) adresama (u odnosu na poetak
programa) Tako adresa start dobiva vrijednost 0000H, a adresa petlja 0004H (uz
pretpostavku da su naredbe duljine 2 okteta). Nakon punjenja programa u memoriju
programu se dodjeljuje stvarna, apsolutna adresa pa tako adresa pa tako npr. adresa
start dobiva vrijednost 10000H, a adresa petlja 10004H.
Praktiki dodjeljivanje (vezivanje) adresa naredbama i podacima mogue je realizirati u
bilo kojoj fazi pripreme programa za izvoenje:

Vrijeme prevoenja: Ukoliko je za vrijeme prevoenja poznata adresa lokacije od


koje e se upisivati program, tada se ve za vrijeme prevoenja generiraju apsolutne
adrese.

Vrijeme punjenje: Kod suvremenijih sustava za vrijeme prevoenja obino nije


poznato gdje e se upisati program. Tada program prevodilac generira relativne
adrese, a apsolutne se generiraju u trenutku upisivanja (punjenja) programa u radnu
memoriju. Ovakav pristup je fleksibilniji od prethodnog iz razloga to kod promjene
poloaja programa u memoriji (npr. prijenos programa s jednog raunala na drugo)
potrebno je samo ponovo upisati program u memoriju, a program punja automatski
mijenja apsolutne adrese. Program nije potrebno ponovo prevoditi.
1

Vrijeme izvoenja: U ovom sluaju mogue je da program mijenja svoje adrese i


tijekom izvoenja, odnosno prebacuje se iz jednog u drugo memorijsko podruje.
Posebna sklopovska podrka potrebna je za realizaciju ovakvog naina rada.
izvorni
program
(source)

program
prevodilac
(compiler,
assembler)

ostali
objektni
moduli

vrijeme
prevoenja

objektni
modul

povezivanje
(linkage
editor)

sistemska
biblioteka

dinamika
sistemska
biblioteka

izvedbeni
(load
module)

vrijeme
punjenja

punjenje
(loader)

memorijski
binarni
oblik
programa

vrijeme
izvoenja

Slika 8.1.: Priprema korisnikog programa za izvoenje.

8.1.2 Dinamiko punjenje


Bolje koritenje memorijskog prostora postie se dinamikim punjenjem (dinamic
loading). Kod ovakvog naina punjenja programa u memoriju potprogrami ili rutine
smjetene su na disku, a upisuju se u memoriju tek nakon to ih glavni program pozove.
Kod poziva potprograma, prvo se provjerava da li je potprogram u radnoj memoriji, a
ako nije poziva se program za dinamiko punjenje i povezivanje (relocatable linkage
editor) koji upisuje potprogram u memoriju te upisuje poetnu adresu potprograma u
tablicu adresa programa. Potom se izvoenje prosljeuje na pozvani potprogram.
Potprogrami ili procedure koje se nikad ne koristi ovim pristupom nikad nee biti
upisane u memoriju to je prednost dinamikog punjenja. Ovaj pristup posebice je
uinkovit kada veliki dio programskog paketa je posveen procedurama za otkrivanje i
otklanjanje pogreaka, a koje se rijetko dogaaju. Tako je programski kod koji se koristi
relativno mali iako je cijeli programski paket dosta velik.
Dinamiko punjenje ne postavlja posebne zahtjeve na sklopovlje raunala kao i
posebnu dodatnu podrku operacijskog sustava. Programer jedino mora poznavati
princip rada kako bi svoj program prilagodio ovom sustavi i iskoristio sve njegove
prednosti.
8.1.3 Dinamiko povezivanje
Na slici 8.1 prikazana je i biblioteka s programima koji se dinamiki mogu povezivati s
programom koji se izvodi (dynamically linked libraries). Veina operacijskih sustava
podrava samo statiko povezivanje (static linking) kod kojih se sistemske biblioteke
tretiraju identino ostalim objektnim modulima koji se povezuju u jedinstven program
koji program punja upisuje u radnu memoriju. Koncept dinamikog povezivanja slian
je konceptu dinamikog punjenja. Umjesto da se potprogrami ili procedure upisuju u
memoriju prema zahtjevu, isti se prema zahtjevu povezuju s programom koji se izvodi.
Ovo je posebice pogodno sa sistemskim bibliotekama. Prednost ovog pristupa u
poredbi s dinamikim punjenjem je u boljoj iskoristivosti radne memorije i diska jer nije
potrebno da svaki program ima sve procedure, odnosno da vie programa upisanih u
radnu memoriju, a koji koriste istu proceduru, imaju njenu kopiju. Kod dinamikog
povezivanja koristi mali segment koda (opuak engl. stub) koji pokazuje na sistemsku
proceduru koju program koristi. Ova procedura moe biti stalno upisana u memoriji
(resident) ili ju je potrebno upisati s diska.
Izvoenjem ovog koda prvo se provjerava da li je procedura ve prisutna u memoriji ili
ju je potrebno s diska upisati u memoriju. Nakon to je pozvana procedura pronaena ili
upisana u memoriju, stub se zamjenjuje s adresom poetka pozvane procedure te se
procedura izvodi. Sljedei put kada se ista procedura pozove ona se automatski izvodi
bez izvoenja stub-a, odnosno bez dodatnog vremena potrebnog za dinamiko
povezivanje. Prema opisanom postupku, bez obzira koliko programa koriste istu
proceduru iz sistemske biblioteke postoji u memoriji samo jedna kopija.
Prednost ovakvog pristupa je i u jednostavnijoj nadogradnji sustava. Naime,
dodavanjem novih verzija sistemskih biblioteka nije programe potrebno ponovo
povezivati budui se isto izvodi dinamiki.
Kao i kod dinamikog punjenja, dinamiko povezivanje zahtijeva uslugu operacijskog
sustava. Pod pretpostavkom da sustav izvodi istovremeno, konkurentno, vie programa
oni moraju meusobno biti zatieni od namjernih ili nenamjernih pogreaka. Jedan od
naina zatite je da se jednom programu ne dozvoljava pristup memorijskim lokacijama
drugog. Ali ukoliko dva programa koriste istu proceduru iz sistemske biblioteke tada
3

operacijski sustav dozvoljava razliitim programima pristup istim memorijskim


lokacijama.
8.1.4 Prekrivanje (overlay)
U razmatranjima koja su se provodila u prethodnim poglavljima pretpostavljeno je da se
cijeli program koji se izvodi nalazi u radnoj memoriji. Time je maksimalna dozvoljena
veliina programa odreena veliinom radne memorije to predstavlja ozbiljno
ogranienje. Mogue rjeenje problema je da se u radnoj memoriji dri samo dio
programa i podataka koji su trenutno potrebni. Kada su potrebni sljedei podaci kao i
program tada se iz memorije izbacuje prethodni dio programa i podataka, a novi se s
diska upisuju. Ova tehnika naziva se prekrivanje (overlay).
Kao primjer moe se uzeti program prevodilac simbolikog programa (assembler). Ovaj
program prevodi pomou dva prolaza kroz izvorni kod. U prvom prolazu stvara se
tablica simbola s odgovarajuim vrijednostima, dok se u drugom prolazu generira
izvedbeni kod. Ovaj program moe se podijeliti na dio koji generira tablicu simbola, dio
koji generira izvedbeni kod, zajednike procedure i tablicu simbola. Neka pojedini
dijelovi programa imaju sljedee memorijske zahtjeve:
prvi prolaz 70k
drugi prolaz 80k
tablica simbola
20k
zajednike procedure

30k

Ukoliko se program cjelovito izvodi potrebno je minimalno 200k glavne memorije.


Ukoliko sustav raspolae sa samo 150k radne memorije ovaj program nije mogue
izvesti. Analizom programa moe se primijetiti da nije potrebno istovremeno u memoriji
drati kod za prvi i drugi prolaz. Tako je praktino program mogue podijeliti na dva
podskupa (overlay), prvi koji ima kod za prvi prolaz, zajednike rutine i tablicu simbola i
drugi dio koji sadri kod za drugi prolaz, zajednike rutine i tablicu simbola. Prvi dio
zahtijeva 120k radne memorije, a drugi 130k. Ovim pristupom mogue je program
izvoditi sa samo 150k radne memorije. Naravno izvoenje programa biti e neto
sporije jer je potrebno dodatno upisivanje dijela programa u radnu memoriju. Slika 8.2
prikazuje ovakav pristup izvoenju programa.
Kao i dinamiko punjenje, ovakav pristup ne zahtijeva posebnu podrku od strane
operacijskog sustava. Njegova implementacija mogua je primjenom sustava datoteka.
Dio programa koji je potrebno naknadno izvesti upisuje se u memoriju preko datoteke
koja vie nije potrebna i izvoenje se nastavlja od njene poetne adrese kao to je
prikazano slikom 8.2. Naravno, zasebni algoritmi povezivanja (linking) i dodjeljivanja
apsolutnih adresa (relocation) potrebni su prilikom stvaranja modula.
Ovakav sustav s druge strane postavlja dodatne zahtjeve na programera. On mora
znati kako ovaj sustav funkcionira kako bi stvorio zasebne module.

tablica
simbola

20k

zajednike
procedure

30k

procedura za
upis dijela programa
(overlay driver)

10k

70k
kod za
prvi
prolaz

80k

kod za
drugi
prolaz

Slika 8.2: Program prevodilac simbolikog jezika realiziran u dva modula (overlay).
8.2

Logiki i fiziki adresni prostor

Adrese koje se koriste u izvornom programu su simbolike. Nakon prevoenja i


povezivanja program sadri logike adrese. Adresa u memoriji, odnosno adresa koju
vidi sklop za upravljanje memorijom (Memory Management Unit ili MMU) nazivaju se
fizike adrese.
Za vrijeme prevoenja i povezivanja logike i fizike adrese su jednake. Tijekom
izvoenja, transformacija adresa rezultira u razliitim fizikim i logikim adresama. U
tom sluaju logike adrese nazivaju se virtualne adrese. Sukladno navedenim
definicijama, adresni prostor koji koristi program prije punjenja u memoriju naziva se
logiki adresni prostor koji za vrijeme izvoenja (nakon punjenja u memoriju) prelazi u
fiziki adresni prostor. Tako za vrijeme izvoenja, logiki i fiziki adresni prostori se
razlikuju.
Funkciju preslikavanja iz logikog u fiziki adresni prostor realizira zasebno sklopovlje
nazvano sklop za upravljanje memorijom (memory management unit). Naravno, postoje
brojna rjeenja ove funkcije koja e biti obrazloena u sljedeim razmatranjima. Kao
primjer na slici 8.3 prikazan je sustav za generiranje fizikih adresa temeljom logikih
adresa kod procesora Intel 80x86. Logike adrese programa poinju od adrese 0000H
do FFFFH. One se preslikavaju linearno dodavanjem logikoj adresi sadraja baznog
spremnika pomaknutog za etiri mjesta u lijevo (pomnoen s 16). Ovim pristupom
logiki adresni prostor od 64k koji vidi korisnik, a koji poinje na adresi 0000H,
preslikava se u fiziki adresni prostor unutar 1M, a koji poinje na adresi koju odreuje
bazni spremnik.

15

0
OFFSET

15

0
SEGMENT

0000

20 BITA

ADRESA
SEGMENTA

16 BITA

ZBRAJALO

A 19 - A 0
20 BITA
FIZIKA ADRESA

Slika 8.3: Odreivanje apsolutne adrese kod procesora I80x86.


Koncept preslikavanja logikog u fiziki adresni prostor temelj je sljedeih razmatranja i
znaajan je za uinkovito koritenje raunarskog sustava.
8.3

Prebacivanje (swapping)

Proces se moe izvoditi samo ako se nalazi u radnoj memoriji. U vie programskoj
sredini koja ima tendenciju da uinkovito iskoristi resurse raunala, vie procesa
mogue je konkurentno izvoditi tako da se proces koji se izvodi upie u memoriju, a
kada se prekida s njegovim izvoenjem (temeljom razliitih dogaaja koji rezultiraju
gubitkom prava koritenja procesora) on se zamijeni s drugim procesom s diska. Npr.
ukoliko jednom procesu koji se izvodi istekne dodijeljeni kvant vremena, proces se
prebacuje na disk. Time se oslobaa radna memorija, a u memoriju se upisuje jedan od
procesa iz reda pripravnih (ovisno o algoritmu dodjele procesora), slika 8.4.

radna memorija
operacijski
sustav

disk
izbaen
proces P1

korisniki
prostor
upisan

proces P2

Slika 8.4: Dodjela memorije prebacivanjem (swapping).


6

Ovakav pristup rjeavanja dodjele memorije u vie procesnom sustavu jednostavan je


za implementaciju uz nedostatak to je vrijeme prebacivanja (context-switch) relativno
veliko. Kao primjer moe se uzeti zamjena dvaju programa iste veliine od 100k. Neka
sustav koristi disk prosjenog vremena pristupa od 15ms te brzine prijenosa 10M/s.
Ukupno vrijeme zamjene iznosi:
Tzamjene Tpristua P1 Tprijenosa P1 Tpristua P 2 Tprijenosa P 2 15

100
100
15
50ms .
10
10

Zamjena procesa zamiljena je s ciljem poveanja iskoristivosti raunalnog sustava. Ali


ukoliko je vrijeme zamjene reda veliine vremena obrade pojedinog procesa, to vrijedi
za ovaj primjer, tada je ovakav pristup neprihvatljiv.
Dodatan problem je to proces da bi bio izbaen iz radne memorije mora biti potpuno
neaktivan. Naime, ukoliko je proces zahtijevao U/I operaciju, a zatim je izbaen iz
memorije, podaci koji se prosljeuju ili dolaze s U/I ureaja prepisani su odnosno
pripadaju drugom procesu. Zato je potrebno da proces obavi U/I operaciju a tek onda
da bude zamijenjen. Time je dodatno naruen koncept vieprocesnog rada.
Kao posljedica navedenih nedostataka ovakav pristup praktiki se ne koristi u
dananjim raunalnim sustavima. Ali on je posluio kao polazite novijim, sofisticiranijim
algoritmima za dodjelu i upravljanje radnom memorijom.
8.4

Kontinuirana dodjela memorije, dodjela po particijama

U glavnoj memoriji nalazi se operacijski sustav i korisniki program. Tako kod


najjednostavnijih sustava memorija se dijeli na dva dijela, jedan koji koristi operacijski
sustav, a drugi koji koristi korisniki program ili programe, slika 8.5. Operacijski sustav
moe se nalaziti ili na memorijskim lokacijama s najniim ili najviim adresama to ovisi
o sklopovskoj realizaciji sustava. Kod nekih operacijskih sustava, kao to je npr. MSDOS dio operacijskog sustava postavljen je na najvie memorijske adrese, a drugi dio
na najnie. Ovo je opet rezultat sklopovskih rjeenja samog raunala. Dio operacijskog
sustava upisan je u neizbrisivoj memoriji (ROMu), a ostatak u RAMu. Ovakvo rjeenje
osigurava veu fleksibilnost raunarskog sustava na nain da se osnovni operacijski
sustav nalazi u ROMu, a u RAMu sve to je podlono promjenama sustava (pogonski
programi za tipkovnicu, mia, disketnu jedinicu, magnetski disk, optiki disk, itd.).
0

operacijski
sustav

korisniki
prostor

slobodna
memorija

512k

Slika 8.4: Podjela memorije.

8.4.1 Sustav s jednom particijom


Neka se operacijski sustav nalazi na niim adresama, a vie adrese koristi korisniki
program. U memoriji moe se nalaziti samo jedan korisniki program.
Logike adrese korisnikog programa potrebno je linearno pomaknuti kako bi se stvorile
fizike adrese. Kako je ve opisano ovo je mogue realizirati u razliitim fazama
pripreme programa za izvoenje. Najjednostavnije je fizike adrese generirati tijekom
povezivanja programa. Ukoliko doe do promjena u veliini operacijskog sustava tada
se program mora ponovo povezivati to je neprikladno. Bolje rjeenje je fizike adrese
generirati za vrijeme punjenja programa u memoriju. Program punja zna poetnu
adresu programa i preslikava logike adrese u fizike. Kako operacijski sustavi mogu
dinamiki tijekom rada mijenjati svoju veliinu (npr. kao posljedica meuspremnika U/I
operacija) tada ni ovaj pristup nije prihvatljiv. Poboljanje se postie dodatnim
sklopovljem koje je prikazano na slici 8.5.
granini
spremnik

CPU

logika
adresa

bazni
spremnik

da

<

fizika
adresa

memorija

ne

pogreka, prekid

Slika 8.6: Sklopovska podrka generiranju fizike adrese linearnim pomakom logike
adrese.
Sklop za upravljanje memorijom prvo provjerava da li je logika adresa unutar
dozvoljene granice, a zatim se logika adresa pomie za iznos baznog spremnika.
Ukoliko logika adresa nije unutar dozvoljene granice generira se procesoru prekid.
Ovakav sklop za upravljanje memorijom omoguava da se mijenja veliina operacijskog
sustava. Naime, ukoliko se uspostavi da raspoloiva memorija je nedostatna
korisnikom programu, mogue je iz memorije izbaciti dio operacijskog sustava koji je
nepotreban i time osloboditi dodatni memorijski prostor.
8.4.2 Sustav s vie particija
Kod sustava s jednom particijom, ukoliko se implementira vieprocesni rad, potrebno je
prilikom promjene konteksta izbacivati prekinuti proces na disk i upisati drugi u radnu
memoriju (swapping). Kako je ve objanjeno ovakav pristup zahtijeva neprihvatljivo
veliko vrijeme izmjene konteksta. Kako su u meuvremenu znaajno poveani
kapaciteti glavne memorije nametnulo se rjeenje podjele memorije na vie dijelova,
particija. U svakoj particiji smjeta se po jedan korisniki proces. Stupanj
vieprogramskog rada odreen je brojem particija. Korisnik kada starta svoj program,
njega operacijski sustav postavlja na disk kao proces koji je prihvaen na obradu ali nije
jo dobio pravo da se natjee za koritenje procesora (izvoenje). Kada se oslobodi u
8

sustavu jedna memorijska particija, program se upisuje u nju i postaje proces koji moe
dobiti pravo koritenja procesora. Po zavretku obrade proces se izbacuje iz memorije i
slobodna particija dodjeljuje se sljedeem procesu koji eka na disku.
Broj particija moe biti konstantan ili promjenjiv. Svaka particija sadri jedan jedinstveni
proces. U prvobitnim verzijama koristio se konstantan broj particija, a svaka particija
imala je svoj vlastiti red ekanja na disku (long term scheduler), slika 8.7. Procesi su se
pripremali za odreenu particiju u ovisnosti o njegovim memorijskim zahtjevima. Zahtjev
za memorijom je odreivao korisnik ili se proraunavalo automatski. Za napomenuti je
da su se u to vrijeme koristili primarno statiki programski jezici koji nisu mogli
zahtijevati dodatnu memoriju tijekom izvoenja (FORTRAN).

operacijski
sustav
2k 1k
5k

2k

2k 1k

6k

10k

3k

7k

16k

2k

2k particija
6k particija

12k particija

24k particija

Slika 8.7.: Memorijski sustav s 4 particije fiksne veliine.


Procesi pripremljeni za odreenu particiju nisu se mogli izvoditi u drugim particijama, jer
je program punja odreivao fizike adrese. Zato se ovakav nain dodjele memorije
naziva statika dodjela memorije.
Procesi upisani u memoriju dijelili su resurse sustava i izvodili su se paralelno. Koji od
procesa je trenutno aktivan odreivao je sustav za upravljanje radom procesora, opisan
u poglavlju 5. Izbacivanje procesa iz jedne particije na disk i upis novog procesa na
njegovo mjesto, odvijalo se paralelno radu procesora. Procesor bi obraivao proces iz
druge particije dok bi operaciju zamjene obavljao U/I procesor.
Ovakav nain dodjele memorije koristio se kod IBM 360 raunala i poznat je pod
nazivom OS/MFT (Multiprogramming with Fixed number of Tasks) sa zasebnim redom
ekanja za svaku pojedinu particiju. Ovakav pristup dodjeli memorije nije vie u uporabi,
a primarno se koristio kod operacijskih sustava sa skupnom obradom.
9

Ovakav sustav zahtijevao je i dodatnu zatitu kao se korisnici ne bi meusobno


ugroavali i da ne bi ugroavali operacijski sustav. Uvedenena je kontrola donje i gornje
granice memorijskog prostora koje smije koristiti svaki pojedini proces. Ove granice
odreene su particijom koje proces koristi.
donja
granica

CPU

fizika
adresa

>

gornja
granica

da
ne

pogreka, prekid

fizika
adresa

<

da

memorija

ne

pogreka, prekid

Slika 8.8.: Provjera granica fizike adrese.


Nedostatak ovog rjeenja je to bi u praksi znale neke particije biti prazne dok bi za
druge postojali povei redovi ekanja. Ovo je naroito bio sluaj kada bi operater
pogreno procijenio veliine particija. Takoer ukoliko je program bio toliki da nije
mogao stati u ni jednu particiju (sustav ima za taj program dovoljno radne memorije)
moralo se podnositi poseban zahtjev operateru kako bi se mogao izvesti navedeni
program.
Bolje rjeenje je sustav za upravljanje memorijom s promjenjivim brojem particija.
Operacijski sustav vodi evidenciju o zauzetoj i slobodnoj memoriji. Kod ovog pristupa
poetno je cijeli korisniki memorijski prostor tretiran kao jedna particija. Prvi proces koji
se prihvati na obradu dobiva na koritenje onoliko memorijskog prostora koji mu je
potreban, koji je smjeten odmah iznad operacijskog sustava, te taj prostor operacijski
sustav biljei kao zauzet. Prihvaanjem sljedeeg procesa operacijski sustav ispituje da
li je raspoloivi slobodni prostor dovoljan za ovaj proces i ako je njemu dodjeljuje prostor
odmah iza prvog procesa. Ovaj postupak se nastavlja dok se mogu zadovoljiti zahtjevi
dolazeih procesa. Kada u meuvremenu neki od procesa zavri s obradom, oslobaa
se memorija koju je on zauzimao i ona se moe dodijeliti drugom procesu.
Princip rada , te problemi koji se susreu kod ovakvog sustava za upravljanje
memorijom pojasniti e se na sljedeem primjeru. Neka sustav ima na raspolaganju
2560k memorije od koje operacijski sustav koristi 400k. Korisniku je znai na
raspolaganju ostalo 2160k memorije. Neka sustav prihvati na obradu procese P 1 P5,
trajanja upisanog u tablici na slici 8.9. i neka se za dodjelu procesora koristi Roun-Robin
algoritam s vremenskim kvantom 1. Sustav za prihvat poslova na obradu u memoriju e
prvo upisati proces P1 i zapoeti s njegovim izvoenjem. U tom trenutku zauzeto je
1000k memorije, a slobodno 1560k. Paralelno izvoenju procesa P 1 upisati e se u
slobodnu memoriju i proces P2 iji zahtjevi na memoriju su manji od slobodnih
kapaciteta. Sada je zauzeto 2000k memorije, a slobodno 560k. Slobodan prostor
dovoljan je da se upie proces P3 nakon ega ostaje slobodno svega 260k memorije to
nije dovoljno da se upiu sljedei procesi, slika 8.10.a).
10

0
400k

red procesa
prihvaenih na obradu

operacijski
sustav

proces
P1
P2
P3
P4
P5

2160k

2560k

memorijski
zahtjevi

trajanje

600k
1000k
300k
700k
500k

10
5
20
8
15

radna memorija

Slika 8.9: Primjer za sustav za upravljanje memorijom s promjenjivim brojem particija.


Procesi upisani u memoriju, P1, P2 i P3 izvoditi e se naizmjenino, a prvi e zavriti
proces P2 nakon 14 vremenskih jedinica i osloboditi e zauzetu memoriju, slika 8.10.b).
Na slobodno mjesto upisati e se proces P4, slika 8.10.c). Nakon 28 vremenskih
jedinica zavriti e proces P1 i osloboditi zauzetu memoriju, slika 8.10.d). Na slobodno
mjesto upisati e se proces P5, slika 8.10.e).

400k

operacijski
sustav

400k

operacijski
sustav

400k

operacijski
sustav

400k

operacijski
sustav

P1

P1

P1

P1

400k

operacijski
sustav

P5

zavrio

ulazi

P5

900k
1000k

1000k

1000k

P2

2
zavrio

4
ulazi

1000k

P4

1700k
2000k
2300k

P3

2560k

2000k
2300k

P3

2560k

a)

2000k
2300k

P4
1700k

P3

2560k

b)

1000k

2000k
2300k

1700k

P3

2560k

c)

P4

2000k
2300k

P3

2560k

d)

e)

Slika 8.10: Dodjela memorije i prihvaanje procesa na obradu.


Pomou ovog primjera mogue je ilustrirati odreena svojstva opisanog sustava za
dodjelu memorije. Proces prihvaen na obradu upisuje se u memoriju kada je u
memoriji slobodan segment (particija) vei od memorijskih zahtjeva samog programa.
Programi upisani u memoriju konkurentno se izvode. Kada program zavri s izvoenjem
oslobaa zauzetu memoriju.
U ovakvom sustavu dodjele memorije privilegirani su manji programi. Naime, s
vremenom u memoriji se nalazi vei broj manjih programa koji su neravnomjerno
rasporeeni, a takoer i vei broj slobodnih mjesta manjeg kapaciteta, tzv. upljina, koji
su takoer razbacani po memoriji. Vei programi se ne mogu upisati u memoriju jer ne
11

postoji kontinuirani slobodni prostor potrebne veliine iako je ukupna slobodna memorija
dovoljna. Ovaj problem naziva se fragmentacija memorije. Uz nju je povezan i sljedei
problem. Neka postoji vie (m) slobodnih segmenata u koji se moe upisati sljedei
proces. Postavlja se pitanje koji od njih odabrati. Mogua su sljedea rjeenja:

Prvi koji zadovoljava (first-fit): Procesu se dodjeljuje prvi segment koji zadovoljava
postavljene memorijske zahtjeve. Obino pretraivanje poinje od poetka liste
slobodnih segmenata ili se nastavlja od mjesta gdje je prethodno ispitivanje
zaustavljeno.

Najbolje poklapanje (best-fit): Procesu se dodjeljuje onaj segment koji nabolje


odgovara njegovim memorijskim zahtjevima. Iako na prvi pogled ovim pristupom se
najbolje iskoritava slobodna memorija, rezultat je stvaranje malih segmenata,
upljina, koji su posljedica razlike veliine segmenta i programa.

Najloije poklapanje (worst-fit): Procesu se dodjeljuje najvei slobodni segment.


Ovaj algoritam ima za cilj stvaranje to veih upljina, suprotno prethodnom
algoritmu.

Provedene simulacije pokazale su da su prva dva algoritma bolja od posljednjeg u


smislu bolje iskoristivosti memorije kao i prosjenog vremena izvoenja procesa.
8.4.3 Vanjska i unutarnja fragmentacija
Kao to je ve opisano kako se procesi upisuju te izbacuju iz memorije slobodna
memorija razbija se u manje segmente. Tako s vremenom iako je ukupna veliina
slobodne memorije dovoljna da prihvati nove procese to nije mogue iz razloga to ne
postoje dovoljno velika kontinuirana podruja. To se naziva vanjska fragmentacija
memorije. Prema primjeru na slici 8.10.a) ukupna vanjska fragmentacija iznosi 260k i
odnosi se na samo jednu upljinu. Na slici 8.10.c) ukupna vanjska fragmentacija iznosi
560k (300k+260k) i ovaj prostor bio bi dostatan za upis procesa P 5 veliine od 500k da
se radi o kontinuiranom segmentu.
Fragmentacija moe postati ozbiljan problem koji znaajno umanjuje uinkovitost
sustava. U najgorem sluaju mogue je da se izmeu svih procesa nalazi upljina, koja
bi, kada bi se spojila u jedinstvenu cjelinu, bila dostatna za obradu nekoliko dodatnih
procesa. Algoritam za odabir slobodne particije u koju e se smjestiti novi proces, prvi
koji zadovoljava, najbolje poklapanje ili najgore poklapanje, znaajnu utjee na stupanj
fragmentacije. Statistike analize za algoritam prvi koji zadovoljava pokazuju da
ukoliko je dodijeljeno N memoriskih blokova, prosjeno je 0.5N blokova neiskoriteno
kao posljedica fragmentacije. Ova analiza govori da je praktiki treina memorije
niskoritena. Ovo svojstvo poznato je pod nazivom 50% pravilo.
Kod dodjele memorije susree se i sljedei problem. Pretpostavimo da postoji slobodan
memorijski blok veliine 18,464 okteta, a program zahtjeva 18,460 okteta. Tada je
razumno dodijeliti programu cijeli blok, bez obzira to e 4 okteta ostati neiskoriteno.
Ovo je bolje nego da ta etiri okteta tvore slobodan oktet za koji je potrebno voditi
evidenciju u operacijskom sustavu. Tako dodijeljena memorija moe biti vea od
memorije koju zahtjeva proces. Razlika u zahtjevanoj i dodijeljenoj memoriji naziva se
unutarnja fragmentacija, koja je praktiki zanemariva u usporedbi s vanjskom.
Problem vanjske fragmentacije rjeava se premjetanjem procesa i spajanjem
slobodnih blokova u jedan kontinuirani blok (compaction). Tako u primjeru na slici
8.10.e) spajanje se moe izvesti premjetanjem procesa P 3 i P4 kao to je prikazano
slikom 8.11.

12

operacijski
sustav
400k

operacijski
sustav
400k

P5

P5

900k

900k

1000k

spajanje

P4

P4
1600k
1700k

P3
1900k

2000k
2300k
2560k

P3
2560k

Slika 8.11: Spajanje slobodnih memorijskih segmenata.


Spajanje nije uvijek mogue provesti. Prema slici 8.11. moe se primijetiti da su procesi
P4 i P3 premjeteni. Ovo nije mogue uiniti ukoliko su apsolutne, odnosno fizike
adrese ovih procesa generirane za vrijeme pripreme programa za izvoenje ili za
vrijeme punjenja. Realizacija spajanja mogua je jedino ukoliko se fizike adrese
generiraju dinamiki, odnosno za vrijeme izvoenja programa. Kada se fizike adrese
generiraju dinamiki, potrebno je samo premjestiti procese i promijeniti sadraje baznih
spremnika.
Spajanje slobodnih memorijskih blokova premjetanjem svih procesa prema jednom
kraju memorije rezultira u nepotrebno velikom utroku vremena. Zato je potrebno
paljivo odrediti postupak spajanja slobodnih blokova. Primjer je prikazan na slici 8.12.
Ukoliko se svi procesi prema redoslijedu pomiu prema manjim memorijskim lokacijama
potrebno je premjestiti 600k koda i podataka. U drugom sluaju moe se zakljuiti da je
potrebno prebaciti samo proces P4 da bi se dobila ista situacija. Tada je premjeteno
samo 400k koda. Detaljnijim ispitivanjem moe se zakljuiti da je dovoljno premjestiti
proces P3 na vrh memorijskog prostora. U posljednjem sluaju premjeta se samo 200k
koda i podataka. Primjer pokazuje sloenost odabira optimalne strategije spajanja
slobodnih memorijskih blokova.

13

300k
500k
600k

1200k

operacijski
sustav

300k

P1
P2
400k

1000k

operacijski
sustav

P3

500k

operacijski
sustav

300k

P1

600k

P2

800k

P3
P4

1200k

500k
600k

operacijski
sustav

300k

P1
P2

500k
600k

P1
P2

P4
1000k
1200k

P3

1000k

900k

1200k

300k
1500k

1500k

P4

900k

1900k

200k
2560k
2560k
polazna dodjela
prebaeno
memorije
600k

P4

900k
1900k
2560k

prebaeno
400k

2560k

P3
prebaeno
200k

Slika 8.12: Primjeri razliitih strategija spajanja slobodnih memorijskih blokova.


8.5

Stranienje (paging)

Mogue rjeenje problema fragmentacije je da se dozvoli da proces ne mora biti upisan


u kontinuirani memorijski blok. Program moe biti raspren proizvoljno po memoriji.
8.5.1 Princip dodjele memorije po stranicama
Radna memorija dijeli se na manje blokove fiksne veliine koji se nazivaju okviri
(frames). Logiki adresni prostor programa takoer se podjeli na blokove iste veliine
koji se nazivaju stranice (pages). Kada se program upie u memoriju stranice se upisuju
u slobodne memorijske okvire. Radi jednostavnosti prebacivanja programa s diska u
radnu memoriju i disk je podijeljen na okvire jednake veliine kao i okviri memorije. Tako
se jedan okvir s diska upisuje u jedan okvir radne memorije.
Sklopovlje koje podrava ovakav pristup dodjeli memorije prikazano je na slici 8.13.
Adresa koju generira procesor dijeli se na dva dijela: broj stranice () p i pomak unutar
stranice (page offset) d. Broj stranice je indeks (pokaziva) na redak tablice stranica. U
tablici stranica upisane su poetne adrese okvira u kojima je smjetena stranica.
Kombinacija poetne adrese okvira i pomaka odreuje fiziku adresu memorijske
lokacije kojoj se pristupa.
Veliine stranica variraju od sustava do sustava i obino su izmeu 512 okteta i 8192
okteta i uvijek su potencija broja dva. Ovakvim pristupom jednostavno je podijeliti
logiku adresu na broj stranice i pomak unutar stranice. Za n bitovnu logiku adresu
n
m
m

p
d
b
r
o
js
t
r
a
n
i
c
e p
o
m
a
k
n-m bita veeg znaenja odreuje broj stranice, a m bita manjeg znaenja pomak.
14

logika
adresa
p
d

CPU

fizika
adresa
f

tablica stranica

radna
memorija

p
f

Slika 8.13: Sklopovlje za dodjeljivanje memorije po stranicama.


Model dodjele memorije po stranicama prikazan je slikom 8.14.
logika
memorija

tablica
stranica

stranica 0
stranica 1
stranica 2
stranica 3

broj
okvira
0

memorija

stranica 0

2
3

stranica 2

stranica 3

5
6
7

stranica 4

Slika 8.14: Model dodjele memorije po stranicama.


Dodjela memorije po stranicama oblik je dinamike dodjele memorije. Sklopovlje vezuje
svaku logiku adresu na odreenu fiziku adresu. Tablica stranica je vie baznih
spremnika.
Primjenom dodjele memorije po stranicama nestaje efekt vanjske fragmentacije radne
memorije. Svaki okvir moe biti dodijeljen procesu koji ga treba. Naravno postoji
problem unutarnje fragmentacije budui da se okviri dodjeljuju kao cjeline. Tako se
deava da je posljednji okvir nepopunjen. Npr. ukoliko su stranice veliine 2048 okteta,
a proces zahtjeva 72,766 okteta, njemu e se dodijeliti 36 okvira od kojih e 35 biti
15

potpuno popunjeno, a u posljednjem e se nalaziti 1086 okteta. Rezultat je unutarnja


fragmentacija posljednjeg okvira od 2048 1086 = 962 okteta. U najgorem sluaju
unutarnja fragmentacija iznosi veliina okvira 1 oktet, a moe se oekivati prosjena u
iznosu polovice veliine okvira. Sa stajalita unutarnje fragmentacije povoljnije je da su
okviri manje veliine. Dananji sustavi koriste okvire veliine izmeu 2k i 4k. Mora se
napomenuti da je problem unutarnje fregmentacije sa stajalita iskoristivosti memorije
praktiki zanemariv.
Sustav za dodjelu memorije po stranicama djeluje na sljedei nain: Kad se program
prihvati na izvoenje izrauna se potreban broj okvira i usporeuje se s brojem
slobodnih okvira u memoriji. Ukoliko je slobodan dovoljan broj okvira proces se upisuje
u memoriju stranicu po stranicu. Istovremeno se za svaku stranicu u tablici stranica
upisuje i broj okvira u koji je ona upisana. Ovaj proces prikazan je na slici 8.15.
lista slobodnih
okvira
14
13
18
20
15

lista slobodnih
okvira
14

11
12
13
14

stranica 1

14

stranica 0

17
18

novi procesi

18

19

16
17
stranica 2

19

20
21
22

a)

13
15

16

novi procesi

12

stranica 0
stranica 1
stranica 2
stranica 3

15

stranica 0
stranica 1
stranica 2
stranica 3

11

b)

14

13

18

20

20

stranica 3

21
22

tablica stranica

Slika 8.15: Slobodni okviri; a) prije dodjele; b) poslije dodjele memorije procesu.
Kod sustava za dodjelu memorije po stranicama vano je razluiti izmeu korisnikog
vienja memorije koju program koristi i stvarne fizike memorije koja se koristi tijekom
njegovog izvoenja. Korisnik vidi memoriju koju zahtijeva program kao kontinuirani
prostor, dok je stvarni program kao i podaci razbacani po fizikoj memoriji. Razliku
izmeu korisnikog vienja memorije i stvarnog koritenja memorije tvori sklopovlje za
preslikavanje adresa. Preslikavanje logikog u fiziki adresni prostor transparentno je
(skriveno) za korisnika. Takoer, vano je primijetiti da korisniki program nije u
mogunosti pristupati memorijskim lokacijama izvan svoje tablica stranica. Time je i
realizirana zatita meu programima.
Upravljanje memorijom je u nadlenosti operacijskog sustava. On mora voditi evidenciju
o stanju memorije: koji su okviri zauzeti, koji proces koristi pojedine okvire koji su okviri
slobodni. Ovi podatci obino se pohranjuje u tablici nazvanoj tablica okvira (frame
table). Ova tablica ima redak za svaki okvir koji pokazuje da li je okvir slobodan ili ne i
ako nije koji ga proces ili procesi koriste.
Korisniki proces izvodi se u korisnikom adresnom prostoru. Ukoliko proces izvodi
sistemski poziv (npr. U/I operaciju) i prosljeuje sistemskom pozivu adresu kao
16

parametar, operacijski sustav se mora pobrinuti da se adresa ispravno preslika kako bi


se proslijedila ispravna fizika adresa. Operacijski sustav odrava kopiju tablice stranica
na isti nain kao to odrava kopiju programskog brojila i sadraje spremnika. To je
razlog da ovakav sustav za dodjelu i upravljanje memorijom poveava vrijeme izmjene
konteksta.
8.5.2 Struktura tablice stranica
Svaki operacijski sustav koristi vlastiti pristup za pohranu tablice stranica. Veina
dodjeljuje svakom procesu vlastitu tablicu stranica. Pokaziva na nju sastavni je dio
deskriptora procesa slino kao i sadraj programskog brojila i spremnika. Kada se
proces prebacuje iz stanja pasivan u stanje aktivan potrebno je upisati tablicu stranica
procesa u sklopovlje jedinice za upravljanje memorijom. To je i razlog znatnog
poveanja vremena izmjene konteksta.
8.5.2.1 Sklopovska podrka sustavu za dodjelu memorije po stranicama
Tablicu stranica mogue je sklopovski ostvariti na vie naina. Najjednostavnije je
tablicu stranica implementirati kao skup posebnih spremnika. Ovi spremnici moraju biti
brzi kako preslikavanje logikih u fizike adrese ne bi znaajno utjecalo na brzinu rada
sustava. Razlog je to svaki pristup memoriji mora proi kroz tu logiku. Prilikom izmjene
konteksta u ove spremnike upisuje se tablica stranica procesa iz radne memorije.
Naredbe za promjenu sadraja ovih spremnika su privilegirane. Ovakav princip koristio
je DEC PDP-11 ija adresa je imala 16 bita, a stranice su bile veliine 8k. Znai adresni
prostor bio je podijeljen na 8 okvira, pa je PDP-11 imao 8 spremnika za tablicu stranica.
Ovakav pristup uinkovit je kada su tablice stranica relativno male, npr. 256 stranica.
Ako je veliina okvira 4k to znai da je veliina programa ograniena na 1M. Za brojne
aplikacije ovo je nedostatno, pa suvremeni sustavi dozvoljavaju velike tablice stranica,
npr. 1M. Realizacija ovakvih tablica pomou brzih spremnika nije ekonomski opravdana
pa se tablica pohranjuje u glavnoj memoriji. Procesor ima spremnik koji sadri
pokaziva na poetak tablice stranica (page-table base register). Prebacivanjem
izvoenja s jednog procesa na drugi zahtjeva samo promjenu sadraja ovog spremnika.
Nedostatak ovog rjeenja je u smanjenju brzine obrade, budui da su za pristup
podatku u memoriju potrebna dva pristupa memoriji, jedan za dohvat baze okvira, a
drugi za dohvat podatka.
Standardno rjeenje ovog problema je koritenje asocijativnih spremnika (translation
loo-aside buffers skr. TLBs) koji se sastoje od dva dijela, kljua i vrijednosti. Broj
asocijativnih spremnika u zavisnosti o sustavu varira izmeu 8 i 2048. U njih se upisuje
dio tablice stranica, a cijela tablica stranica pohranjena je u memoriji. Klju asocijativnog
spremnika odgovara broju logike stranice, a vrijednost je broj okvira u koji je ta stranica
smjetena. Procesor generira logiku adresu, a dio koji se odnosi na broj stranice
usporeuje se s kljuem asocijativnih spremnika. Ukoliko je stranica pronaena, a to se
naziva pogodak, vrijednost odabranog asocijativnog spremnika vodi se na sklop za
proraun fizike adrese. Cijeli ovaj postupak, prikazan na slici 8.16, praktiki usporava
pristup memoriji za samo 10-20%.
Ukoliko nije stranica upisana u asocijativnim spremnicima, dolo je do promaaja. Tada
se pristupa tablici stranica u radnoj memoriji, a ukoliko asocijativni spremnici nisu
popunjeni, na slobodno mjesto upisuje se broj stranice i broj okvira u koji je ta stranica
pohranjena. Tako je ubrzan sljedei pristupu toj stranici koji je vrlo vjerojatan s obzirom
na obiajan tijek izvoenja programa. U sluaju kada nema slobodnih mjesta u
asocijativnim spremnicima operacijski sustav prepisuje jedan spremnik podacima nove
stranice.
17

CPU

logika
adresa
p

broj
stranice

broj
okvira
TLB
pogodak
fizika
adresa
f

memoriija

TLB

p
TLB promaaj

f
tablica stranica

Slika 8.16: Stranienje pomou TLBa.


Kod izmjene konteksta potrebno je izbrisati cijeli sadraj TLBa to dodatno poveava
vrijeme izmjene.
Prosjeno poveanje vremena uz opisanu sklopovsku podrku za dodjelu memorije po
stranicama moe se procijeniti na sljedei nain: neka pristup memoriji iznosi 20ns, a
vrijeme pretraivanja TLBa 4ns. Tada je vrijeme prorauna fizike adrese i pristupa
memoriji za sluaj kada nema promaaja iznosi 24ns. U sluaju promaaja potrebno je
4ns da se odredi da stranica nije u asocijativnim spremnicima, 20ns da se pristupi tablici
stranica u glavnoj memoriji i dodatnih 20ns za pristup podatku, odnosno ukupno 44ns.
Ako je oekivani broj promaaja 20% tada ovakav sustav upravljanja memorijom
usporava rad:
t pristupa 0.80 24 0.2 44 28ns ili

28 - 20
40% .
20

Usporenje za 40% relativno je veliko, ali ukoliko se vjerojatnost promaaja smanji na


2% dobiva se:
t pristupa 0.98 24 0.02 44 24.4ns ili

24.4 - 20
22% ,
20

to je vrlo blizu maksimalno moguoj brzini rada.


Svi moderni procesori imaju TLB. Tako Intel 486 ima TLB s 32 spremnika i proklamira
vjerojatnost pogotka od 98%.

18

VIRTUALNA MEMORIJA

U poglavlju 8 opisani su razliite strategije upravljanja memorijom koje se susreu ili su se susretale u
raunarskim sustavima. Sve navedene strategije imaju jedinstven cilj: imati u memoriji to vei broj
procesa kako bi se realizirao to vei stupanj vieprocesiranja. Takoer, imaju jedinstven zahtjev da cijeli
program koji se izvodi mora biti u radnoj memoriji.
Virtualna memorija je strategija dodjele memoriju koja dozvoljava da samo dio programa koji se izvodi
bude u radnoj memoriji. Temeljna prednost ovakvog pristupa je da program moe biti i vei od radne
memorije. Tako korisniki program moe poprimiti proizvoljnu veliinu, a sustav za upravljanje memorijom
preslikava logiki prostor korisnika u ogranieni prostor u radnoj memoriji. Ovakav sustav za upravljanje
memorijom nije jednostavno realizirati. Loa implementacija ovakvog sustava moe znaajno smanjiti
performanse cjelovitog raunarskog sustava. U ovom poglavlju razmatrati e se realizacija stranienja na
zahtjev (demand paging), njena sloenost i cijena.

9.1

Uvodna razmatranja

Algoritmi opisani u prethodnom poglavlju potrebni su iz razloga to naredbe koje se


izvode moraju biti u glavnoj memoriji. Najjednostavnije je da se cijeli program upie u
glavnu memoriju. Prebacivanje (overlay) i dinamiko punjenje rjeavaju posljednje
ogranienje, ali zahtijevaju dodatne mjere od strane programera.
Analize programa ukazuju da obino nije potreban cijeli program da bi se potrebna obrada izvela. Tako
npr.:

Programi sadre procedure za obradu sluajnih ili namjernih pogreaka. Budui da


se takvi sluajevi relativno rijetko deavaju, program izvede potrebnu obradu bez
poziva spomenutih procedura.
Program za polja, liste, tablice, i sline statike strukture obino rezervira vie
memorije nego je stvarno potrebno.
Pojedine opcije programa relativno se rijetko koriste. Tako npr. pravnici kad piu u
Word tekst procesoru vjerojatno nikad nee koristiti Equation editor.

ak i u sluajevima koji ne spadaju u navedene kategorije, injenica je da cijeli program nije istovremeno
potreban. Tako svojstvo da samo dio programa koji se izvodi se nalazi u memoriji ima niz prednosti:

Veliina programa nije ograniena veliinom radne memorije. Programer moe


napisati programa kao da sustav raspolae s neogranienom memorijom, odnosno
programer raspolae s neogranienim virtualnim logikim adresnim prostorom. Ovo
uveliko pomae kod pisanja programa.
Korisniki program moe se izvoditi sa znatno manjom dodijeljenom fizikom
memorijom, to omoguava vei stupanja vieprogramskog rada. Time se poveava
iskoristivost kao i propusna mo sustava.
Manje U/I operacija potrebno je za prebacivanje korisnikih programa iz i u
memoriju. Tako se korisniki programi bre izvode.

Zakljuaj je da izvoenje programa koji nisu cijeli upisani u memoriji ima brojne prednosti i za korisnika i
za raunalni sustav.

Virtualna memorija je razdvajanje logikog adresnog prostora koji vidi korisnik od


fizikog adresnog prostora u kojem se program izvodi. Ovo razdvajanje omoguava
programeru da raspolae s neogranienim logikim prostorom iako se program stvarno
izvodi u relativno malom fizikom adresnom prostoru. Virtualna memorija olakava
posao programeru, ne samo to raspolae s neogranienim logikim prostorom, nego
to ne treba da vodi rauna o strukturi programa koju je zahtijevao sustav s
prebacivanjem ili dinamikim punjenjem. Princip virtualne memorije prikazan je slikom
9.1.

19

stranica 0
stranica 1
stranica 2
stranica 3

tablica
stranica
stranica n

virtualna
memorija

fizika
memorija

sekundarna
memorija
(disk)

Slika 9.1. Prikaz virtualne memorije koja je vea od fizike memorije.


Virtualna memorija obino se realizira kao stranienje na zahtjev (demand paging).
Mogue ju je primijeniti u sustavima koji koriste podjelu memorije na segmente.
Nekoliko sustava rijeilo je virtualnu memoriju pomou segmenata, gdje su segmenti
podijeljeni na stranice. Tako korisnik vidi program podijeljen na segmente, a operacijski
sustav dijeli segmente na stranice. Tako je IBM OS/2 koristio koncept segmentacije na
zahtjev. Vano je napomenuti da algoritmi zamjene segmenata su znatno sloeniji od
algoritama zamjene stranica budui su segmenti promjenjive veliine, a stranice fiksne.
9.2

Stranienje na zahtjev (demand paging)

Stranienje na zahtjev koristi koncept slian prebacivanju. Proces je pohranjen na


sekundarnoj memoriji, obino disku. Kada se namjerava izvesti proces upisuje se samo
jedan njegov dio u radnu memoriju. Kod upisivanja procesa u memoriju uobiajeno se
koristi tzv. lijeni prebaciva (lazy swapper) koji upisuje stranicu u memoriju tek kada je
ona potrebna. Termin swapper moe se smatrati netonim jer se on obino odnosi na
prebacivanje cijelog procesa. Ispravnije je koritenje termina pegger koji se odnosi na
prebacivanje stranice. Proces se sada moe promatrati kao niz stranica koji se prema
potrebi upisuju u memoriju.
Ovakav pristup dodjeli memorije zahtijeva i odreenu sklopovsku podrku. Prvenstveno
potrebno je razluiti koje su stranice upisane u memoriju, a koje se samo nalaze na
disku. Ovaj problem rjeava se proirenjem tablice stranica bitom prisutnosti koji daje
informaciju da li se stranica nalazi u radnoj memoriji ili ne, slika 9.2.

20

bit
prisustva
0

stranica A

stranica B

stranica C

stranica D

stranica E

stranica F

stranica G

stranica H

virtualna
memorija

0
1
2
3
4
5
6
7

4
6
9

tablica
stranica

1
0
1
0
0
1
0
0

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

A
C
F

fizika
memorija

sekundarna
memorija
(disk)

Slika 9.2. Tablica stranica kad sve stranice nisu u radnoj memoriji.
Kada se pristupa pojedinoj stranici, operacijski sustav preko tablice stranica ispituje da li
je adresirana stranica u memoriji ili ne. Ako je stranica u upisana u fiziku memoriju, bit
prisustva je postavljen u jedinicu, tada se izraunava fizika adresa naredbe ili podatka i
pristupa mu se. Ali ako adresirana stranica nije u memoriji tada ju je potrebno upisati u
memoriju i tek onda izvriti pristup. Procedura pristupa stranici moe se opisati na
sljedei nain:

sklopovlje prvo provjerava bit prisustva adresirane stranice kako bi se odredilo da li


je stranica u memoriji ili ne.
Ukoliko stranica nije u memoriji (dolo je do tzv. promaaja) generira se prekid koji
dojavljuje operacijskom sustavu da treba pronai stranicu na sekundarnoj memoriji i
prebaciti je u radnu memoriju. Obino promaaj rezultira prekidom prava koritenja
procesora, te se proces prebacuje u red ekanja na U/I ureaj, u ovom sluaju disk.
Operacijski sustav pronalazi slobodan okvir u radnoj memoriji (operacijski sustav
vodi listu slobodnih okvira).
Prebacuje se traena stranica u odabrani okvir.
Osvjeava se tablica stranica procesa na nain da se stranici pridruuje dodijeljeni
okvir. Ovim je praktiki proces pripravan da nastavi s izvoenjem.
Prekinuta naredba se ponovo izvodi a stranici se pristupa kao da je ona oduvijek bila
u memoriji.
Opisani proces prikazan je slikom 9.3.

21

stranica je na disku

prekid 2

0
1
2
3
bit
4
prisustva
5
6
stranica D adresiranje
4
1
7
0
0
8
1
1
6
1
load M
9
2
6
0
10
3
0
ponovi 4
5 11
9
1
naredbu 5
12
0
13
6
0 obnovi 14
7
tablicu
virtualna
tablica stranica

operacijski
sustav

memorija

sekundarna
memorija
(disk)

3
fizika
memorija

A
C

4
stranica u
slobodan
okvir

stranica

Slika 9.3. Koraci u sluaju promaaja stranice.


U cijelom ovom procesu vano je primijetiti da se nakon prekida sauva stanje procesa (programsko
brojilo i ostali spremnici ope namjene) te da se nakon unosa stranice u radnu memoriju te osvjeavanja
tablice stanja proces moe nesmetano nastaviti. Jedina razlika je u tome to je sada adresirana stranica
u radnoj memoriji.

Teoretski postoji vjerojatnost da tijekom izvoenja jedne naredbe doe do viestrukih


promaaja. Naime, program se moe nalaziti na jednoj stranici, a podaci na drugoj.
Ovakve situacije, koje na sreu nisu uestale, dovele bi do znaajnog pada performansi
sustava.
Kao i kod dodjele memorije po stranicama, virtualna memorija zahtjeva znaajnu
sklopovsku podrku kako bi se odrale dobre performanse sustava. Uz sklopovlje
potrebna je i dodatna programska podrka. Takoer, za implementaciju ovakvog
sustava dodjele memorije potrebne su i odreene preinake arhitekture raunala.
Temeljni problem je potreba za ponavljanjem naredbe ukoliko doe do promaaja. Do
promaaja moe doi u bilo kojoj fazi izvoenja naredbe. Ukoliko do promaaja doe
kod dohvata naredbe jednostavno se nakon unosa stranice u memoriju ponavlja njen
dohvat te nastavlja s njenim izvoenjem. Ali ukoliko doe do promaaja tijekom dohvata
operanda tada je potrebno ponovo dohvatiti naredbu, dekodirati je te dohvatiti operand
koji je sada u radnoj memoriji.
Neka se izvodi naredba koja zbraja dvije memorijske varijable A i B i rezultat pohranjuje
na treu memorijsku lokaciju C. Naredba se izvodi kroz sljedee korake:
1.
2.
3.
4.
5.

dohvati i dekodiraj naredbu,


dohvati operand A,
dohvati operand B
zbroji A i B,
pohrani rezultat u C.

Neka se rezultat C nalazi na lokaciji koja pripada stranici koja trenutno nije u memoriji. Promaaj tada
rezultira procedurom unosa stranice u memoriju, te ponavljanja koraka 1-5. Program normalno nastavlja s

22

izvoenjem, a ovakve situacije ako nisu uestale nee znaajno utjecati na cjelokupne performanse
sustava.
Problem moe nastupiti ukoliko procesor raspolae s naredbama koje mijenjaju istovremeno sadraje
vie memorijskih lokacija. Tako je npr. IBM 370, a i Intel 80x86 ima naredbe za prebacivanje niza
karaktera s jedne na drugu lokaciju. Poseban problem nastaje ukoliko izvorni i odredini niz dijele neke
lokacije, slika 9.4. Ako je promaaj nastupio nakon to je izmijenjen dio izvornog niza tada nije mogue
ponoviti zapoetu a prekinutu naredbu.

nova
stranica

znak 0
znak 1
znak 2
znak 3
znak 4
znak 5
znak 6
znak 7

prije prekida

nova
stranica

znak 0
znak 1
znak 2
znak 3
znak 2
znak 3
znak 4
znak 5
znak 6
znak 7

vrijeme prekida

Slika 9.4. Prebacivanje niza znakova s jedne na drugu memorijsku lokaciju.


Navedeni problem mogue je rijeiti na dva naina. Prvi je da se prije prebacivanja
ispitaju poetne i krajne adrese oba niza te da se prema potrebi odmah unesu potrebne
stranice u memoriju. Drugi pristup bila bi primjena privremenih spremnika u koju bi se
pohranile vrijednosti izmijenjenih lokacija. U sluaju obnovili bi se sadraji izmijenjenih
lokacija i ponovila bi se naredba.
Slian problem susree se kod procesora koji koriste posebne modove adresiranja kao
npr. autoinkrement i autodekrement (npr. PDP 11 ili Motorola 68000). Ovi adresni
modovi koriste sadraj spremnika kao pokaziva na podatak kojem se pristupa, pri
emu se automatski sadraj spremnika inkrementira ili dekrementira. Autodekrement
umanjuje vrijednost pokazivaa (sadraj spremnika) prije pristupa operandu, dok
aoutinkrement poveava vrijednost pokazivaa(sadraj spremnika) nakon pristupa
operandu. Tako naredba
MOV (R2)+,-(R3)
kopira sadraj memorijske lokacije na koju pokazuje spremnik R2 na memorijsku
lokaciju na koju pokazuje spremnik R3, s time da se sadraj spremnika R2 poveava za
2 nakon upisa vrijednosti u memoriju, a sadraj spremnika R3 umanjuje se za 2 prije
dohvata operanda. Ukoliko operand na koji pokazuje umanjena vrijednost spremnika R3
nije u memoriji (promaaj) tada nastupa problem pri ponovljenom izvoenju naredbe.
Mogue rjeenje je uvoenje zasebnog privremenog spremnika koji pamti prethodni
sadraj spremnika tako da je pri ponavljanju naredbe mogue obnoviti prvobitnu
vrijednost spremnika.
Svakako navedeni problemi postavljaju posebne zahtjeve na arhitekturu procesora koji
koristi stranienje na zahtjev. Sklopovi koji upravljaju memorijom nalaze se izmeu
procesora i memorije i moraju biti potpuno transparentni korisniku. Zato ovakav sustav
za upravljanje memorijom nije mogue realizirati kod svih procesora.
23

9.3

Performanse sustava sa stranienjem na zahtjev

Stranienje na zahtjev ima znaajan utjecaj na performanse raunarskog sustava. Bolji


uvid na utjecaj ovakve strategije dodjele memorije mogue je procijeniti pomou
efektivnog vremena pristupa memoriji (effective access time). Ukoliko se stranica nalazi
u memoriji efektivno vrijeme pristupa jednako je vremenu pristupa memoriji ma. Ali
ukoliko stranica nije u memoriji potrebno je obraditi prekid, unijeti stranicu u memoriju i
ponoviti naredbu to predstavlja znatno due vrijeme pristupa tf. Neka je vjerojatnost
promaaja p (0 p 1). Efektivno vrijeme pristupa iznosi:
eat = (1 - p)ma + ptf.
Vrijeme pristupa memoriji kod dananjih procesora je reda ns, npr. 10ns. Za procjenu
vremena pristupa memoriji u sluaju promaaja potrebno je sagledati sve korake koje je
potrebno napraviti a to su:
1.
2.
3.
4.
5.

postaviti zahtjev za prekid procesoru,


sauvati stanje prekinutog procesa,
odrediti da se prekid odnosi na promaaj stranice,
provjeriti da li je dozvoljen procesu pristup toj stranici i pronai stranicu na disku,
postaviti zahtjev za prijenos stranice u slobodan okvir to zahtijeva:
a) ekanje u redu dok se prihvati zahtjev za U/I prijenosom,
b) ekanje na pronalaenje traenog sektora na disku (vrijeme traenja ili
latentnost),
c) prijenos stranice s diska u slobodan okvir,
6.
za vrijeme ekanja na obradu postavljenog U/I zahtjeva dodijeliti procesor nekom
drugom procesu,
7.
po zavretku prijenosa stranice s diska dojaviti operacijskom sustavu da je
prijenos obavljen (postavlja se novi zahtjev za prekidom),
8.
sauvati stanje prekinutog procesa,
9.
odrediti o kojoj vrsti prekida se radi (U/I prijenos s diska zavrio),
10. unijeti promjene u tablicu stranica procesa koji je ima promaaj,
11. ekaj dok proces dobije ponovo pravo na koritenje procesora,
12. obnovi stanje procesa i ponovi prekinutu naredbu.
Naravno, ne moraju se dogoditi svi koraci u svakom sluaju promaaja. Npr. korak broj 6 podrazumijeva
da se procesor dodjeljuje drugom procesu kako bi se odrala to vea zaposlenost procesora, ali ona
rezultira u dodatnom vremenu potrebnom za obradu promaaja.

U svakom sluaju za procjenu vremena obrade promaaja moraju se uzeti u obzir


sljedee tri radnje:
1.
2.
3.

obrada prekida zbog promaaja,


unos stranice u memoriju,
nastavak prekinutog procesa.

Prvi i tei zadatak mogu se paljivim kodiranjem sistemskih procedura ograniiti na nekoliko stotina
naredbi, to se moe procijeniti na vrijeme od nekoliko mikrosekunda. Drugi zadatak vremenski je znatno
zahtjevniji, jer je potrebno pronai stranicu na disku, postaviti glavu diska na traeni sektor te prebaciti
stranicu u memoriju. Ovo vrijeme kod dananjih diskova moe se procijeniti na deset do dvadeset
milisekunda. Prema tome kod promaaja praktiki najvei dio vremena troi se na unos stranice u
memoriju. Kod vieprocesnog rada situacija je nepovoljnija jer ovom vremenu potrebno je dodati
prosjeno ekanje u razliitim redovima.

Za ilustraciju uzeti e se vrijeme pristupa memoriji 10ns, a vrijeme obrade promaaja


25ms. Efektivno vrijeme promaaja iznosi:
eat = (1 p)10 + p25 000 000 = 10 + 24 999 990p
24

Neka je zahtjev da efektivno vrijeme pristupa moe biti samo 10% vee od vremena
pristupa memoriji dobiva se dozvoljena vjerojatnost promaaja p < 410-8, odnosno da je
dozvoljen samo jedan promaaj na 25 milijuna pristupa. Ovaj grubi proraun govori da
je vano odrati vjerojatnost promaaja jako malom kao se ne bi znaajno degradirale
performanse cjelovitog sustava.
9.4

Problem zamjene stranica

U do sada provedenim razmatranjima pretpostavilo se da u sluaju promaaja


operacijski sustav uvijek ima u memoriji slobodan okvir u koji e upisati traenu
stranicu. Naravno u praksi situacija je sasvim drugaija. Tijekom rada, a posebice u
vieprocesnom sustavu, memorija se sasvim popuni te je u sluaju promaaja potrebno
osloboditi okvir za novu stranicu izbacivanjem neke od stranica koje su ve u memoriji.
Kako e biti naknadno opisano, odabir stranice koju e se izbaciti, tzv. rtvu (victim)
posebno je osjetljivo pitanje i strategija zamjene stranica moe znaajno utjecati na
performanse sustava.
Prvo, naelno se moe proiriti procedura obrade promaaja na sljedei nain (slika
9.5):
1.
2.

3.
4.

pronalaenje traene stranice na disku,


odabir okvira u koji e se stranica upisati:
a) ako postoji slobodan okvir njega se koristi,
b) ako nema slobodnih okvira poseban algoritam odabire rtvu i prebacuje prema
potrebi odabranu stranicu na disk, aurira tablicu stranica i oslobaa okvir,
upisuje traenu stranicu u osloboeni okvir i aurira tablicu stranica,
ponavlja prekinutu naredbu.

Izbacivanje stranice iz okvira zahtijeva dodatni prijenos na disk to dvostruko produava vrijeme obrade
promaaja, a time i efektivno vrijeme pristupa memoriji.

Pogodnost je to nije uvijek nuno rtvu prebaciti natrag na disk. Ukoliko sadraj
stranice nije mijenjan, npr. odnosi se na program ili ulazne podatke, tada je sadraj
stranice na disku i u memoriji isti te nije potrebno vraati stranicu na disk. Dovoljno je
samo sadraj okvira prepisati sadrajem nove stranice. Informaciju o tome da li se to
mijenjalo u sadraju stranice mogue je dobiti uvoenjem zasebnog bita, bita izmjene
(modify bit, dirty bit), koji se postavlja u jedinicu ukoliko je ita mijenjano u sadraju
stranice. Algoritam za zamjenu stranica prvo provjerava bitove izmjene stranica koje bi
se mogle izbaciti i odabire one koje nisu mijenjane, odnosno one kojima je bit izmjene
nula.

25

fizika
memorija

prekid 2

operacijski
sustav

bit
prisustva
adresiranje
0
1
1
2
8
3
ponovi 4
naredbu 5
6
7

stranica D
load M
3

virtualna
memorija

sekundarna
memorija
(disk)

stranica je na disku

4
6
9
13

1
0
1
0
0
1
1
0

tablica
stranica

0
1
2
3
4
5
6
7
8
9
10
7 11
12
13
5 14
obnovi
tablicu
stranica

A
izbacuje
se
rtva

C
F

4
6

stranica u
osloboen
okvir
stranice zauzete
drugim procesima

Slika 9.5. Koraci u sluaju promaaja stranice kada nema slobodnih okvira.
Sljedei problem koji je potrebno rijeiti je izbor algoritma odabira stranice rtve koju e
se izbaciti iz memorije.
9.5

Algoritmi zamjene stranica

U praksi se susreu brojne strategije zamjene stranica, a koje imaju jedinstven cilj, zadrati to manji broj
promaaja uz prihvatljivu sklopovsku i programsku potporu.

Procjenu kvalitete pojedinog algoritma mogue je napraviti proraunom broja promaaja


za konkretan niz logikih adresa pri emu se spomenuti niz naziva referentni niz. Njega
je mogue generirati umjetnim putem (npr. generator sluajnih adresa odreene
distribucije) ili pomou snimljenog niza generiranih adresa stvarnih programa. Sljedee
to je potrebno definirati je broj okvira koji mogu procesu stajati na raspolaganju. Oito
to je vei broj raspoloivih okvira po procesu da je vjerojatnost promaaja manja, slika
9.6. S druge strane vei broj okvira po procesu smanjuje mogui broj procesa koji se
konkurentno izvode, odnosno smanjuje stupanj vieprocesiranja.

broj promaaja

12
10
8
6
4
2
0
0

broj okvira

Slika 9.6. Odnos broja promaaja i broja okvira dodijeljenih procesu.


Algoritmi zamjene usporediti e se na sljedeem referentnom nizu stranica:

26

7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1,
a procesu su dodijeljena tri okvira.
9.5.1 FIFO algoritam
Algoritam najjednostavniji za implementaciju je zamijeniti stranicu koja je od stranica u
memoriji prva unesena (First In First Out). Stranice se stavljaju u red kako se unese u
memoriju i kada nema slobodnih okvira izbacuje se ona koja je prva u redu.
Stanja memorije za pretpostavljeni referentni niz stranica i tri dodijeljena okvira po
procesu prikazana su sljedeom tablicom:
7
7

0
7
0

1
7
0
1

2
0
1

2
3
1

2
3
0

4
4
3
0

2
4
2
0

3
4
2
3

0
2
3

1
0
1
3

0
1
2

7
7
1
2

0
7
0
2

1
7
0
1

Provedeni analiza pokazuje da je uestala zamjena stranice kojoj se u sljedeoj


pristupa to znatno poveava broj promaaja, a time i efikasnost sustava. Tako je za
ovaj primjer uslijedilo 15 promaaja.
Uz spomenuti ozbiljan nedostatak ovog algoritma, koji se pak odlikuje jednostavnou
implementacije uoena je i sljedea anomalija koja se moe ilustrirati na sljedeim
referentnim nizom stranica:
1

1
2

1
2
3

4
2
3

4
1
3

4
1
2

5
1
2

5
3
2

5
3
4

Analiza je pokazala da je za tri dodijeljena okvira uslijedilo devet promaaja. Neka se broj okvira povea
na etiri:

1
2

1
2
3

1
2
3
4

5
2
3
4

5
1
3
4

5
1
2
4

5
1
2
3

4
1
2
3

4
5
2
3

Za oekivati je bilo da se broj promaaja smanji, ali broj promaaja se poveao. Ovo se naziva Beladyeva
anomalija, a posljedica je zamijene stranice koja e biti adresirana u sljedeem pristupu memoriji.

9.5.2 Optimalni algoritam


Analize provedene za FIFO algoritam mogu se iskoristiti za postavljanje optimalnog algoritma izbora
stranice koju e se zamijeniti. Lako moe zakljuiti da bi optimalno bilo zamijeniti onu stranicu koja e se
u budunosti najkasnije koristiti. Za zadani referentni niz stranica optimalni algoritam izvodio bi zamjenu
na sljedei nain:

7
7

0
7
0

1
7
0
1

2
2
0
1

3
2
0
3

4
2
4
3

0
2
0
3

1
2
0
1

7
0
1
27

Primjenom ovog algoritma smanjen je broj promaaja na svega devet, to predstavlja


znaajno smanjenje broja promaaja. Naalost ovakav algoritam zamjene stranica
praktiki je nemogue implementirati, budui nije poznato koja e se stranica u
budunosti najkasnije koristiti.
9.5.3 Zamjena najkasnije koritene stranice (LRU Last Recently Used)
Optimalni algoritam iako nije mogue implementirati koristi moe se koristiti i kao mjerilo
kvalitete ostalih algoritama i kao smjernica preostalim moguim rjeenjima. Polazei od
ideje sline optimalnom algoritmu, predloeno je rjeenje zamjene stranice koja se u
prolosti najkasnije koristila (LRU Last Recently Used). Ovaj algoritam primijenjen na
referentni niz stranica izvodio bi zamjenu na sljedei nain:
7
7

0
7
0

1
7
0
1

2
2
0
1

3
2
0
3

4
4
0
3

2
4
0
2

3
4
3
2

0
0
3
2

1
1
3
2

0
1
0
2

1
0
7

Primjenom ovog algoritma broj promaaja je dvanaest, to predstavlja napredak u odnosu na FIFO
algoritam, ali nema tako dobar uinak kao optimalni algoritam. Moe se pokazati da ovaj algoritam ne pati
od Beladyeve anomalije. Zato je i najee primjenjivan u operacijskim sustavima.
Postavlja se pitanje kod ovog algoritma njegove implementacije, odnosno biljeenja i usporedbe kada je
koja stranica adresirana. Mogua su dva naina biljeenja vremena pristupa stranici:

Polje vremena se dodaje tablici stranica. Pristupom svakoj stranici upisuje se u


polje vremena vrijeme pristupa stranici. Slian pristup je brojilo iji sadraj se
poveava prilikom svakog pristupa stranici. U svakom sluaju potrebno je dodatno
sklopovlje kojim se implementira opisano rjeenje. Prilikom potrebe zamjene
stranice usporeuju se polja vremena ili vrijednosti brojila kako bi se odabrala
stranica kojoj se najdue nije pristupalo. Kod primjene brojila potrebno je uzeti u
obzir mogunost preteka brojila.

Dvostruko vezana lista stranica je drugo mogue rjeenje. Stranica kojoj se


pristupa postavlja se na poetak liste. Ovim pristupom na poetku liste nalaze se
stranice kojima se nedavno pristupalo, dok na kraju liste stranice kojima se najdue
nije pristupalo. Moe se primijetiti sloenost ovakvog rjeenja, posebice to je
potrebno prebacivati stranice unutar liste to zahtijeva neopravdano veliko vrijeme.

Oba pristupa zahtijevaju sloenu sklopovsku podrku, dodatnu programsku podrku koja se mora izvoditi
u svakom pristupu memoriji, to je potpuno neprihvatljivo. Zato je potrebno odreenim rjeenjima
aproksimirati LRU algoritam.

9.5.4 Aproksimacije LRU algoritama


Kako je ve objanjeno nije ekonomski opravdano implementirati stvarni LRU algoritam,
ali mogue je napraviti odreene aproksimacije istog. Najjednostavnije rjeenje je
proiriti tablicu stranica dodatnim bitom, tzv. bitom pristupa (reference bit). Sistemski sat
postavlja ovaj bit u nulu u regularnim vremenskim razmacima. Prilikom svakog pristupa
stranici sklopovlje automatski postavlja bit pristupa stranice u jedinicu. Onim stranicama
kojima se pristupalo u prethodnom intervalu postavljeni su bitovi pristupa, a onima
kojima ne ti bitovi su ostali u nuli. Izmeu posljednjih operacijski sustav odabire stranicu
koju e zamijeniti, npr. prema FIFO algoritmu ili sluajnim izborom. Naravno ovakav
pristup gruba je aproksimacija LRU algoritma, ali je jednostavan za implementaciju. Za
napomenuti je potreba odabira veliine intervala ponitavanja bitova pristupa. Ukoliko je
taj interval kratak, najvjerojatnije e postojati informacija da se pristupalo samo jednoj
28

stranici, a ukoliko je prevelik tada se moe dobiti informacija da se pristupalo svim


stranicama pa se algoritam degenerira u FIFO algoritam.
9.5.4.1 Dodatni bitovi pristupa
Prethodni algoritam mogue je unaprijediti dodatnim bitovima pristupa. Uz svaki redak
tablice stranica pridruen je npr. osam bitovni posmani spremnika. Kada se stranica
upie u memoriju, svi bitovi ovog spremnika postavljaju se u nulu. Kada se pristupi
stranici, sklopovlje automatski bit najveeg znaenja posmanog spremnika postavlja u
jedinicu. Sistemski sat u regularnim vremenskim intervalima daje naredbu kojom se
sadraj svih spremnika pomie za jedno mijesio u desno, slika 9.7.
postavi
bit
0
1
2
3
4
5
6
7

pomakni u
desno

1
0
0
1
0
1
0
1

0
0
0
1
0
0
0
0

1
0
1
1
0
0
1
1

1
1
0
0
0
0
1
1

0
1
0
1
0
1
1
0

0
0
1
0
0
1
0
0

0
0
0
0
1
1
0
0

0
1
0
0
1
1
0
0

0
0
0
0
0
0
0
0

0
1
2
3
4
5
6
7

tablica stranica u t n

1
0
0
1
0
1
0
1

0
0
0
1
0
0
0
0

1
0
1
1
0
0
1
1

1
1
0
0
0
0
1
1

0
1
0
1
0
1
1
0

0
0
1
0
0
1
0
0

0
0
0
0
1
1
0
0

tablica stranica u t n+1

Slika 9.7 Realizacija LRU algoritma s posmanim spremnicima.


Stranica ija vrijednost posmanog spremnika je najmanja je najdalje u prolosti koritena. Prema slici
9.7 to je stranica broj 4, dok su npr. stranice 0 i 7 otprilike isto daleko u prolosti koritene. Ako npr. ima
vie stranica s najmanjim brojem moe se dodatni odabir napraviti ili FIFO algoritmom ili sluajnim
odabirom.
Broj dodatnih bitova pristupa proizvoljan je i uvjetovan kompromisom izmeu informacije koja se dobiva i
troka sklopovlja.

9.5.4.2 Algoritam druge prilike (second-chance)


Algoritam druge prilike sklopovski je najjednostavnija aproksimacija LRU algoritma. On koristi samo jedan
bit pristupa u tablici stranica, a stranice se zamjenjuju pomou FIFO algoritma na sljedei nain:

1.
2.

3.

za zamjenu odabire se stranica po FIFO algoritmu,


ispituje se njen bit pristupa
a) ako je on postavljen (stranici se pristupalo) stranici se ostavlja u memoriji ali joj
se bit pristupa ponitava (daje joj se druga prilika),
b) ako je bit pristupa nula stranica se zamjenjuje
ispituje se bit pristupa sljedee stranice u redu.
Slika 9.8 ilustrira ovaj algoritam.

29

bit
pristupa

pokaziva
na prvu
rtvu

0
0
1
1
0
0
1
1

bit
pristupa

0
0
0
0
0
0
1
1

ova stranica
se izbacuje

pokaziva
na prvu
rtvu

tablica stranica u
trenutku promaaja

tablica stranica nakon


izbacivanja

Slika 9.8 . Opis algoritma druge prilike.

9.5.4.3 Poboljani algoritam druge prilike


Ve je u prethodnim razmatranjima spomenuto kako je bolje zamijeniti stranicu iji sadraj se nije
mijenjao jer u tom sluaju nije potrebno vraati njen sadraj na disk pa je vrijeme zamjene smanjeno.
Zato se poboljanje algoritma druge prilike postie analizom bita promjene, koji je takoer sastavni dio
tablice stranica. Pomou bit pristupa i bita izmjene (bp, bi), odabire se prva stranica prema sljedeim
prioritetima:

1.
2.
3.
4.

(0,0) stranica nije nedavno koritena a sadraj je nepromijenjen,


(0,1) stranica nije nedavno koritena ali je sadraj mijenjan,
(1,0) stranica je nedavno koritena ali sadraj je nepromijenjen,
(1,1) stranica je nedavno koritena i sadraj je mijenjan.

Iz liste stranica, kao i u prethodnom algoritmu, odabire se za zamjenu prva stranica


najmanjeg prioriteta (1). Ako nema takvih trai se prva stranica prioriteta (2) itd. Moe
se primijetiti da je ponekad potrebno obii i vie puta cijelu listu stranica. Takoer,
stranicama koje se nalaze izmeu prethodnog poloaja pokazivaa i novog poloaja
ponitava se bit pristupa.
Ovakav algoritam koristio je Mecintosh sustav za upravljanje virtualnom memorijom.
9.5.5 Algoritmi temeljeni na brojenju pristupa stranici
Osim opisanih brojni su i drugi algoritmi koji se koriste za zamjenu stranica. Tako npr. uz svaku stranicu
moe se vezati brojilo koje broji broj pristupa svakoj pojedinoj stranici procesa koja se nalazi u memoriji.
Temeljom broja pristupa mogue su sljedei algoritmi zamjene:

najmanje koritene stranice (last frequently used LFU): stranica kojoj se najmanje
pristupalo u prethodnom razdoblju vjerojatno se nee ni koristiti pa je moda najbolje
nju izabrati. Ovakav pristup ima nedostatak da stranica kojoj se dosta pristupalo u
poetnoj fazi izvoenja programa je ubiljeila brojne pristupe a praktiki je
nepotrebna za daljnje izvoenje programa. Tako ona praktiki trajno ostaje u
memoriji iako je nepotrebna

najvie koritene stranice (most frequently used MFU): ovaj algoritam ima suprotnu
logiku prethodnom jer pretpostavlja da se stranici koja je tek upisana u memoriju
najmanje pristupalo, a da je velika vjerojatnost da e joj se pristupati i u budunosti.
30

Nedostatak je to stranice koje imaju neke procedure koje se malo koriste, npr. za
korekciju pogreaka, kada se jednom unesu trajno ostaju u memoriji.
Iz navedenog lako je zakljuiti da se opisani algoritmi malo koriste prvenstveno zbog relativno skupe
realizacije ovih algoritama, a anomalije koje oni iskazuju su relativno ozbiljne.

9.5.6 Stvaranja lista slobodnih okvira


Uz spomenute algoritme poboljanje rada sustava dobiva se stvaranjem liste slobodnih okvira koji ne
pripadaju ni jednom procesu. Kada doe do promaaja stranice, stranica koju je potrebno izbaciti odabire
se prema prethodno opisanim algoritmima, ali istovremeno zapoima upis nove stranice u jedan od
slobodnih okvira prije nego se odabrana stranica izbaci na disk. Ovim pristupom proces moe bre
nastaviti s izvoenjem. Nakon to se odabrana stranica prebaci na disk, njoj pripadajui okvir proglaava
se slobodnim i stavlja u listu slobodnih okvira.

Daljnje unapreenje ove ideje je lista izmijenjenih stranica procesa, odnosno lista
stranica u kojih se tijekom izvoenja upisivalo. U svakom trenutku kada je sklopovlje za
odabir stranice koju e se izbaciti slobodno odabire se jedna od izmijenjenih stranica i
prebacuje njen sadraj na disk, a ona se oznaava kao neizmijenjena. Ovim pristupom
poveava se vjerojatnost da se prema potrebi pronae neizmijenjena stranica koju e
se izbaciti.
Nadalje, mogue je uz listu slobodnih okvira zadrati informaciju koja se stranica u
okviru nalazila prije nego to je on oznaen kao slobodan. Budui da je sadraj okvira u
kojem se nalazila izbaena stranica ostao nepromijenjen, prema potrebi, ako se ona
ponovo adresira u skoroj budunosti nije potrebno izvoditi prebacivanje s diska nego se
samo aurira tablica stranica. Ovaj pristup koristio je VAX/VMS sistem s FIFO
algoritmom zamjene stranica.
9.6

Dodjela broja okvira procesu

Problem koji do sada nije razmatran je kako podijeliti okvire meu procesima? Koliko procesa dozvoliti da
se konkurentno izvode?

Kod jednokorisnikog sustava situacija je krajnje jednostavna. Odreeni broj okvira


zauzima operacijski sustav, a sve ostale okvire koristi korisniki program ili programi.
Pozivani programi ili procedure odnosno njihovi dijelovi pune se po stranicama u
memoriju prema zahtjevu, a kada se popuni memorija nekim od opisanih algoritama
izvodi se zamjena stranica.
Za razliku od jednokorisnikog sustava, kod viekorisnikog sustava stvar je sloenija. U ovom sluaju
vie korisnika starta svoje procese koji su razliiti prema veliini i strukturi obrade. Prvo pitanje je kako
raspodijeliti slobodne okvire izmeu procesa?

Prije nego se odgovori na postavljeno pitanje potrebno je odrediti minimalni broj stranica
koje proces mora imati da bi se uope mogao izvoditi. Pri tome se misli na maksimalni
broj stranica unutar koje adresira jedna naredba, a odgovor je direktno vezan uz
arhitekturu procesora. Tako npr. za procesor koji koristi indirektno adresiranje naredba
se moe nalaziti u jednoj stranici, adresa lokacije na kojoj je pohranjena adresa
operanda u drugoj, a sam operand u treoj stranici. Znai da ova naredba za izvoenje
zahtijeva tri memorijska okvira. Slina analiza moe se provoditi i za druge sloene
naredbe dok je kod RISC procesora stvar znatno jednostavnija.
Zakljuak je da arhitektura raunala, ili bolje reeno arhitektura skupa naredbi
procesora, odreuje minimalni broj okvira koji mora biti dodijeljen procesu, dok
maksimalni broj okvira je ogranien samo veliinom radne memorije.
Nakon ovih razmatranja, mogue je potraiti odgovor na postavljeno pitanje kako
raspodijeliti slobodnu memoriju izmeu procesa. Najjednostavniji pristup je tretirati sve
31

procese jednako i svakom dodijeliti jednak broj okvira. Tako ako sustav raspolae s m
slobodnih okvira, k ih se moe odrediti kao lista slobodnih, a m k jednoliko raspodijeliti
izmeu n procesa. Tako svaki proces dobiva na raspolaganje (m k)/n okvira.
Lako je uoiti nedostatak ovog pristupa. Svi procesi nisu jednake veliine i jednakih
zahtjeva. Jednostavan primjer neka bude sustav sa 60 slobodnih okvira veliine 1K.
Neka se istovremeno izvode dva procesa: jedan ukupne veliine 20K 20 okvira i
drugi veliine 200K 200 okvira. Ravnomjernom raspodjelom okvira oba procesa bi
dobila po 30 okvira to je krajnje nerazumno, jer prvi proces dobiva vie okvira nego to
mu je potrebno.
Kao poboljanje moe se uvesti dodjela proporcionalna veliini procesa. Za sve procese
uzete na obradu izrauna se ukupni virtualni adresni prostor:
n

S si ,
i 1

gdje je si memorijski zahtjev i-tog procesa. Svakom procesu dodjeljuje se broj okvira
prema sljedeoj formuli:
s
a i i (m k ) ,
S

gdje je m k ukupni broj slobodnih okvira koji su na raspolaganju korisnikim


procesima. Za prethodni primjer slijedi:
S 20 200 220,

a1

20
200
60 5, a 2
60 55 .
220
220

Ovako procesi dobivaju broj okvira proporcionalno svojim zahtjevima. Spomenuta


shema moe se nadodati i odreenim koeficijentima korekcije na nain da se procesima
s veim prioritetom dodjeljuje relativno vei broj stranica. Tako za isti primjer neka je
prvi proces vaniji od drugoga pa neka mu se dodijeli koeficijent 3 u odnosu na drugi.
Raspodjelu slobodnih okvira izvodimo prema izrazu:
S 3 20 1 200 260, a1

3 20
200
60 14, a 2
60 46 .
300
260

Sada prvi proces dobiva znatno vei broj okvira na koritenje.


Ovdje je potrebno napomenuti da broj okvira koji se dodjeljuju procesu varira u ovisnosti
o stupnju vieprocesiranja.
Sljedee pitanje na koje je potrebno donijeti odgovor je da li zamjenu izvoditi samo
unutar okvira dodijeljenih procesu (lokalna zamjena) ili dozvoliti da proces uzima okvire
od drugog procesa(globalna zamjena).
Lokalna zamjena podrazumijeva da se proces izvodi samo unutar dodijeljenog broja
okvira. U ovom sluaju broj okvira koji se dodjeljuje procesu odreuje operacijski sustav
u trenutku uzimanja procesa na obradu, a koji je usko vezan uz broj procesa koji se
trenutno obrauju. Ukoliko se broj slobodnih okvira povea, kao posljedica zavretka
nekog procesa, proces i dalje nastavlja obradu s istim brojem stranica.
S druge strane globalna strategija zamjene stranica dozvoljava da proces uzima
stranice od drugih procesa. U ovom sluaju neki procesi veeg prioriteta mogu uzeti
preveliki broj stranica drugih procesa te da njihovo normalno izvoenje dovede se u
pitanje (neprihvatljivo veliki broj promaaja). Ipak, globalna strategija zamjene stranica
32

vodi boljoj iskoristivosti memorije kao i veoj propusnosti sustava. Zato se i ona obino
primjenjuje.
9.7

Rasipanje (Trashing)

Kako je ve spomenuto, strategija globalne zamjene stranica moe dovesti do situacije da pojedini
procesi imaju na raspolaganju neprihvatljivo mali broj okvira to rezultira uestalim promaajima, a time i
smanjenim performansama sustava. Ovakva situacija u kojoj vei broj procesa se dovede u situaciju da
ima na raspolaganju mali broj okvira naziva se rasipanje (trashing). Zbog uestalih promaaja sustav
veliki dio vremena provodi u izmjeni stranica, a manji je posveen obradi. Slika 9.9 prikazuje ovisnost
iskoristivosti procesora o stupnju vieprocesiranja u sastavu koji koristi dodjelu stranica na zahtjev.

iskoristivost procesora

rasipanje

stupanj vieprocesiranja

Slika 9.9. Ovisnost iskoristivosti procesora o stupnju vieprocesiranja.

frkvencija promaaja

Oito je da operacijski sustav koji koristi stranienje na zahtjev, te globalnu strategiju zamjene mora imati
mehanizam detekcije rasipanja. Najjednostavnije je detektirati poveanu frekvenciju promaaja, a
problem otkloniti reduciranjem stupnja vieprocesiranja izbacivanjem nekih procesa iz obrade, slika 9.10.

poveati broj okvira

gornja
granica
donja
granica

smanjiti broj okvira

broj okvira
Slika 9.10. Ovisnost frekvencije promaaja o broju okvira.

9.8

Dodatna razmatranja

Odabir algoritma i strategije zamjene stranica vana su pitanja koje je potrebno rijeiti u sustavima koji
koriste stranienje na zahtjev. Uz ova temeljna pitanja nameu se i dodatna rjeenja koja mogu poboljati
rad sustava.

9.8.1 Predunos stranica u memoriju (prepaging)


Kod startanja procesa, odnosno njegovog prvog unosa u memoriju prema dosadanjim strategijama broj
promaaja je jako velik. Logino rjeenje je prilikom prvog unosa procesa u memoriju unijeti vei broj
stranica, a ne samo onu koju prvu proces zahtjeva.

33

Takoer, ukoliko je u nekom trenutku potrebno suspendirati proces iz radne memorije (npr. zbog
rasipanja) zgodno je da operacijski sustav zapamti koje je stranice proces koristio u trenutku gubljenja
prava natjecanja za dodjelu procesora kako bi se u trenutku kada se ponovo ostvare uvjeti za nastavak
njegovog izvoenja to izvoenje uinkovito nastavilo. U trenutku ponovnog nastavka izvoenja unesu se
sve stranice koje je proces koristio prije nego je suspendiran kako bi se izbjeglo nepotrebno prekidanje
zbog promaaja.
Predunos ima prednost utoliko to u pojedinim fazama izvoenja procesa umanjuje broj promaaja.

9.8.2 Veliina stranica


Veliina stranica ili okvira je veliina na koju projektanti operacijskog sustava rijetko
imaju utjecaj. Na nju je mogue jedinu utjecati za vrijeme projektiranja novih sustava. U
tom sluaju potrebno je analizirati utjecaj veliine stranice na performanse sustava.
S gledita tablice stranica bolja je vea veliina stranice jer je za isti proces potrebna
manja tablica stranica. S druge strane manja veliina stranice rezultira boljoj
iskoristivosti memorije. Naime, kako je ve opisano kod sustava koji koriste dodjelu
memorije po stranicama postoji samo unutarnja segmentacija memorije koja se
prosjeno moe procijeniti na polovicu veliine stranice. Tako je prosjeno pola veliine
stranice po procesu neiskoritena memorija.
Sljedei imbenik je brzina unosa stranice u radnu sa sekundarne memorije. Ovo
vrijeme sainjava vrijeme postavljanja glave iznad traenog cilindra (seek time), vrijeme
pronalaenja sektora, odnosno zakreta diska (latency), te vrijeme prebacivanja podatka
(transfer time). Prva dva vremena neovisna su o veliini stranice i ovise samo o
mehanikim svojstvima diska. Tako npr. vrijeme postavljanja iznosi oko 8 ms, a vrijeme
postavljanja oko 10ms. Vrijeme prijenosa ovisi o veliini stranice. Tako za brzinu
prijenosa od 2 Mokteta po sekundi je potrebno svega 0.5ms za prijenos stranice od
1024 okteta. Tako je za vee stranice potrebno vee vrijeme prijenosa. Povrno
gledajui lako se zakljui da je s aspekta brzine unosa stranice u memoriju povoljnije da
je stranica manja. S druge strane mora se uzeti i vrijeme unosa preostalim stranica.
Tada znaajan utjecaj ima vrijeme postavljanja i pristupa. S tog stajalita moe se
zakljuiti da je bolje to su stranice vee jer se u tom sluaju prenosi manji broj stranica.
Tako npr. za unos 2k programa u memoriju kad su stranice svega 512 okteta potrebno
je:
T1 4 (8 10) 1 73ms ,
dok za 2k stranice:
T2 1 (8 10) 1 19ms .
S druge strane, ukoliko je veliina stranice manja, u memorijski prostor dodijeljen
programu mogue je upisati vei postotak programa koji se najvie koristi. Praktiki, s
manjim stranicama postie se vea rezolucija pri izboru dijelova programa koji se vie
koriste.
Danas veliine stranica variraju izmeu 512 okteta i 4kokteta. Tako npr. Intel 80386 ima
veliinu stranice od 4kokteta, Motorola 68030 dozvoljava promjenjivu veliinu stranice
od 256 okteta do 32 kokteta. Povijesno, kako su se razvijali procesori te je memorija
postajala jeftinija, vee brzine i kapaciteta, uz injenicu da se brzine pristupa disku ne
poveavaju proporcionalno njima, osjea se trend prema veim stranicama.
9.8.3 Struktura programa
Stranienje na zahtjev trebalo bi biti transparentno za korisnika. U veini sluajeva korisniku je svejedno
kako pie program i kako se program upisuje u memoriju. Ipak postoje sluajevi u kojima poznavanje
mehanizma stranienja na zahtjev moe pomoi u pisanju programa koji e se bre izvoditi. Kao primjer

34

moe se navesti inicjalizacija cjelobrojnog polja veliine 256 x 256. Svaki cjelobrojni broj prikazan je s
etiri okteta. Veliina stranice je 1koktet. Tipian kod je:

long int
int

A[0..255,0..255];
i, j;

for (i=0; i<256; i++)


{

for (j=0; j<256; j++)

for (i=0; i<256; i++)

A[i,j] := 0;};
ili
for (j=0; j<256; j++)
A[i,j] := 0;};
Program prevodilac obino slae polje po redcima tako da slijedom idu A[0,0], A[0,1], ...,
A[0,255], A[1,0], ..., A[255,255]. Prema organizaciji stranica svaki redak stane u jednu
stranicu. Neka operacijski sustav dodijeli procesu npr. 128 okvira. Tada prvi program
ima svega 256 promaaja, dok drugi 256 x 256 = 65536 promaaja to rezultira znatno
duim izvoenjem. Razlog je opisan slikom 9.11.
stranica
broj
A[0,0]
A[0,1]
A[0,2]

pristup
broj
1.
2.
3.

stranica
broj
A[0,0]
A[0,1]
A[0,2]

pristup
broj
1.
257
513

A[0,255]
A[1,0]
A[1,1]
A[1,2]

256.
257.
258.
259.

A[0,255]
A[1,0]
A[1,1]
A[1,2]

65281
2.
258
514

A[1,255]

512.

A[1,255]

65282

A[255,0]
A[255,1]

65281
65282

A[255,0]
A[255,1]

256.
512

255

255
A[255,255]

65536

A[255,255]

65536

Slika 9.11. Pristup stranicama dvodimenzionalnog polja.

35

10 OBAVLJANJE U/I OPERACIJA


10.1 ARHITEKTURA RAUNARSKIH SUSTAVA
U prvom poglavlju razjanjeno je kao je poznavanje arhitekture raunala bitno za razumijevanje
pojedinosti operacijskih sustava. Zato e u sljedeem poglavlju biti razmatrani sklopovski dijelovi
raunarskog sustava. Operacijski sustav usko je povezan s obavljanjem ulazno/izlaznih operacija. Zato
e se prvo razmatrati mehanizmi obavljanja ulazno/izlaznih operacija. Slijedi obrada strukture memorije.

Operacijski sustav mora osigurati ispravan rad raunarskog sustava. Kako korisniki
programi ne bi naruavali funkcioniranje raunala, sklopovlje mora omoguiti odreene
mehanizme kojim bi se osigurao korektan rad. To je razlog da se u ovom poglavlju
razmotre temelji arhitekture raunala koji omoguavaju izradu djelotvorne sistemske
programske podrke.

10.2 Temeljna arhitektura raunala


Suvremeno raunalo ope namjene sastoji se od centralne procesne jedinice (central
processing unit CPU) i brojnih meusklopova ulazno/izlaznih ureaja spojenih preko
sabirnikog sustava koji im omoguava pristup zajednikoj memoriji, slika 9.1.
ON
LINE
disk

CPU

P IS A

M A G N E T S K A
T R A K A

disk

meusklop
za upravljanje
diskom

meusklop
za upravljanje
pisaem

meusklop
za upravljanje
trakom

sistemska sabirnica

sklop
za upravljanje
sabirnicom

sklop za
upravljanje
memorijom

memorija

Slika 9.1: Arhitektura suvremenog raunala.


Svaka ulazno/izlazna naprava upravljana je preko odgovarajueg meusklopa (disk
controller, video controller audio controller). CPU i ulazno/izlazni meusklopovi obavljaju
36

istovremeno postavljene im poslove, te pri potrebi pristupa zajednikoj memoriji, ili


nekom drugom meusklopu zahtijevaju uporabu sistemske sabirnice. Zaseban sklop
zaduen je za upravljanje sabirnicom (bus controller). Memorijski meusklop (memory
controller) osigurava ispravan pristup zajednikoj memoriji.
Nakon ukapanja raunala, starta se program za inicjalizaciju sklopovlja, tzv. bootstrap
program. Ovaj program inicjalizira spremnike procesora, odreene memorijske lokacije i
meusklopove ulazno/izlaznih ureaja, te u radnu memoriju unese jezgru operacijskog
sustava i preda mu nadzor nad raunalom. Nakon toga operacijski sustav eka na neki
dogaaj koji bi od njega zahtijevao odreenu aktivnost. Taj dogaaj moe biti npr. signal
ulazno/izlaznih naprava, ili zahtjev nekog programa za intervencijom operacijskog
sustava. Sklopovlje obino komunicira s operacijskim sustavom preko zahtjeva za
prekidom (interrupt), dok programi preko sistemskih poziva (system call).
Razliiti dogaaji imaju za posljedicu zahtjev za prekidom: obavljanje ulazno/izlazne
operacije, pogreke u radu sustava npr. dijeljenje s nulom, nedozvoljen pristup
memoriji, i sl. Za svaki od prekida predviena je odreena procedura za njegovu
obradu.
Ulazno/izlazne operacije posebno su znaajne za raunarski sustav, jer s pomou njih
procesor komunicira s korisnikom i podacima. Zato je poznavanje ulazno/izlazna
strukture vano za izradu pripadajue sistemske programske podrke.

10.3 Struktura ulazno/izlaznih operacija


Kao to je opisano na slici 9.1 arhitektura raunala ope namjene sastoji se od
procesora, memorije i brojnih ulazno/izlaznih meusklopova povezanih sistemskom
sabirnicom. Svaki ulazno/izlazni meusklop upravlja odreenim ulazno/izlaznim
ureajem. Zavisno o tipu ulazno/izlaznog ureaja moe se na njega spojiti jedan ili vie
ulazno/izlaznih ureaja. Npr. SCSI (Small Computer System Interface) razvijen za
veinu malih i srednjih raunala moe imati spojeno do sedam ulazno/izlaznih ureaja.
Ulazno/izlazni meusklop u ovisnosti o nainu obavljanja ulazno/izlaznih operacija
moe imati razliite sklopovske sastavnice: meuspremnike, upravljake sklopove,
spremnike posebne namjene i sl. Upravljaki sklopovi upravljaju unosom podataka u
lokalne meuspremnike iz raunarskog sustava te njihovu predaju ulazno/izlaznom
ureaju i obratno. Veliina lokalnog meuspremnika ovisi o tipu ureaja kojim se
upravlja. Tako npr. meuspremnik meusklopa diska mora biti najmanje jednak veliini
jednog sektora, npr. 512 okteta (najmanje dijela diska koji se moe oitati) odnosno
viekratnik toga broja.
10.3.1 Programsko obavljanje ulazno/izlaznih operacija
S obzirom na odnos raunala i ulazno/izlaznih ureaja programirani ulazno/izlazni prijenos moe se
podijeliti na:

programirani bezuvjetni prijenos,


programirani uvjetni prijenos.

10.3.1.1

Programirani bezuvjetni prijenos

Najjednostavniji nain komuniciranja izmeu ulazno/izlaznog ureaja i procesora je ako


je poznata brzina i frekvencija s kojom ulazno/izlazni ureaj ita ili pie u meuspremnik
37

meusklopa, a sinkrono s njim procesor pie ili ita iz meuspremnika. U ovom sluaju
povratna informacija o tome da li je podatak proitan ili ne postoji. Pri ovakvom nainu
obavljanja ulazno/izlazne operacije procesor generira samo jednu ulazno/izlaznu
meuspremnika. Na ovaj nain mogu npr. komunicirati s procesorom razliiti A/D ili D/A
pretvarai kojima je poznata frekvencija pretvorbe, odnosno frekvencija predaja
podataka.

CPU
spremnik

memorija

meuspremnik

U/I ureaj

Slika 9.2: U/I operacija preko meuspremnika.

10.3.1.2

Programsko obavljanje ulazno/izlaznih operacija

Poboljanje prethodnog rjeenja predstavlja uvoenje dodatnog spremnika, spremnika


stanja, u koji se upisuje stanje meuspremnika. Ovim rjeenjem procesor dobiva
informaciju da li je podatak koji je upisao u meuspremnik oitan, odnosno da li je
ulazno/izlazni ureaj upisao u meuspremnik novi podatak. Takoer, ulazno/izlazni
ureaj dobiva informaciju da je procesor upisao u meuspremnik podatak ili da je
podatak koji je bio upisan procesor proitao.

38

m
e

u
s
p
r
e
m
n
i
k

prema
U/I ureaju
prema
U/I ureaju

S
R

spremnik
stanja

itaj

prema
U/I ureaju

prema
procesoru

pii

zastavica

itaj

prema
procesoru

prema
procesoru

prema
procesoru

m
e

u
s
p
r
e
m
n
i
k

Slika 9.3: Programsko obavljanje ulaznih operacija.


Meuspremnici su namijenjeni za skladitenje podataka (podatka) koji se namjerava
prenijeti kao i za odvajanje meusklopa od sabirnice (sklopovi s tri stanja tri state logic).
Ulazni ureaj oitava zastavicu iz spremnika stanja. Ukoliko je ona u logikoj nuli, tj
meuspremnik je prazan postavlja na svoju sabirnicu podatak koji eli upisati u
meuspremnik i upisuje ga aktiviranjem linije pii. Ovom naredbom ujedno se i postavlja
zastavica (SR bistabil) koji je preko meusklopnika (odvojnog sklopa buffer) spojen na
sistemsku sabirnicu. Procesor oitava stanje zastavice tj. spremnika stanja i kad je
spremnik stanja postavljen u logiku jedinicu (podatak je unesen u meuspremnik)
oitava podatak iz meuspremnika i ujedno postavlja zastavicu u logiku nulu. Procesor
i ulazni ureaj izvravaju sljedee procedure:

39

U/I ureaj

10.4 PROCESOR
poetak
proitaj zastavicu;
ako je zastavica = 0 tada
proitaj zastavicu;
proitaj
podatak
meuspremnika;
kraj

iz

poetak
proitaj zastavicu;
ako je zastavica = 1 tada
proitaj zastavicu;
upii podatak u meuspremnik;
kraj

Ovaj nain obavljanja ulazno/izlaznih operacija poznat je pod nazivom two wire
handshake. Prednost ovakvog naina obavljanja ulazno/izlaznih operacija je da se
podatak na najbri mogui nain prenese s ulazno/izlaznog ureaja prema
procesoru i obratno. To je razlog da se on uglavnom koristi u raunarskim
sustavima namijenjenim upravljanju (A/D, D/A pretvarai i razliiti digitalni ulazi i
izlazi). Nedostatak ove metode je da je kod sporih ulazno/izlaznih ureaja (npr.
tipkovnica) procesor dugo u stanju aktivnog ekanja.
10.4.1 Obavljanje ulazno/izlaznih operacija s pomou zahtjeva za prekidom
Kod programiranog ulazno/izlaznog prijenosa podataka potrebno je ili poznavati
tono vrijeme odziva ulazno/izlaznih ureaja, odnosno ekati na odaziv u petljama,
to je neprikladno u veini raunarskih sustava pa se ulazno/izlazne operacije
obavljaju s pomou zahtjeva za prekidom. Na zahtjev vanjske logike, procesor
prekida izvoenje tekueg programa i prelazi na izvoenje procedure za obradu
prekida. Po zavretku obrade prekida nastavlja se izvoenje prekinutog programa.
Openito procesor izvodi sljedei algoritam:
ponavljaj
dohvati sljedeu naredbu;
poveaj sadraj programskog brojila tako da pokazuje na sljedeu naredbu;
dekodiraj naredbu;
dohvati operande i izvri naredbu;
ako je prekidni signal postavljen
zabrani daljnje prekidanje;
spremi programsko brojilo na stog;
stavi u programsko brojilo adresu prve naredbe programa za
obradu prekida;
do zaustavljanja
Kad procesor zapone ulazno/izlaznu operaciju upie odreeni podatak u
odreeni spremnik ulazno/izlaznog ureaja. Ulazno/izlazni meusklop ispituje
sadraj navedenog spremnika, te na osnovu sadraja donosi se odluka to je
potrebno napraviti. Ako npr. zakljui da se radi o operaciji itanja, prenosi podatak
iz ulazno/izlaznog ureaja u svoj meuspremnik. Kad je podatak unesen u
meuspremnik obavjetava se procesor da meusklop zadanu operaciju zavrio,
obino preko zahtjeva za prekidom. Ovakva situacija obino je posljedica zahtjeva
korisnikog programa za izvoenjem ulazno/izlazne operacije. Kad ovakva
situacija nastupi mogua su dva scenarija. U jednostavnijem sluaju proces koji je

40

korisniki proces
U/I procedura
sustav za
obradu prekida
sklopovlje
prijenos podataka
vrijeme

jezgra opreracijskog sustava korisnik

jezgra opreracijskog sustava korisnik

zapoeo ulazno/izlaznu operaciju eka da se ona obavi, gubi kontrolu nad


procesorom, a tek nakon obavljene ulazno/izlazne operacije on ponovo nastavlja s
izvoenjem. Ovo je tzv. sinkrono obavljanje ulazno/izlaznih operacija. U drugom
sluaju kontrola nad procesorom odmah se vraa korisnikom procesu koji moe
nastaviti izvoenje bez ekanja na zavretak ulazno/izlazne operacije. Zavretak
ulazno/izlazne operacije ulazno/izlazni ureaj dojavljuje korisnikom procesu. Ovo
je tzv. asinkrono obavljanje ulazno/izlaznih operacija. U ovom sluaju procesor
nastavlja s obradom dok se izvodi ulazno/izlazna operacija.

korisniki proces
ekanje
U/I procedura
sustav za
obradu prekida
sklopovlje
prijenos podataka
vrijeme

a)

b)

Slika 9.3: Obavljanje ulazno/izlazne operacije s pomou


zahtjeva za prekidom: a) sinkrono, b) asinkrono.
ekanje procesa na zavretak ulazno/izlazne operacije realizira se na dva naina.
Veina procesora ima naredbu wait koja postavlja procesor u stanje ekanja do
pojava zahtjeva za prekidom. Procesori koji nemaju ovakvu naredbu mogu ekati
aktivno u petlji.
Jedno od znaajki sinkronog obavljanja ulazno/izlazne operacije je da u jednom trenutku moe biti
aktivna samo jedna ulazno/izlazna operacija. Tako ako nastupi ulazno/izlazni prekid operacijski
sustav tono zna koji ureaj postavlja zahtjev za prekidom. Naravno, nedostatak je da ovakav
pristup iskljuuje paralelno odvijanje vie ulazno/izlaznih operacija.

Drugo rjeenje je da se odmah nakon aktiviranje ulazno/izlazne operacije vrati


kontrola korisnikom procesu. Korisniki proces ako ne treba odmah rezultate
ulazno/izlazne operacije moe nastaviti s izvoenjem sljedeih naredbi, pa i nekih
drugih ulazno/izlaznih operacija. Ukoliko je potrebno ekanje na rezultate
ulazno/izlazne operacije postavlja se sistemski poziv (system call), odnosno poziv
operacijskom sustavu, da bi postavio korisniki proces u stanje ekanja. Ovakav
pristup dodatno je poveao sloenost operacijskog sustava jer je potrebno voditi
evidenciju o vie ulazno/izlaznih zahtjeva koji istovremeno egzistiraju u sustavu.
Za tu namjenu operacijski sustav ima tablicu svih ulazno/izlaznih ureaja u kojoj je
upisan status ureaja kao i pokaziva na red procesa koji ekaju na pojedini
ureaj (tzv. device-status table), slika 9.4. Svaka jedinica tablice sadri naziv
ureaja, njegovu adresu ili adrese, stanje (aktivan, neaktivan ili ne radi), a ako je
ureaj aktivan tada je tu upisan i pokaziva na red procesa od kojih prvi u redu

41

izvodi ulazno/izlaznu operaciju, a ostali ekaju da budu poslueni. Svaki lan reda
sadri opis ulazno/izlazne operacije koja eka da bude posluena na tom
ulazno/izlaznom ureaju.
ureaj: linijski pisa 1
status: zaposlen
pokaziva
ureaj: linijski pisa 2
status: nezaposlen
pokaziva
ureaj: disk 1
status: zaposlen
pokaziva
ureaj: disketa 1
status: nezaposlen
pokaziva

pokaziva
zahtjev br. 10
adresa: 38546
duina: 1372

pokaziva
datoteka: xxx
operacija: ispis
adresa: 43046
duina: 20000

pokaziva
datoteka: yyy
operacija: upis
adresa: 03458
duina: 500

ureaj: tipkovnica 1
status: nezaposlen
pokaziva

Slika 9.4: Tablica stanja ulazno/izlaznih ureaja.


Ako postoji vei broj ulazno/izlaznih ureaja koji obavljaju ulazno/izlazne operacije
preko zahtjeva za prekidom potrebno je obratiti panju na sljedee probleme:
koji je ulazno/izlazni ureaj postavio zahtjev za prekidom,
da li su svi ulazno/izlazni ureaji ravnopravni, a ako nisu koji su pripadajui
prioriteti,
da li se smije prekidati ulazno/izlazna operacija novim zahtjevom za prekidom.
Sklopovski najjednostavnije rjeenje prikazano je na slici 9.5. Ulazno/izlazni ureaji komuniciraju s
procesorom preko jedinstvene linije za postavljanje zahtjeva za prekidom. Procesor nakon to je
primio i prihvatio zahtjev za prekidom mora obaviti sljedee:
odrediti koji je meusklop postavio zahtjev za prekidom,
na osnovi toga pozvati proceduru za obradu tog prekida,
nakon zavrene procedure za obradu ulazno/izlaznog prekida vratiti se u prekinuti program.

Kod ovakvog naina rada javljaju se sljedee nejasnoe:


kako ustanoviti koji ulazno/izlazni sklop je postavio zahtjev za prekidom,
to je sa sadrajima ostalih spremnika procesora; da li se procedura za obradu prekida koristi
tim spremnicima i ako se koristi kako sauvati njihov sadraj,
kako postupiti ako obrada prekida traje predugo,
to ako za vrijeme obrade prekida nastupi novi zahtjev za prekidom.

U najprimitivnijim arhitekturama ovi detalji rjeavali su se programski. Svaki ulazno/izlazni


meusklop imao je uz liniju za postavljanje prekida i spremnik stanja u koji se upisivalo da li je taj
ulazno/izlazni ureaj postavio zahtjev za prekidom. Kako bi se sauvao sadraj spremnika
procesora oni bi se openito spremali na stog. Program za obradu prekida izvodio bi sljedee:

42

memorija

potvrda zahtjeva za prekidom


zahtjev za prekidom

IRQ
ACK

IRQ

CPU

U/I meusklop
1

U/I ureaj

U/I meusklop
N

U/I ureaj

Slika 9.5:

zahtjev za prekidom
zabrani prekidanje;
spremi sadraje spremnika procesora na stog;
proitaj spremnik stanja U/I 1;
ako je zastavica postavljena
poniti zastavicu;
skoi na obradu prekida 1;
proitaj spremnik stanja U/I 2;
ako je zastavica postavljena
poniti zastavicu;
skoi na obradu prekida 2;

proitaj spremnik stanja U/I N;


ako je zastavica postavljena
poniti zastavicu;
skoi na obradu prekida N;
obnovi sadraje spremnika procesora;
omogui prekidanje;
vrati se u prekinuti program;
kraj

43

Ovim procedurama nije rijeen problem ukoliko se za vrijeme obrade prekida pojavi novi zahtjev za
prekidom. Takav zahtjev jednostavno e biti odbaen. Da bi se rijeio navedeni problem uvela se
odreena struktura podataka u memoriji raunala koja vodi evidenciju o stanju u raunalu.

Definira se:
Zapis
stanje;
Stack
spremnici // stog za spremanje sadraja spremnika procesora
Int
prioritet; // varijabla za smjetaj tekueg prioriteta
Boolean ekanje; // varijabla koja oznaava ekanje
kraj
Polje od stanja1..N; // ima N ulazno/izlaznih meusklopova
zahtjev za prekidom
zabrani prekidanje;
spremi sadraj programskog brojila na stog;
u programsko brojilo stavi poetnu adresu ove procedure;
spremi sadraje spremnika procesora na stog;
odredi indeks i ulazno/izlaznog meusklopa koji je postavio zahtjev za
prekidom;
ako je i1,N // prekid nije laan
postavi oznaku ekanja ekanjei=1;
poniti zastavicu u meusklopu;
dok postoji ekanjej0 j>k // k je tekui prioritet
odaberi najvei j;
ekanjej=0; / izbrii oznaku ekanja;
spremi sadraje spremnika sa stoga i tekui prioritet u stanjej;
tekui prioritet = j;
dozvoli prekidanje;
pozovi proceduru za obradu prekida U/Ij;
zabrani prekidanje;
vrati sadraje spremnika iz stanjej na stog;
obnovi tekui prioritet iz stanjej;
vrati sadraje spremnika sa stoga;
dozvoli prekidanje;
vrati u programsko brojilo sadraj sa stoga;
kraj
stog

k
tekui
prioritet
[1] [2]

stanje [1] stanje [2]

stanje [N]

stog

stog

stog

[N]

ekanje

Slika 9.6: Struktura podataka pri programskoj obradi prekida.

44

osnovni program
prekid 1
prekid 2
prekid 3
prekid 4
prekid 5
T
P3
t1

t1
t2
t3
t4
t5
t6
t7
t8
t9
t10

tekui
priorite
t
0
0
3
3
4
4
4
4
4
4
5
4
4
3
3
0
2
0
1
0

P4
t2

T T
P1
t3

P2
t4

T T
P5
t5

t6

t7

t8

t9

t 10

stog

stanje1

stanje2 stanje3

stanje4

stanje5

ekanj
e

reg0
reg3
reg4
reg4
reg4
reg4
reg3
reg0
reg0
reg0

reg0,0
-

reg0,0
-

reg3,3
reg3,3
reg3,3
reg3,3
reg3,3
reg3,3
reg3,3
reg3,3
reg3,3
-

reg4,4
-

00000
00100
00000
01000
00000
00001
00001
00011
00011
10011
00011
00011
00011
00011
00011
00011
00001
00001
00000
00000

reg0,0
reg0,0
reg0,0
reg0,0
reg0,0
reg0,0
reg0,0
reg0,0
reg0,0
reg0,0
reg0,0
reg0,0
reg0,0
-

Ovaj primjer pokazuje da se pojavom svakog novog prekida bez obzira na prioritet
prekida program koji se izvodi te se podaci spremaju na stog. Sve ovo predstavlja
gubitak procesorskog vremena na aktivnosti koje nisu u funkciji rjeavanja
osnovnog problema programa. Kako bi se efikasnije iskoristio rad raunarskog
sustava, dio obrade prilikom pojave zahtjeva za prekidom prebacuje se na
sklopove kao to je prikazano na sljedeoj slici:

45

memorija

IRQ

CPU

IRQ ACK

sklop za prihvat
prekida
P1 P2 P3

Pn

Sklop za prihvat prekida ima sljedeu arhitekturu:

IRQ

kazaljka
sklop za prepoznavanje
prioriteta

tablica
adresa

IRQ
ACK

spremnik ekanja

spremnik maske

vektor
adrese
procedure
za obradu
prekida

vanjska sabirnica
P1 P2

Pn

Procesor izvodi sljedeu proceduru:

zabrani prekidanje;
spremi sadraje spremnika na
stog;
postavi signal IRQ ACK;
proitaj sa sabirnice vektor za
oitanje iz tablice prekida prve
adrese procedure za obradu prekida
(interrupt vektor);

Procedura za obradu prekida:


stavi spremnik maski na stog;
maskiraj u spremniku maski
prekid koji se trenutno obrauje;
dozvoli prekidanje;
obavi obradu prekida;
zabrani prekidanje;
obnovi spremnik maski sa stoga;
dozvoli prekidanje;
vrati se u prekinuti program;

46

osnovni program
T

neprekidivi dio
prekid 1
prekid 2
prekid 3
prekid 4
prekid 5
P3
t1

P4

P1
t2

P2
t3

P5
t4

t<t1
t=t1
t=t2

tekui
prioritet
0
3
4

00000
00100
01100

00000
00000
00000

t=t3

01100

00001

t=t4

01100

00011

t=t5

11100

00011

t=t6

01100

00011

t=t7
t=t8
t=t9
t=t10

3
2
1
0

00100
00010
00001
00000

00011
00001
00000
00000

maska

t5

ekanje

t6

t7

t8

t9

t 10

stog
-[reg0,00000][reg3,00100]
[reg0,00000]
[reg3,00100]
[reg0,00000]
[reg3,00100]
[reg0,00000]
[reg4,01100]
[reg3,00100]
[reg0,00000]
[reg3,00100]
[reg0,00000]
[reg0,00000][reg0,00000][reg0,00000]-

47

Primjer sklopa za obradu prekida je Intel 8259 Interrupt Controler.

1. Logika ulazno/izlaznog ureaja aktivira liniju zahtjeva za prekidom IRQ 0...7.


2. Sklop za upravljanje prekidima prihvata zahtjev u spremnik zahtjeva za
prekidom, ispituje da li je prekid maskiran (usporeuje ga sa sadrajem
spremnika za maskiranje prekida) te usporeuje njegov prioritet s drugim
zahtjevima koji ekaju ili su upravo pristigli.
3. Ukoliko je zahtjev najveeg prioriteta upuuje se procesoru zahtjev za
prekidom preko IRQ linije.
4. Kad je procesor spreman za prihvat prekida (prekidi nisu maskirani, obraena
je tekua naredba) odgovara sklopu za prihvat prekida preko linije IRQ ACK.
5. Ureaj za prihvat prekida alje procesoru preko sabirnice podataka osam
bitovni pokaziva na lokaciju tablice koja sadri adresu prve naredbe
procedure za obradu tog prekida.

10.4.2 Izravan pristup memoriji (DMA Direct Memory Access)


Prekidnom ulazno/izlaznom prijenosu podataka, u zavisnosti od broja vanjskih logikih sklopova
prikljuenih na istu prekidnu liniju te o odabranoj metodi za otkrivanje uzroka prekida, potrebno je
vrijeme za posluivanje prekida, odnosno vrijeme za prijenos jednog elementa iz bloka podataka,
od nekoliko s do nekoliko stotina s. To znai da ovaj oblik prijenosa omoguava brzinu prijenosa
do nekoliko stotina tisua podataka u sekundi.
U sluaju uestalih zahtjeva za ulazno/izlaznim prijenosom, odnosno zahtjeva za prijenosom veeg
bloka podataka za oekivati je znatno usporeno i oteano izvoenje glavnog programa.
Rjeenje ovog problema je u poveanju brzine ulazno/izlaznog prijenosa podataka i oslobaanju
procesora od tereta ulazno/izlaznog prijenosa. Rjeenje je u ostvarenju izravnog pristupa
ulazno/izlaznog sklopa memoriji. Time se ostvaruje brz prijenos podataka izmeu ulazno/izlaznog
ureaja i memorije bez sudjelovanja procesora u prijenosu i bez izmjene sadraja njegovih
spremnika. Ovakvim nainom prijenosa ostvaruju se brzine vee od nekoliko milijuna podataka u
sekundi.
Primjer uporabe izravnog pristupa memoriji je pri prijenosu podataka izmeu diska i memorije,
disketne jedinice i memorije i diska i disketne jedinice.

48

CPU

tri stanja

upravljaka sabirnica
adresna sabirnica
podatkovna sabirnica

DMA
sklop

memorija

U/I
ureaj

Na slici je prikazana izvedba izravnog pristupa memoriji. Kad ne postoji zahtjev za prijenos
podataka izmeu memorije i ulazno/izlaznog ureaja DMA controler je elektriki odspojen od
sabirnica postavljanjem svojih izlaza u stanje velike impendancije (tri stanja).Tada procesor obavlja
normalne memorijske cikluse. Pri izravnom pristupu memoriji DMA sklop prikljuuje se i upravlja
sabirnicom, a procesor se elektriki odvaja od sabirnice postavljajui svoje izlaze u stanje velike
impendancije. DMA sklop tada upravlja prijenosom podataka.
S obzirom na nain realizacije izravnog pristupa memoriji razlikuje se sljedee tehnike:
izravni pristup memoriji zaustavljanjem procesora,
izravni pristup memoriji kraom procesorskih ciklusa.
Izravan pristup memoriji zaustavljanjem procesora najjednostavija je metoda. Aktiviranjem
upravljakog signala od strane DMA sklopa procesor zavrava tekuu naredbu i postavlja adresnu
svoje izlaze u stanje velike impendancije i predaje sabirnice upravljakom sklopu DMA.
Metoda izravnog pristupa memoriji kraom procesorskih ciklusa ne zaustavlja procesor nego on
samo kratkotrajno (nekoliko ciklusa) odgaa tok izvoenja naredbe, a u tom intervalu upravljaki
DMA sklop izvede prijenos jednog podatka. Ova metoda rezultira u poveanom vremenu obrade
osnovnog programa.
Kako bi ostvario navedene funkcije upravljaki DMA sklop mora ostvariti sljedee funkcije:
Preuzimanje upravljanja sabirnicom (podatkovnom, adresnom i upravljakom),
Izvoditi adresiranje memorije. Kako bi ovo ostvario DMA upravljaki sklop mora imati slino
procesoru adresni spremnik koji sadri adresu sljedee memorijske lokacije koja e sudjelovati
u prijenosu.
Brojanje prenesenih podataka. Blok podataka koji je potrebno prenijeti obino je unaprijed
odreene duine. Za vrijeme prijenosa podataka broj prenesenih podataka se mora
usporeivati sa eljenom duinom bloka. DMA prijenos zavrava kada je dostignuta eljena
duljina bloka.
Izbor naina upravljanja. Status-upravljaki spremnik upravljakog DMA sklopa sadri
upravljaku rije koja odreuju smjer podataka pri DMA prijenosu, informaciju da li je
upravljaki DMA sklop aktivan, izbor tehnike prijenosa i slino.

49

SS - spremnik stanja
SP - spremnik podatka
BP - brojilo podataka
SA - spremnik adrese

memorija

zahtjev za prekidom
5

CPU

1.
2.
3.
4.
5.

zahtjev za
sabirnicom
2

zahtjev za DMA
prijenosom
1

SS

SP

BP

SA

sklop za direktan
pristup memoriji

3
dozvola koritenja
sabirnice
Postupak pri DMA prijenosu moe se podijeliti na sljedee korake:
postavljanje zahtjeva za prijenos podataka od strane vanjskog logikog sklopa,
procesoru se alje zahtjev za dodjelu sabirnice,
procesor odgovara signalom potvrde prihvaanja zahtjeva,
adresiranje memorije i prijenos podatka izmeu memorije i vanjskog logikog sklopa,
dojava procesoru o zavretku DMA prijenosa.
Primjer:
Potrebno je prenijeti N rijei iz memorije s poetnom adresom M na odreenu ulazno/izlaznu
adresu.
procesor izvodi:
upii u BP N BP = N;
upii u SA M SA = M;
pokreni DMA prijenos;

DMA upravljaki sklop izvodi:


dok je BP 0
dohvati podatak s
SA;
predaj podatak U/I
sklopu;
SA = SA +1;
BP = BP 1;
izazovi prekid (prijenos
zavrio);

50

Primjer ovakvog sklopa je Intel 8257 DMA upravljaki sklop koji ima mogunost upravljanje s etiri
razliita DMA kanala.

82C37 i poboljana verzija 82C237 je DMA upravljaki sklop namijenjen prijenosu podataka izmeu
ulazno/izlaznih ureaja i memorije te prijenosu blokova podataka izmeu razliitih memorijskih lokacija.
Podaci se prenose direktno izmeu ulazno/izlaznih ureaja i memorije bez upisivanja u meuspremnike,
dok za pomicanje blokova podataka unutar memorije koriste se meuspremnici ovog sklopa.
Izlazi sklopa su izvedeni u logici s tri stanja te se on prikapa paralelno na sistemsku sabirnicu. Prijenos
podataka moe se zapoeti ili programski ili sklopovskim zahtjevom. Tako npr. ukoliko procesor treba
prenijeti blok podataka iz memorije na disk prvo inicijalizira DMA kanal na koji je spojen meusklop diska
(disc controller). Upisuje poetnu adresu bloka podataka koji se prenosi kao i broj podataka koji se
moraju prenijeti. U MODE spremnik upisuje se da se radi o prijenosu podataka iz memorije na
ulazno/izlazni ureaj kao i vrsta prijenosa. Prijenos se zapoinje upisom zahtjeva o kojem se DMA kanalu
radi u spremnik zahtjeva. DMA upravljaki sklop zatrai od procesora pravo uporabe sabirnice
aktiviranjem signala HRQ (Hold Request). Procesor ili sklop za upravljanje sabirnicom odgovara
aktiviranjem signala HLDA (Hold Acknowledge) Jednom zapoet DMA prijenos nastavlja se
postavljanjem memorijskih adresa na adresnu sabirnicu te istovremenim aktiviranjem linija MEM i IOW
te odabirom ulazno/izlaznog sklopa aktiviranjem linije DACK (DMA acknowlege). Podaci se prenose
direktno iz memorije ulazno/izlaznom sklopu. Prijenos zavrava kad se prenese zadani broj podataka. Na
slian nain ulazno/izlazni sklop preko linije DREQ (DMA Request) postavlja zahtjev za DMA prijenosom
bloka podataka iz ulazno/izlaznog meusklopa u memoriju raunala. DMA upravljaki sklop moe biti
inicijaliziran da prenese blok podataka zadane veliine na odreene lokacije u memoriji ili podaci se mogu
prenosit dok ulazno/izlazni meusklop ne prekine prijenos aktiviranjem linije EOP (End Of Process).
Postupak izravnog prijenosa podataka iz ulazno/izlaznog meusklopa u memoriju identian je kao i kod
programski zapoetog prijenosa.

51

10.5 Pogonski program (Device Driver)


Pogonski programi zadueni su za manipulaciju ulazno-izlaznim ureajima i djelom
sklopovlja raunala. Oni osiguravaju aplikacijama apstrakciju sklopovlja kojeg koriste.
Nain na koji aplikacija koristi sklopovlje prikazana je slikom 1.

Slika 1. Komunikacija aplikacije i sklopovlja


Aplikacija koristi sklopovlje izdavajui naredbu i razmjenjujui podatke s njim. Pogonski
program ima dva zadatka:
Implementacija apstraktnog programskog suelja (Application Programming
Interface).
Izvoenje sklopovski ovisnih operacija koje su potrebne da bi se realizirao zahtjev
aplikacije.
API mora za razliito sklopovlje biti to sliniji. Na taj nain programer mora malo znati o
karakteristikama sklopovlja koje koristi. Programer samo navede koji ureaj namjerava
koristiti (koji se tretira kao datoteka), koju operaciju te koji se podaci prenose ka
ureaju, odnosno gdje se smjetaju podaci koji se uzimaju s ureaja.
Sa sklopovskog gledita razlikuju se ureaji koji prijenos izvode programski s
prozivanjem (Direct I/O with Polling), pomou zahtjeva za prekidom (IRQ Driven I/O) i
direktan pristup memoriji (DMA).

52

10.5.1 Programski prijenos s prozivanjem (Direct I/O with Polling)


Kako je ve objanjeno kod ovakvog naina obavljanja U/I operacija sinkronizaciju i
prijenos izvodi procesor. Izvedba pogonskog programa i nain obavljanja operacije
itanja prikazan je slikom 2.

Slika 2. itanje s ureaja koji je programski upravljan.


Koraci koje izvodi pogonski program prilikom operacije itanja su sljedei:
1. Aplikacijski program izvodi read operaciju.
2. Pogonski program ispituje statusni spremnik kako bi ustanovio stanje ureaja. Ako je
zauzet eka (u programskoj petlji) dok ureaj ne postane slobodan.
3. Pogonski program upisuje naredbu u spremnik naredbe ureaja i time starta rad
ureaja.
4. Pogonski program ispituje statusni spremnik kako bi ustanovio da li je ureaj
spreman da preda podatke.
5. Pogonski program prenosi podatke iz meuspremnika ureaja u radno (memorijsko)
podruje aplikacijskog programa.
Koraci koje izvodi pogonski program prilikom operacije pisanja su sljedei:
1. Aplikacijski program izvodi write operaciju.
2. Pogonski program ispituje statusni spremnik kako bi ustanovio stanje ureaja. Ako je
zauzet eka (u programskoj petlji) dok ureaj ne postane slobodan.
3. Pogonski program prenosi podatke iz radnog (memorijsko) podruja aplikacijskog
programa u meuspremnik ureaja
4. Pogonski program upisuje naredbu u spremnik naredbe ureaja i time starta rad
ureaja.
5. Pogonski program ispituje statusni spremnik kako bi ustanovio da li je ureaj obavio
operaciju.

53

Sam nain rada ovog pogonskog programa je relativno jednostavan ali u radu se
nepotrebno troi procesorsko vrijeme na ekanje da ureaj obavi operaciju.
10.5.2 Obavljanje U/I operacija pomou zahtjeva za prekidom
Kako je ve objanjeno procesorsko vrijeme moe se bolje iskoristiti ukoliko postoji
sustav za obradu prekida. Izvedba pogonskog programa i postupak obavljanja operacije
itanja prikazan je na slici 3.

Slika 3. itanje s ureaja koji je upravljan pomou zahtjeva za prekidom.


Sama procedura itanja s ureaja u ovom sluaju je neto sloenija. Naime, kada se podaci predaju
ureaju, pogonski program ne ita status nego eka da ureaj preko sustava za obradu prekida dojavi da
je operacija uspjeno (neuspjeno) izvedena.

Koraci koje izvodi pogonski program prilikom operacije itanja su sljedei:


1. Aplikacijski program izvodi read operaciju.
2. Zasebni dio pogonskog programa (gornji dio ili top half) ispituje statusni spremnik
kako bi ustanovio stanje ureaja. Ako je zauzet eka (u programskoj petlji) dok
ureaj ne postane slobodan.
3. Gornji dio pogonskog programa upisuje naredbu u spremnik naredbe ureaja i time
starta rad ureaja.
4. Kada zavri s radom gornji dio pogonskog programa pohranjuje informacije o
operaciji koja se izvodi u zasebnu strukturu podataka ureaja tzv. tablicu stanja
ureaja (device status table). U ovoj tablici upisani su podaci vezani uz svaki ureaj
u sustavu. Tako gornji dio pogonskog programa upisuje u dio tablice rezerviran za
ureaj koji koristi (ureaj je obino odreen jedinstvenim brojem) potrebne
informacije kao to je npr. povratna adresa poziva, posebni parametri U/I operacije.
Sada procesor se moe prepustiti na koritenje drugom procesu na nain koji e biti
opisan u sljedeem poglavlju (Upravljanje procesima).
5. Ureaj kada obavi operaciju poalje procesoru zahtjev za prekidom. Zahtjev za
prekidom rezultira grananjem izvoenja na proceduru za obradu prekida (interrupt
handler).
6. Procedura za obradu prekida odredi koji ureaj je postavio zahtjev za prekidom te se
grana u posebnu proceduru vezanu uz ureaj (device handler).

54

7. Procedura za obradu prekida s ureaja ita potrebne informacije iz tablice stanja


ureaja.
8. Procedura za obradu prekida s ureaja prebacuje podatke iz meuspremnika
ureaja u memorijski prostor aplikacije.
9. Procedura za obradu prekida s ureaja ponaa se kao donji dio (bottom half)
pogonskog programa vraa izvoenje aplikaciji.
Operacija pisanja na U/I ureaj ima slian tijek.
Ovakav nain obavljanja U/I operacija ima prednost da dok jedan proces (program u
izvoenju) eka da U/I ureaj obavi operaciju izvoenje se moe prebaciti na drugi
proces. Naravno s gledita procesa izvoenje se nita ne ubrzava, ali s gledita sustava
procesor je bolje iskoriten jer se on prebacuje na izvoenje drugog procesa.
Naravno postoji i mogunost da se izvoenje samog procesa ubrza ovakvim pristupom.
Kako? to e biti objanjeno u sljedeem poglavlju.

55

10. SUSTAV DATOTEKA


Za veinu korisnika sustav datoteka je najvidljiviji dio operacijskog sustava. On predstavlja
sustav za spremanje i pristup podacima i programima koji pripadaju ili korisnicima ili
operacijskom sustavu. Openito sustav datoteka sastoji se od dva dijela: datoteka (files) i
direktorija (directory). U datotekama su pohranjene informacije, dok struktura direktorija
organizira i daje informacije o datotekama u sustavu. Osim navedena dva dijela pojedini sustavi
razlikuju i particije (partition) koje fiziki ili logiki razdvajaju vee sustave direktorija.
U ovom dijelu razmatrati e se razliita svojstva datoteka i struktura direktorija. Takoer
analizirati e se problem zatite datoteka koja je neophodna u viekorisnikom okruenju.
Konano e se razmatrati i dijeljenje datoteka izmeu vie procesa (file sharing).
10.1 Koncept datoteke
Informacije u raunalnim sustavima mogu se pohranjivati na razliitim medijima, magnetskim diskovima ili trakama
ili optikim diskovima. Jedinstveni logiki pristup informacijama na navedenim medijima osigurava operacijski
sustav. Operacijski sustav razdvaja fiziki zapis informacija na medijima od logikog znaenja skupine informacija
ili datoteke. Operacijski sustav informacije preslikava ili zapisuje na fiziki medij. Pri tome se misli na medije koji
pamte informacije i nestankom napona napajanja, magnetski disk ili traku, koji se obino nazivaju i sekundarna
memorija.

Pod pojmom datoteke podrazumijeva se skupina povezanih informacija pohranjena na


sekundarnoj memoriji. S korisnikog gledita datoteka je najmanji logiki segment sekundarne
memorije; informacija se zapisuje na sekundarnu memoriju samu u obliku datoteke. Obino
datoteke predstavljaju programe u bilo kojem obliku (izvornom, objektnom izvedbenom) ili
podatke. Podaci mogu biti numeriki, tekstualni, alfanumeriki, binarni. Informacije mogu biti
zapisane u slobodnom obliku ili mogu biti strogo formatirane. Openito, datoteka je niz bitova,
okteta, linija ili zapisa ije znaenje odreuje onaj koji stvara datoteku ili korisnik. Iz navedenog
slijedi da je koncept datoteka prilino openit.
Kako je ve reeno, informacije sadrane u datoteci odreuje onaj koji je stvara. Datoteka sadri
razliite informacije, izvorni, objektni ili izvedbeni program, numerike podatke, tekst, slike,
zvuni zapis itd. Datoteka ima odreenu zadanu strukturu vezanu uz tip datoteke. Tako je
tekstualna datoteka niz znakova organiziranih u linije, mogue i u stranice. Datoteka izvornog
programa je niz potprograma i funkcija koji su nadalje organizirani kao deklaracije iza kojih
slijede izvedbeni izrazi (naredbe). Objektna datoteka niz okteta organiziranih u blokove koje
raspoznaje program za povezivanje (linker). Izvedbena datoteka je niz sekcija koda koje program
punja upisuje u memoriju i izvodi. Interna struktura datoteka razmatrati e se u jednom od
narednih podpoglavlja.
10.1.1 Atributi datoteke
Datoteci se dodjeljuje ime, zbog prikladnosti upotrebe, te joj se pristupa pomou imena. Ime je obino niz znakova,
kao npr. predavanja.doc. Neki sustavi (Unix) razlikuju velika i mala slova, dok drugi (Windows) ne razlikuju.
Kada se datoteci dodijeli ime ona postaje nezavisna od procesa, korisnika pa ak i sustava koji ju je stvorio. Tako
npr. datoteku predavanja.doc stvara jedan korisnik dok je itati i mijenjati mogu drugi korisnici. Ova datoteka
moe se pomou diskete ili mree prenijeti na drugi sustav i tamo obraivati, pri emu je datoteka zadrala svoje
polazno ime.

Datoteka dobiva odreene atribute koje ne moraju imati svi sustavi, a to su:

Ime. Simboliko ime datoteke je jedina informacija o datoteci koja se pohranjuje u obliku
pristupanom ovjeku.
Tip. Ova informacija potrebna je sustavima koji podravaju razliite tipove datoteka.
Lokacija. Pokaziva na ureaj i mjesto na ureaju gdje je datoteka pohranjena.
Veliina. Trenutna veliina datoteke obino izraena u oktetima, rijeima ili blokovima.
Moe sadravati i informaciju o maksimalno dozvoljenoj veliini datoteke.
Zatita. Informacije o pravu pristupa datoteci, odnosno prava tko moe mijenjati, itat,
izvoditi itd. datoteku.
56

Vrijeme, datum i identifikacija korisnika. Ove informacije mogu se zapisivati za vrijeme


stvaranja, posljednje promjene ili posljednjeg koritenja datoteke. Korisne su za zatitu,
sigurnosne svrhe te praenje koritenja datoteke.
Sve informacije o datoteci zapisuju se u strukturu direktorija koji je takoer zapisan u sekundarnoj memoriji.
Veliina ovog zapisa je izmeu 16 i 1000 okteta. Tako u sustavima s velikim brojem datoteka veliina direktorija
moe biti reda Mokteta. Prema potrebi sadraj direktorija unosi se s diska u radnu memoriju i pomou njega
operacijski sustav upravlja pristupom i koritenjem datotekama.

10.1.2. Operacije nad datotekama


Datoteka je apstraktna struktura podataka. Potpuna definicija datoteka mogua je ukoliko se precizno definiraju
operacije nad datotekama. Operacijski sustav preko sistemskih poziva omoguava operacije nad datotekama. Slijedi
opis est osnovnih operacija nad datotekama:

Stvaranje datoteke (create). Kod stvaranja datoteke potrebna su dva koraka. Prvo, mora se
pronai mjesto za datoteku u sustav datoteka. Postupak odabira mjesta za pohranu datoteke
posebno e se obraditi. Drugo, mora se napraviti zapis o datoteci u sustavu direktorija. Taj
zapis sadri ime i lokaciju datoteke.

Upis u datoteku (write). Upis u datoteku izvodi se pomou posebnog sistemskog poziva
kojem se specificira ime datoteke kao i informacije koje se u datoteku upisuju. Pomou
imena datoteke, operacijski sustav pretrauje sustav direktorija i pronalazi lokaciju datoteke.
Sustav mora imati upisni pokaziva (write pointer) koji pokazuje na lokaciju na koju se moe
izvesti sljedei upis. Ovaj pokaziva se mijenja nakon svakog upisa.

itanje datoteke (read). itanje datoteke takoer se ostvaruje pomou sistemskog poziva
kojem se specificira ime datoteke kao i lokacija gdje u radnu memoriju se upisuje sljedei
blok datoteke. Ponovo operacijski sustav pretrauje sustav direktorija kako bi se pronala
lokacija datoteke. Sustav ima pokaziva za itanje (read pointer) koji pokazuje na mjesto u
datoteci gdje se izvodi sljedee itanje. Ovaj pokaziva se mijenja nakon svakog itanja.
Budui se openito iz datoteke ili ita ili pie sustav koristi jedinstven pokaziva za itanje i
pisanje tzv. pokaziva tekue pozicije (current file position pointer). Tako operacija itanja i
pisanja koristi isti pokaziva, ime je postignuta uteda u memorijskom prostoru kao i
jednostavnost sustava.

Postavljanje unutar datoteke (reposition within a file). Sustav pretrauje direktorij kako bi
pronaao lokaciju datoteke i pokaziva tekue pozicije koji se postavlja na odreenu zadanu
vrijednost. Postavljanje unutar datoteke ne zahtjeva praktiki nikakvu U/I aktivnost. Ova
operacija poznata je pod nazivom pretraivanje (seek).

Brisanje datoteke (delete). Za brisanje datoteke pretrauje se direktorij i pronalazi datoteka.


Oslobaa se prostor koji je datoteka zauzimala i brie se ime datoteke iz direktorija.

Kraenje datoteke (truncating). Postoje situacije kada korisnik eli izbrisati sadraj
datoteke ali ostaviti ime i atribute datoteke. Umjesto brisanja i stvaranja nove datoteke s istim
imenom i atributima, postavlja se veliina datoteke na nulu.

Navedenih est osnovnih operacija predstavljaju minimum funkcija koje operacijski sustav mora
podravati. Obino se susreu i dodatne operacije kao npr. dodavanje datoteci novih informacija
(append) ili promjena naziva datoteke (rename). Spomenutim osnovnim operacijama realiziraju
se druge operacije nad datotekama. Tako npr. kopiranje sadraja datoteke ostvaruje se
stvaranjem nove datoteke, itanjem sadraja stare datoteke i upisom istog u novu.
Veina operacija s datotekama zahtijevaju pretraivanje direktorija. U cilju izbjegavanja
uestalih pretraivanja direktorija sustav obino otvara datoteku sistemskim pozivom open.
Operacijski sustav ima tablicu u kojoj pohranjuje podatke o otvorenim datotekama (open file
table). Kada se pristupa otvorenim datotekama, ne pretrauje se direktorij, nego se pristupa

57

tablici otvorenih datoteka. Po zavretku koritenja datoteke ona se zatvara, sistemskim pozivom
close, te je operacijski sustav izbacuje iz tablice otvorenih datoteka.
Neki sustavi automatski otvaraju datoteku kada neki proces izvodi operaciju nad njom, te je
automatski zatvaraju kada je proces vie ne koristi. Ipak, veina sustava zahtjeva da proces
eksplicitno otvori datoteku te je po zavretku koritenja i zatvori odgovarajuim sistemskim
pozivima. Sistemski poziv otvaranja datoteke sastoji se od pretraivanja direktorija, kopiranjem
sadraja direktorija vezanog uz traenu datoteku u tablicu otvorenih datoteka uz pretpostavku da
atributi datoteke dozvoljavaju takav pristup. Ova operacija vraa procesu pokaziva na lokaciju u
tablici otvorenih datoteka gdje je smjetena traena datoteka. U daljnjim pristupima datoteci
proces vie ne poziva datoteku po imenu nego se poziva pokaziva koji je vratio sistemski poziv
open. Ovim je znatno pojednostavljeno obavljanje U/I operacija.
Implementacija sistemskih poziva open i close u viekorisnikom okruenju, npr. kod Unixa, je
neto sloenija. U ovim sustavima vie korisnika moe istovremeno otvoriti datoteku. Zato
operacijski sustav vodi dvije tablice vezane uz otvorene datoteke. Jedna tablica biljei otvorene
tablice za svaki pojedini proces U ovoj tablici zapisane su informacije vezano uz datoteke koje
proces koristi. Tako se u ovoj tablici moe za svaku datoteku nai pokaziva tekue pozicije koji
proces koristi kod operacija itanja i pisanja.
Svaki redak tablice otvorenih datoteka pokazuje na odgovarajui redak sistemske tablice
otvorenih datoteka (system-wide open file table). Sistemska tablice otvorenih datoteka sadri
popis svih otvorenih datoteka, te informacije o datotekama koje su nezavisne o procesu koji
koristi datoteku kao to je lokacija datoteke na disku, atributi datoteke, veliina. Kad proces
otvara datoteku koju je ve otvorio neki drugi proces, tada se jednostavno otvara novi redak u
tablici otvorenih datoteka procesa u koju se upisuje pokaziva na redak sistemske tablice
otvorenih datoteka i pokaziva tekue pozicije. Obino se u sistemskoj tablici otvorenih datoteka
nalazi i informacija o broju procesa koji koriste pojedinu datoteku. Svako novo otvaranje
datoteke rezultira poveanjem ovog broja dok zatvaranje ga umanjuje. Kada je broj procesa koji
koriste datoteku jednak nuli datoteka se izbacuje iz sistemske tablice otvorenih datoteka.
Zakljuno mogu se nabrojiti neke informacije vezane uz otvorene datoteke koje je potrebno
pratiti:

Pokaziva na datoteku (file pointer). Kod sistema koji ne biljee pomak unutar datoteke
(file offset) kao sastavni dio sistemskih poziva itaj i pii, mora se biljeiti posljednja lokacija
zapisa/itanja u obliku pokazivaa tekue pozicije. Ovaj pokaziva jedinstven je svakom
procesu koji koristi datoteku i zato se mora posebno biljeiti neovisno o atributima datoteke
zapisanim na disku.

Brojilo otvorenih datoteka. Po zavretku koritenja datoteke od strane svih procesa


operacijski sustav izbacuje datoteku iz sistemske tablice otvorenih datoteka oslobaajui
mjesto za novu datoteku. U suprotnom moe se dogoditi da se napuni sistemska tablica
datoteka, te da nema mjesta za novo otvorene datoteke. Budui da je potrebno ekati da svi
procesi zatvore odreenu datoteku brojilo otvorenih datoteka osigurava informaciju o broju
procesa koji koriste datoteku. Kada je vrijednost brojila nula, ni jedan proces ne koristi
datoteku i ona se moe izbaciti iz sistemske tablice otvorenih datoteka.

Pozicija datoteke na disku. Informacije potrebne za pronalaenje datoteku na disku dre se


u radnoj memoriji iz razloga da se ubrza pristup datoteci.

Pojedini operacijski sustavi omoguavaju zakljuavanje dijelova otvorene datoteke za pristup


drugim procesima ili dijeljenje dijelova datoteke izmeu vie procesa ili preslikavanje dijela
datoteke u memoriju u sustavima koji koriste virtualnu memoriju. Posljednja opcija naziva se
memorijsko preslikavanje datoteke (memory mapping a file) i omoguava da dio virtualnog
adresnog prostora bude dodijeljen dijelu ili dijelovima datoteke, slika 10.1. itanje i pisanje na te
58

memorijske adrese tretira se kao itanje i pisanje u datoteku i pojednostavnjuje pristup


datotekama. Zatvaranje datoteke rezultira prepisivanjem sadraja pridruenog memorijskog
prostora na disk i njegovo izbacivanje iz virtualnog adresnog prostora procesa. Vie procesa
moe preslikati istu datoteku u vlastitu virtualnu memoriju i na taj nain dijeliti podatke. Pisanje
bilo kojeg procesa u zajednike dijelove datoteke automatski je vidljivo i drugim procesima.
Razlog je to u memoriji postoji jedinstvena kopija dijelova datoteke, a sustav za upravljanje
memorijom izvodi preslikavanje razliitih logikih prostora procesa u fiziki. Takoer, ovim
pristupom jednostavno je sinkronizirati pristup zajednikim podacima u datoteci.
10.1.3 Tipovi datoteka
Kod projektiranja operacijskog sustava, posebice sustava datoteka, potrebno je donijeti odluku
da li je potrebno da operacijski sustav raspoznaje razliite tipove datoteka ili da jedinstveno
tretira sve datoteke. Ukoliko operacijski sustav razlikuje tipove datoteka tada je mogue da on i
kontrolira na odreeni nain i koritenje i operacije nad datotekama. Tako npr. uobiajena
pogreka je ispis objektnog oblika programa na pisau. Ispis je obino nerazumljiv i beskoristan
korisniku pa je dobro da operacijski sustav sprijei spomenutu operaciju.

3
1
2
3
4
5
6

1
2
3
4
5
6

1
5
4
2
radna memorija

virtualna
memorija
procesa A

virtualna
memorija
procesa B

1 2 3 4 5 6
datoteka
na disku

Slika 10.1. Memorijski mapirana datoteka.


Uobiajeno rjeenje razlikovanja tipova datoteka je ukljuivanje tipa datoteke kao sastavni dio
imena datoteke. Tako se ime datoteke dijeli na dva dijela ime i proirenje (ekstenzija) koji su
obino odvojeni tokom. Tako i korisnik i operacijski sustav razlikuju razliite tipove datoteka.
Operacijski sustav temeljom proirenja odreuje operacije koje je dozvoljeno izvoditi nad
pojedinim tipovima datoteka. Tako npr. MS DOS koji za ime datoteke koristi osam znakova i do
tri znaka za proirenje zakljuiti e da je dozvoljeno izvoditi datoteke s proirenjem .exe ili .com,
dok datoteke s proirenjem .bat izvode se na drugaiji nain. Slino razmatranje moe se provesti
za izvorni program u C-u. C program prevodilac oekuje da izvorna datoteka ima ekstenziju .c.
Unix operacijski sustav ne podrava ovakav pristup datotekama. Ekstenzija je samo naznaka
korisniku o kakvom se tipu datoteke radi.
10.1.4 Struktura datoteke
Identifikacija tipa datoteke moe se koristiti za odreivanje njene strukture. Nadalje, pojedine datoteke moraju se
podrediti strukturi koju odreuje i operacijski sustav. Tako npr. operacijski sustav od izvedbene datoteke moe
zahtijevati i informacije gdje se datoteka upisuje u memoriju, te gdje se nalazi prva naredba koju je potrebno izvesti.

59

Naravno, rjeenje u kojem operacijski sustav razaznaje i razliito tretira razliite tipove datoteka
pokazalo se neprikladno. Prvenstveno rezultira u poveanom operacijskom sustavu, budui za
rad sa svakim tipom datoteka mora postojati zasebni dio koda. Dodatno, svaka datoteka mora se
definirati kao jedan od tipova koje operacijski sustav podrava. Tako ozbiljni problemi nastaju s
aplikacijama koje koriste strukture datoteka neraspoznatljive operacijskom sustavu.
Neka npr. operacijski sustav podrava dva tipa datoteka, ASCII tekstualne datoteke razdvojene
znakom za novi red i povratak na poetak reda (Line Feed, Carriage Return), te binarne,
izvedbene datoteke. Neka korisnik nastoji tekstualnu datoteku preko mree sigurno prebaciti na
drugo raunalu. Tada se prenosi ifrirana (encrypted) datoteka. Ova datoteka nije vie ASCII
datoteka, nego sluajni niz bitova. Na prvi pogled izgleda kao binarna datoteka iako ju nije
mogue izvoditi. Operacijski sustav nije u stanju ispravno raditi s ovakvom datotekom.
Tako operacijski sustavi podravaju minimalan broj datoteka razliitih struktura. Ovaj pristup
prihvaen je kod UNIX-a, DOS-a i drugih operacijskih sustava. Kod UNIX-a je svaka datoteka
niz okteta i operacijski sustav nema mogunost interpretacije sadraja datoteke. Aplikacija koja
koristi datoteku ima proceduru za interpretaciju sadraja datoteke. Ovakav pristup osigurava
maksimalnu fleksibilnost ali minimum podrke od strane operacijskog sustava. Naravno,
operacijski sustav mora podravati minimalno jednu strukturu datoteke, a to su izvedbene
datoteke. Tako operacijski sustav mora imati podrku za upis u memoriju i izvoenje ovih
datoteka.
10.1.5 Interna struktura datoteke
Odreivanje poloaja podatka unutar datoteke moe biti jako sloeno. Podaci na disk se zapisuju u blokove
odreene veliine. S druge strane datoteka se sastoji od niza logikih zapisa ija veliina se obino ne poklapa s
veliinom bloka. Zato je potrebno zapise datoteke preslikati u fizike blokove diska.

UNIX npr. datoteku definira kao niz okteta. Svaki oktet je odreen svojim pomakom od poetka
datoteke. Tako je logiki zapis veliine 1 okteta, dok npr. disk koristi fizike sektore veliine
npr. 1024 oteta. Operacijski sustav ili korisniki program pakira logike zapise u fizike blokove
i obratno.
Veliina logikog zapisa, veliina bloka i tehnika spremanja odreuju broj logikih zapisa koji se
preslikavaju u svaki fiziki blok. Kako je ve spomenuto spremanje logikih zapisa u fizike
blokove izvodi ili operacijski sustav ili korisniki program.
U svakom sluaju datoteka se moe promatrati kao niz fizikih blokova, a sve osnovne U/I
funkcije rade s fizikim blokovima. Pretvorba fizikih blokova u logike zapise i obratno je
relativno jednostavan programski zadatak.
Slino kao i kod dodjele memorije po stranicama, ovakav pristup ima samo nedostatak interne
fragmentacije.
10.2. Nain pristupa datotekama
U datoteci su pohranjene razliite informacije. Kod koritenja datoteke, za pristup informacijama
istu je potrebno upisati u radnu memoriju. Tako postoje razliiti naini pristupa informacijama u
datotekama. Neki sustavi podravaju samo jedan nain, dok drugi vie naina pristupa. Na taj
nain korisnik odabire najpovoljniji pristup informacijama.
10.2.1 Slijedni pristup (sekvencijalni)
Slijedni pristup je najjednostavniji nain pristupa informacijama unutar datoteke. Informacije se obrauju slijedno,
jedan zapis za drugim. Ovakav nain pristupa je najuobiajeniji, tako da se on koristi kod editora, programa
prevodilaca i sl.

Veina operacija nad datotekama sastoji se od itanja i pisanja. Operacija itanja prebacuje
sadraj bloka u memoriju i postavlja pokaziva na sljedei blok. Slino vrijedi i za operaciju
pisanja s razlikom da se blok iz memorije prebacuje na sekundarnu memoriju, a pokaziva se
60

uveava da pokazuje na sljedei blok. Ovaj nain pristupa temeljen je na nainu zapisa na
magnetske trake iako se i koristi za diskove.
10.2.2 Izravan pristup
Izravan ili relativni pristup je sljedea metoda pristupa blokovima. Datoteka je izraena od logikih zapisa
definirane nepromjenjive veliine. Ovakvim pristupom mogue je zapisima pristupati proizvoljnim redoslijedom.
Ovakav nain pristupa temeljen je na nainu zapisa na magnetski disk. Svakom bloku ili zapisu mogue je izravno
pristupati poznavajui njegov broj poevi od poetka datoteke. Tako ne postoji ogranienje u redoslijedu itanja i
pisanja u blokove datoteke.

Ovakav nain pristupa koristi se u bazama podataka, gdje se izraunava blok u kojem je zapisana
traena informacija te se bloku izravno pristupa.
Svi operacijski sustavi ne podravaju oba naina pristupa datotekama. Moe se primijetiti da je
izravan pristup openitiji te da se njime jednostavno moe simulirati slijedni pristup.
10.3 Struktura direktorija
Sustav datoteka moe poprimiti velike razmjere. Veliki sistemi pohranjuju tisue datoteka na diskovima ukupnog
kapaciteta nekoliko stotina G-okteta. Upravljanje ovolikim sustavom zahtjeva dobru organizaciju. Ona se obino
sastoji od dva dijela. Kao prvo sustav datoteka dijeli se na particije, koje se nazivaju mini diskovi kod IBM raunala
ili volumeni kod PC raunala. Zasebno svaki disk u sustavu sadri barem jednu particiju, koja je najnia razina na
kojoj je smjeten sustav datoteka (datoteke i direktoriji datoteka). Ponekad, particije se koriste da bi se na jednom
disku stvorilo vie logikih jedinica. Svaka od njih tretira se logiki kao zasebna jedinica za uskladitenje podataka.
S druge strane neki sustavi podravaju grupiraju vie diskova u jednu logiku cjelinu omoguavajui pohranu veih
datoteka od kapaciteta diska. Ovakvim pristupom korisnik vidi samo sustav direktorija u koji se pohranjuju
datoteke, a moe u potpunosti zanemariti probleme vezane uz fiziki smjetaj i pronalaenje datoteka. Tako particija
praktiki predstavlja virtualni disk.

Na drugoj razini svaka particiji biljei informacije o datotekama smjetenim u njoj, a za to koristi
direktorij particije ili tablicu sadraja. Direktorij biljei sve informacije potrebne za rad s
datotekama u odreenoj particiji kao to je naziv datoteke, tip, veliina, datum nastajanja, datum
posljednje izmjene, lokacija na disku i sl. Na slici 10.2. prikazana je tipina organizacija sustava
datoteka.
direktorij
particija A

direktorij
disk 2

datoteke
disk 1 particija C
direktorij

particija B

datoteke

datoteke

disk 3

Slika 10.2. Tipina organizacija sustava datoteka.


Direktorij se moe promatrati kao simbolika tablica koja imenima datoteka, koja su prihvatljiva
za korisnika, pridodaje ostale informacije o datoteci (file entries). S obzirom da na jednoj
particiji moe se nalaziti i tisue datoteka slijedi zakljuak da se direktoriji mogu organizirati na
vie naina. Kod razmatranja vezanih uz logike strukture direktorija potrebno je navesti koje se
operacije izvode nad njima:

Traenje datoteke: Korisnik ima zahtjev za pretraivanje direktorija ili strukture direktorija
kako bi pronaao datoteku s odreenim imenom ili skupinu datoteka s istim imenima ali

61

razliitih tipova ili sve datoteke odreenog tipa. Slijedi da su mogui razliiti zahtjevi pri
pretraivanju direktorija.

Stvaranje datoteke: Potrebno je stvoriti datoteku u odreenom direktoriju.

Brisanje datoteke: Kada datoteka nije vie potrebna potrebno ju je izbrisati, odnosno izbaciti
iz direktorija.

Preimenovati datoteku: Ime datoteke obino je vezano uz njen sadraj tako da korisnik
ukoliko promijeni sadraj datoteke moe mijenjati i njeno ime. Promjena imena moe
ukljuivati i premjetanje datoteke unutar sustava direktorija.

Sigurnosno spremanje datoteka: Zbog znaaja kojeg imaju informacije zapisane u


datotekama potrebno je u odgovarajuim intervalima praviti sigurnosne kopije datoteka ili
odreenih direktorija na npr. magnetske trake.
Sljedea razmatranje opisuju uobiajene strukture direktorija.

10.3.1 Direktoriji s jednom razinom


Najjednostavnija organizacija je jedna razina direktorija. Sve datoteke upisane su na jednom direktoriju iju
strukturu je jednostavno podrati i realizirati, slika 10.3.

dirktorij

pred1

pred2

test1

prog1

slika1

slika2

adrese

datoteke
Slika 10.3. Direktorij s jednom razinom.
Unato jednostavnosti ovakva organizacija ima znaajnih nedostataka. Poveanjem broja datoteka teko je pratiti
imena datoteka i povezivati ih s njihovim znaenjem. Posebice je problem ukoliko vie korisnika koristi istu
particiju. Tada je teko izvoditi zatitu datoteka izmeu korisnika. Zbog navedenog ovakva organizacija je krajnje
nepraktina i ne koristi se.

10.3.2 Direktoriji s dvije razine


Ukoliko vie korisnika koristi raunalni sustav moe se svakom korisniku odrediti vlastiti direktorij u koji on
pohranjuje svoje datoteke. Ova organizacija vodi na sustav direktorija u dvije razine, slika 10.4.
Korisnik kod spajanje na sustav (login) upisuje svoje korisniko ime i operacijski sustav automatski ga vodi na
njegov direktorij. Ovakvo rjeenje omoguava zatitu datoteka izmeu razliitih korisnika. Svaki korisnik daje
svojim datotekama proizvoljna imena koja se mogu podudarati s imenima datoteka drugih korisnika. Kako se te
datoteke nalaze u razliitim direktorijima sustav ih razlikuje. Ipak ako korisnik ima veliki broj datoteka, to nije
neuobiajeno ponovo se javlja problem definiranja imena i povezivanja imena sa sadrajem datoteka.

glavni
dirktoriji

korisniki
dirktoriji

tekst

progr

korisnik1 korisnik2 korisnik3

data

prog

data

prog

data

datoteke

Slika 10.4. Direktorij s dvije razine.


U ovakvom rjeenju datoteka je jedinstveno odreena korisnikim imenom i imenom datoteke,
odnosno tz. stazom.

62

U sustavima je uobiajeno da se nalaze i odreeni podaci i programi koje koriste razliiti


korisnici npr. programi prevodioci, biblioteke, rjenici i sl. Takoer, uobiajeno je da korisnici ili
grupe korisnika meusobno surauju odnosno rade na istim datotekama. Ponueno rjeenje
zatite da korisnik moe koristiti samo direktorij koji njemu pripada ne omoguava navedeno.
10.3.3 Stablasta struktura direktorija
Stablasta struktura direktora, slika 10.5, je poboljanje dvo-razinske strukture. Naime, ukoliko se dozvoli da svaki
direktorij ima svoje uz datoteke i druge direktorije, poddirektorije, dobiva se jako fleksibilna struktura direktorija.
Ovim rjeenjem korisnik ima apsolutnu slobodu da maksimalno uinkovito organizira svoje datoteke. Ovakvo
rjeenje temelj je svih dananjih sustava datoteka.

korijen

korisnik1 korisnik2 korisnik3

progr

prog1

prog2

data

prog

data1

data2

data

prog

prog1

data

prog2

Slika 10.5. Stablasta struktura direktorija.


Kod ovakvog rjeenja potrebno je razlikovati direktorij od datoteke budui svaki direktorij moe
u sebi sadrati direktorije i datoteke. Direktoriji je jednostavno gledajui jedna datoteka. Sustav
ih razlikuje pomou jednog identifikacijskog bita. Tako za svaki entitet u direktoriju radi se o
direktoriju ukoliko je identifikacijski bit 1 odnosno u suprotnom o datoteci.
Datoteku se u ovakvom sustavu identificira njenom stazom (path) koja ukljuuje informaciju o
particiji, direktorija u kojoj se nalazi datoteka ili sljedeeg direktorija, jednog ili vie njih, te
konano naziva datoteke. Korisnik se moe kretati iz direktorija u direktorij. Direktorij u kojem
se trenutno nalazi naziva se tekui direktorij (current directory). U tekuem direktoriju obino su
spremljene datoteke koje su od interesa za taj direktorij, odnosno funkcionalno ili logiki su
vezani za njega. Koristei imena datoteka u tekuem direktoriju korisnik izvodi operacije nad
njima. Prijelaz u drugi tekui direktorij izvodi se posebnim sistemskim pozivom. Nakon prijelaza
u novi tekui direktorij imenom datoteke mogu se izvoditi operacije samo nad datotekama u
novom tekuem direktoriju.
U prvom korisnik se postavlja u svoj poetni korisniki direktorij npr. root/users/gotovac koji
slijedi iz uvjeta spajanja korisnika na sustav, korisnika identifikacija i zaporka. Procedura za
spajanje korisnika (login) koristi korisnike podatke kako bi iz zasebne datoteke pronala
pokaziva na poetni korisniki direktorij. Iz ovog direktorija korisnik prema potrebi i pravima
prelazi u druge direktorije.
Kako je ve spomenuto datoteka je ovakvim rjeenjem odreena svojom stazom, od korijena do
direktorija u kojem se nalazi te njenim imenom. Ovo se naziva apsolutna staza. Kako bi se
63

korisniku olakalo koritenje sustava datoteka mogue je datoteku odrediti i pomou relativne
staze, odnosno specificirajui put iz trenutnog direktorija vertikalno do direktorija u kojem se
datoteka nalazi. Tako npr. za ako je trenutni direktorij root/users/gotovac, a trai se datoteka s
apsolutnom stazom root/users/gotovac/programi/test.c, dovoljno je za pronalaenje ove datoteke
specificirati programi/test.c.
S obzirom na ovakvo rjeenje sustava direktorija, te znaaja datoteka za korisnika, potrebno je
posebnu panju obratiti na neke operacije nad datotekama, odnosno direktorijima. To se
posebice odnosi na brisanje direktorija. Strategijsko pitanje je da li dozvoliti izbrisati direktorij
ukoliko isti nije prazan. Da li zahtijevati od korisnika da prvo pobrie sve datoteke iz direktorija,
a tek onda da brie direktorij. Ovakav pristup unosi jednu dozu sigurnosti u postupak brisanja
datoteka, ali zahtjeva poveani broj operacija. Zato se potrebno odluiti izmeu dodatne provjere
i jednostavnosti operacije za korisnika. Tako npr. MS DOS ne dozvoljava brisanje direktorija
ukoliko on nije prazan to nije sluaj kod Unix-a.
Operacijski sustavi kako bi olakali koritenje datoteka, a posebice datoteka koje se odnose na
programe, dozvoljavaju da korisnik odredi, specificira, vie direktorija ili staza u kojima e se
traiti datoteka. Tako, ako korisnik upie ime datoteke ona e se prvo traiti u tekuem
direktoriju, a ako tu nije prisutna trai se na prvi specificirani direktorij, preko njegove staze,
zatim na sljedei itd. Ovim pristupom omoguava se korisniku da ukoliko su imena datoteka
jedinstvena u sustavu da se istima pristupa samo preko imena to olakava pristup jer nije
potrebno pamtiti duge staze.

64

You might also like