Professional Documents
Culture Documents
8.1
UPRAVLJNJE MEMORIJOM
UVOD
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:
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
30k
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
15
0
OFFSET
15
0
SEGMENT
0000
20 BITA
ADRESA
SEGMENTA
16 BITA
ZBRAJALO
A 19 - A 0
20 BITA
FIZIKA ADRESA
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
100
100
15
50ms .
10
10
operacijski
sustav
korisniki
prostor
slobodna
memorija
512k
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
CPU
fizika
adresa
>
gornja
granica
da
ne
pogreka, prekid
fizika
adresa
<
da
memorija
ne
pogreka, prekid
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
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)
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.
12
operacijski
sustav
400k
operacijski
sustav
400k
P5
P5
900k
900k
1000k
spajanje
P4
P4
1600k
1700k
P3
1900k
2000k
2300k
2560k
P3
2560k
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
Stranienje (paging)
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
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
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
CPU
logika
adresa
p
broj
stranice
broj
okvira
TLB
pogodak
fizika
adresa
f
memoriija
TLB
p
TLB promaaj
f
tablica stranica
28 - 20
40% .
20
24.4 - 20
22% ,
20
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
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:
Zakljuaj je da izvoenje programa koji nisu cijeli upisani u memoriji ima brojne prednosti i za korisnika i
za raunalni sustav.
19
stranica 0
stranica 1
stranica 2
stranica 3
tablica
stranica
stranica n
virtualna
memorija
fizika
memorija
sekundarna
memorija
(disk)
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:
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
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
9.3
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.
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
3.
4.
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
U praksi se susreu brojne strategije zamjene stranica, a koje imaju jedinstven cilj, zadrati to manji broj
promaaja uz prihvatljivu sklopovsku i programsku potporu.
broj promaaja
12
10
8
6
4
2
0
0
broj okvira
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
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.
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
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:
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.
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
1.
2.
3.
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
1.
2.
3.
4.
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.
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
Problem koji do sada nije razmatran je kako podijeliti okvire meu procesima? Koliko procesa dozvoliti da
se konkurentno izvode?
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
a1
20
200
60 5, a 2
60 55 .
220
220
3 20
200
60 14, a 2
60 46 .
300
260
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
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.
gornja
granica
donja
granica
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.
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.
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;
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
35
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.
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
10.3.1.1
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
10.3.1.2
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
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
korisniki proces
ekanje
U/I procedura
sustav za
obradu prekida
sklopovlje
prijenos podataka
vrijeme
a)
b)
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
42
memorija
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;
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 [N]
stog
stog
stog
[N]
ekanje
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
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
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);
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
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;
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
52
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.
54
55
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
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).
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.
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
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
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.
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.
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.
glavni
dirktoriji
korisniki
dirktoriji
tekst
progr
data
prog
data
prog
data
datoteke
62
korijen
progr
prog1
prog2
data
prog
data1
data2
data
prog
prog1
data
prog2
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