Professional Documents
Culture Documents
Operativni Sistemi 1
Operativni Sistemi 1
Operativni sistemi 1
Poetni kurs
I Uvod
II Osnovi arhitekture raunara
III Upravljanje procesima
IV Upravljanje memorijom
V Ulazno/izlazni sistemi
VI Fajl sistemi
VII Zakljuak
O predmetu
Pojam, namena i funkcije operativnih sistema
Istorijat i vrste operativnih sistema
Kol. # SI IR
1 U redovnom terminu 1. kol. SI U redovnom terminu 2. kol. SI
2 U redovnom terminu 2. kol. SI U redovnom terminu 2. kol. SI
3 U redovnom terminu junskog roka U redovnom terminu junskog roka
ta je operativni sistem?
Zato postoje OS?
Osnovni zadaci i funkcije OS
ta sve obuhvata OS?
Operating System
Hardware
Paketni sistemi
Sistemi sa vremenskom raspodelom
Personalni raunarski sistemi
Multiprocesorski sistemi
Distribuirani sistemi
Sistemi za rad u realnom vremenu
OS CPU 1 2 3 1 2 1 3
I/O 1 2 3 1 2
Job 1
Proc 1
Proc 2
Proc 3
User 1
User 2 Response time
User 3
Proc 1
Proc 2
Proc 3
User 1
User 2 Response time
User 3
OM
Vie procesora sa deljenom memorijom
Ciljevi:
poveati propusnu mo (throughput) koliina uraenog posla u
jedinici vremena; panja: poveanje nije linearno!
uteda zbog deobe periferijskih ureaja
poveanje pouzdanosti tolerancijom otkaza (fault tolerance)
Simetrini i asimetrini sistemi
Asimetrini sistemi:
specijalizovani I/O mikroprocesori (npr. za disk, tastaturu)
master/slave sistemi
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 29/294
Distribuirani sistemi
Skup procesora bez zajednike memorije,
povezanih komunikacionom mreom:
specijalizovani homogeni distribuirani sistemi
lokalne mree (Local Area Network, LAN)
mree ireg podruja (Wide Area Network, WAN)
Internet
Svi moderni OS podravaju umreavanje:
moduli za komunikacione protokole (TCP/IP, PPP)
Internet usluge
pristup fajlovima preko mree (distribuirani fajl sistemi)
Distribuirani OS: OS koji na distribuiranom sistemu
stvara utisak jedinstvenog skupa dosupnih resursa
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 30/294
Sistemi za rad u realnom vremenu
Sistem za rad u realnom vremenu (real-time
system, RTS): sistem za koga nije samo vano da
rezultat bude logiki ispravan, ve i da je
proizveden na vreme
Hard RTS: definisani vremenski rokovi moraju da
budu ispotovani, inae e doi do traginih
posledica po ivote i zdravlje ljudi, materijalna
sredstva ili ivotnu sredinu
Soft RTS: definisane vremenske rokove treba
potovati, ali je dopustivo da se oni ponekad i
prekorae, sve dok su performanse sistema u
okvirima zadovoljavajueg
Aritmetiko-logika jedinica
Programski dostupni registri
Programski broja
Izvravanje instrukcije
Naini adresiranja
Potprogrami i stek
Kontekst procesora
5 (0011)
3 (0101) 3 (0010)
2 (0011)
ADD (10)
MUL (00)
8 (0110)
6 (1000)
8 (0110)
6 (1000)
PC = PC+1
Instruction Fetch
Decode
Instruction
Execution Yes
More?
Interrupt
Handling
Fetch Operands
Compute Result
Store Result
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 38/294
Naini adresiranja
Neposredno (immediate): operand (samo izvorini) je
neposredno zapisan u samoj instrukciji:
LOAD ...,#0F1Ah
LOAD ...,#Const
Registarsko direktno (register direct): operand je u registru
koji je zapisan u instrukciji:
LOAD R2,...
Memorijsko direktno (memory direct): operand je u
memoriji na adresi koja je zapisana u instrukciji:
LOAD ...,[0F1Ah]
LOAD ...,[VarX]
C-S
A
B-N
E
Push A - N
Pop
Push B - E
Push C - S
emu prekidi?
Pojam prekida
Obrada prekida
Odreivanje adrese prekidne rutine
Maskiranje prekida
Prioritiranje prekida
Izvori prekida
Maskiraj prekide
PC:=A
Control
Start
Device
Status
Ready?
Ready
Data
CPU
Device Control
Addr Data
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 61/294
Generiki model I/O ureaja
Problem: Kako CPU da sazna da je I/O ureaj zavrio
zadatu operaciju i spreman je za sledeu?
Dva naina:
Uposleno ekanje (busy waiting) ili prozivanje (polling):
CPU oitava statusni registar ureaja, ispituje bit spremnosti i
ponavlja to isto sve dok bit spremnosti ne bude postavljen
Mehanizam prekida (interrupt): signal sa bita spremnosti je
povezan na ulaz za prekid procesora; kada ureaj postane
spreman, procesor dobija prekid i u prekidnoj rutini zadaje novu
operaciju
Status
IRQ Ready
CPU Device
inc r1
dec r2
jnz Wait
Korienje prekida:
CPU zada I/O operaciju, a onda izvrava neki drugi posao,
nezavisan od zadate I/O operacije
kada zavri operaciju i bude spreman za sledeu,
ureaj generie prekid
u prekidnoj rutini CPU zadaje novu operaciju i vraa se
na prekinuti posao
Interrupt_Routine:
Transfer_Data;
Prepare_for_Next;
if last then Stop_Transfer;
Main:
load r1,#BlockAddr
load r2,#Count
load r3,#0; End Flag
store [Ctrl],#00..1b; Start
...
Wait: cmp r3,#1; End of transfer?
jnz Wait
...
IntR: load r0,[r1]
store [Data],r0
inc r1
dec r2
jnz Ret
load r3,#1
store [Ctrl],#0; Stop
Ret:iret ; Interrupt return
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 66/294
Direktan pristup memoriji (DMA)
DMA (Direct Memory Access) kontroler je poseban ureaj
specijalizovan da sam obavlja transfer bloka podataka sa ili
na periferijski ureaj, na zahtev procesora
Procesor samo zada parametre transfera (adresu i veliinu
bloka) i potom radi neki drugi posao, nezavisan od
transfera
DMA sam interaguje sa I/O ureajem na isti nain kao to
bi to procesor radio (polling ili korienjem signala ready
hand-shaking) i prenosi podatke
Kada zavri prenos, DMA postavlja svoj indikator zavretka
u statusnom registru
Kako da procesor zna da je DMA zavrio prenos?
Isto kao i ranije:
ispitivanjem indikatora u statusnom registru DMA (busy waiting)
signal zavretka prenosa generie procesoru zahtev za prekid
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 67/294
Direktan pristup memoriji (DMA)
Main:
Main:
store [DMAAddr],#BlockAddr
Init_Transfer;
store [DMACount],#Count
Do_something_else; load r1,#0; End Flag
Wait_for_end_of_trans; store [IOCtrl],#00..1b; Start
store [DMACtrl],#10..0b; Start
Interrupt_Routine: ...
Wait: cmp r1,#1; End of transfer?
Stop_Transfer;
jnz Wait
...
01FF
PAddr= 0F00
... 01FD
Address ... 01FE
Mapping ... 01FF
... ...
... ...
... ...
... 0F00
... 0F01
... 0F02
VAddr= 3B2800
3B27FF 0F03
...
... 0F04
... ...
CPU
PA 1 PA
...
...
PA
CPU
PA 0 Disk Addr
...
...
Page Fault
CPU
PA Frame Offset
RWX
Prohibited? Exception
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 82/294
Stranino preslikavanje
Prednosti:
relativno jednostavan hardver, pravilna arhitektura,
jednostavno i efikasno preslikavanje (u odnosu na ostale
tehnike preslikavanja)
nema eksterne fragmentacije (kao kod segmentne
organizacije)
jednostavan zadatak za OS u pogledu alokacije prostora
nema potrebe za upasivanjem bloka memorije
Nedostaci:
stranice nisu logike celine
zbog toga nije sasvim prirodno uvoditi zatitu pristupa na
nivou stranice (mada je mogue)
interna fragmentacija
+ ...
RWX
Size Exception
>=
PA PA
Prohibited?
Offset Exception
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 85/294
Segmentno preslikavanje
Prednosti:
segmenti su logike celine, pa je prirodno uvoditi
zatitu pristupa segmentu i prekoraenja veliine; npr.
code segment je read-only
nema interne fragmentacije
Nedostaci:
sloeniji hardver, manje efikasno preslikavanje
(u odnosu na stranino preslikavanje)
eksterna fragmentacija
sloeniji zadatak za OS u pogledu alokacije prostora
potreba za pronalaenjem dela slobodne memorije
veliine dovoljne za smetanje segmenta
3
L3 Heap
Code
Ke memorija
Magnetni disk
Memorijska hijerarhija
Cache
Operating Memory
Speed Capacity
U datom trenutku, memorija na viem nivou sadri podskup
(radni skup, working set) memorijskog prostora nieg nivoa.
Problemi:
kako odabrati radni skup?
ta initi ako traeni podatak nije na datom nivou?
kako odravati konzistentnost susednih nivoa
jedan se promeni, ta sa drugim?
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 98/294
III Upravljanje procesima
Procesi i niti
Sinhronizacija i komunikacija izmeu procesa
Pojam procesa
Operacije nad procesima
Implementacija procesa
Pojam niti
Implementacija niti
void main () {
int pid = fork();
if (pid<0) { // Error
printf(Fork failed.\n); exit(-1);
}
else if (pid==0) // Child process
execlp(programName);
else { // Parent process
wait(NULL);
printf(Child complete.\n);
exit(0);
}
}
Ready Running
Dispatch
I/O completed or
Event occurred I/O or Event wait
Blocked
Spreman na eka na I/O ili dogaaj
izvravanje, eka da (Suspended, Waiting,
dobije procesor Blocked)
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 106/294
Implementacija procesa PCB
Kontekst procesa (process context): sve ID
informacije potrebne da OS nastavi izvravanje Processor
procesa, kao i da ga kontrolie i ugasi: context
ID interna identifikacija procesa unutar OS
kontekst procesora (PC, SP, programski dostupni registi) Memory
memorijski parametri: veliina i pozicija dodeljenog params
memorijskog bloka ili PMTP/SMTP itd.
informacije o I/O resursima: spisak otvorenih fajlova, I/O info
zauzetih resursa itd.
podaci potrebni za rasporeivanje: prioritet, dodeljeno
CPU vreme, itd. Scheduling
podaci potrebni za obraunavanje params
... Accounting
Struktura podataka u kojoj se uvaju ove params
informacije za svaki poces unutar OS ...
Process Control Block (PCB)
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 107/294
Implementacija procesa
X
running Ready
PCB2 queue
X
ready
PCB1 PCB4 PCB5 PCB6
X
Disk waiting Device
PCB7 PCB9 queue
X
Event X waiting Event
PCB0 PCB3 PCB8 queue
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 108/294
Implementacija procesa
Promena konteksta (context switch):
Process A Process B
Interrupt or system call
Lock
Save context to
running.PCB
Select other
running
ready
Select other
PCB2 running
PCB4
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 110/294
Implementacija procesa
Promena konteksta:
X
running
PCB31
X
ready
PCB23 PCB02 PCB40 PCB14
void threadBody () {
for (int i=0; i<3; i++) {
cout<<i<<"\n";
dispatch(); // Eksplicitno preuzimanje - yield
}
}
void userMain () {
Thread* t1=new Thread(threadBody);
Thread* t2=new Thread(threadBody);
t1->start();
t2->start();
dispatch();
}
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 121/294
Implementacija niti
Mana ovakvog proceduralnog stila kreiranja niti: niti nad istim kodom
(istom funkcijom) ne mogu se razlikovati jer polazna funkcija nema
argumente
Mogue reenje: obezbediti argument funkcije, ali unapred definisanog
tipa (npr. void* na strukturu argumenata). Problem: nije tipizirano i
nije u duhu OOP
Objektno reenje poput Jave:
class Thread {
public:
Thread ();
Thread (void (*body)());
void start ();
protected:
};
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 122/294
Implementacija niti
Promena konteksta na nain nezavisan od
procesora i prevodioca:
zaglavlje <setjmp.h> sadri potrebne deklaracije
tip jmp_buf predstavlja PCB za nit (TCB), tako da
sadri sve programski dostupne registre koje koristi dati
prevodilac na datoj maini (obavezno PC i SP)
int setjmp(jmp_buf context): smeta kontekst
procesora u TCB dat kao argument i vraa 0
void longjmp (jmp_buf context, int value):
restaurira kontekst dat kao argument, a koji je snimljen
pomou setjmp(); poto se time skae unutar
setjmp(), tada setjmp() vraa vrednost value
koja mora biti !=0
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 123/294
Implementacija niti
Promena konteksta:
void Thread::dispatch () {
lock ();
if (setjmp(runningThread->context)==0) {
Scheduler::put(runningThread);
runningThread = Scheduler::get();
longjmp(runningThread->context,1);
} else {
unlock ();
return;
}
Problem: da li je ovaj pristup mogu kod asinhronog
preuzimanja (zbog prekida)? ta onda?
Z.obj
Web server:
Client Process Server Process
HTML
Client Process Server Process
Files
Client Process Server Process
accept
Producer Consumer
produce consume
accept take
Producer Buffer Consumer
tail head
const int N = ...; // Capacity of the buffer
class Data;
class BoundedBuffer {
public:
BoundedBuffer ();
private:
Data* buffer[N];
int head, tail, count;
};
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 129/294
Kooperativni procesi
BoundedBuffer::BoundedBuffer ()
: head(0), tail(0), count(0) {}
Data* BoundedBuffer::take () {
while (count==0);
Data* d = buffer[head];
head = (head+1)%N;
count--;
return d;
}
Sistemska usluga
(poziv): obezbediti
preslikavanje dela
adresnog prostora
Kernel dva procesa u istu Kernel M
deljenu memoriju
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 135/294
Meusobno iskljuenje
Primer 1: ta se deava ako dva procesa pristupaju uporedo istoj
deljenoj promenljivoj x?
x:=x+1
Na veini procesora, ova naredba bie prevedena u (neatominu)
sekvencu (atominih) instrukcija:
load reg with x
increment reg
store reg to x
Ako je x incijalno bilo 0, koji su mogui rezultati?
Sluaj 1: Sluaj 2: ...
P1 P2 P1 P2
load x(0) load x(0)
load x(0) inc
inc inc store x(1)
store x(1) load x(1)
store x(1) ...
x=1 x=2
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 136/294
Meusobno iskljuenje
Primer 2: Policijski helikopter prati kriminalca-begunca i navodi
policijski automobil koji ga juri
type Coord = record {
x : integer;
y : integer;
};
procedure signal(S)
val:=val+1;
if val<=0 then begin
take one process from the suspended queue of S
and deblock it by putting it into the ready queue
end
end;
protected:
private:
int val;
Queue blocked;
int lck; // lock
};
void Semaphore::deblock () {
// Deblocking:
Thread* t = blocked.get();
Scheduler::put(t);
}
void Semaphore::signal () {
lock(lck);
if (val++<0)
deblock();
unlock(lck);
}
process P;
loop
wait(mutex);
<critical section>
signal(mutex);
<non-critical section>
end
end P;
class BoundedBuffer {
public:
BoundedBuffer ();
private:
Semaphore mutex;
Semaphore spaceAvailable, itemAvailable;
Data* buffer[N];
int head, tail;
};
Data* BoundedBuffer::take () {
itemAvailable.wait();
mutex.wait();
Data* d = buffer[head];
head = (head+1)%N;
mutex.signal();
spaceAvailable.signal();
return d;
}
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 168/294
Upotreba semafora
Prikazani semafori nazivaju se jo i n-arni ili brojaki semafori
Za mnoge primene (npr. meusobno iskljuenje) dovoljni su binarni
semafori: najvea vrednost mu je 1
Operacija wait blokira proces ako je semafor 0, odnosno postavlja
semafor na 0 ako je bio 1
Operacija signal deblokira proces ako eka, a postavlja semafor na 1
ako ga nema
Ponegde se binarni semafor naziva i dogaaj (event) samo signalizira
da se neki dogaaj desio (logika, Bulova vrednost, desio se ili ne)
U mnogim sistemima na dogaaj moe ekati samo jedan proces
(vlasnik dogaaja) i samo on moe vriti wait; signal moe uraditi
bilo koji proces
Neki sistemi podravaju kombinovano ekanje na vie dogaaja po
uslovu i i ili
Posebno pogodni za ekanje na spoljanje dogaaje koji se
signaliziraju iz prekidne rutine: zavrena I/O operacija, isteklo vreme
suspenzije procesa. Zato su veoma osetljivi za implementaciju
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 169/294
Upotreba semafora
Pogodnosti semafora:
jednostavan i efikasan koncept
generalan koncept niskog nivoa pomou njega se
mogu implementirati mnogi drugi, apstraktniji koncepti
za sinhronizaciju
Loe strane semafora:
suvie jednostavan koncept niskog nivoa nije logiki
povezan sa konceptima bliim domenu problema
(resurs, kritina sekcija, ...)
kod sloenijih programa lako postaje glomazan,
nepregledan, teak za razumevanje, proveru i
odravanje jer su operacije nad semaforima rasute
podloan je grekama mora se paziti na uparenost i
redosled operacija wait i signal
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 170/294
Upotreba semafora
ta je problem sa sledeim kodom (S1 i S2 su inicijalno 1)?
process P1;
wait(S1);
wait(S2); Mogua sekvenca:
... P1 - wait(S1); // S1:=0
signal(S2); P2 - wait(S2); // S2:=0
signal(S1); P1 - wait(S2); // P1 blocks on S2
end P1; P2 - wait(S1); // P2 blocks on S1
Vezivanje adresa
Deljenje memorije
Organizacija i alokacija memorije
Virtuelna memorija
a: 0 g: 0
f: 1 f: ...
... a: ...
A.obj a: 3 a: ?
g:
B.obj
f: ... ...
...?f...
... ...?a...
... ...
A.obj
a: 0 g: 0
f: 1 f: ...
... a: ... B.obj
A.obj a: 3 g:
B.obj
f: ... ...?f...
C.obj
... ...?a...
... ...
...
1A220000
17 1A220017
+
CPU MMU OM
Zaduenja OS-a:
Loader treba da definie vrednost relokacionog registra na osnovu
mesta uitavanja procesa u memoriji i smesti tu vrednost u PCB
prilikom svake promene konteksta, OS treba da upie vrednost iz
PCB u relokacioni registar
Sloenije tehnike dinamikog preslikavanja: stranina,
segmentna i stranino-segmentna organizacija
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 180/294
Glava 11: Deljenje memorije
Pass 1 Pass 2
code Overlay code
70KB 80KB
Kontinualna alokacija
Stranina organizacija
Segmentna organizacija
Yes - OK
User Process
< +
CPU MMU No - Trap OM
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 197/294
Kontinualna alokacija
Osnovno pitanje: kako pronai slobodan prostor za
smetanje procesa problem alokacije (allocation)?
Jedno jednostavno reenje particije (partition): podeliti
OM za korisnike procese na particije jednake veliine,
maksimalno dozvoljene procesu. Svaka particija moe da
sadri samo jedan proces stepen multiprogramiranja je
ogranien brojem particija
OS vodi tabelu particija za svaku particiju po jedan ulaz.
Ulaz sadri informaciju da li je particija slobodna, odnosno
kom procesu je dodeljena. PCB sadri oznaku particije
procesa
Kada ima slobodne particije, proces se uitava i pokree.
Kada proces zavri, njegova particija se oznaava
slobodnom
Zastareo metod, ne primenjuje se vie
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 198/294
Kontinualna alokacija
Optiji pristup - dinamika alokacija memorije (dynamic
storage allocation):
OS vodi evidenciju o zauzetim i slobodnim delovima memorije
inicijalno je ceo prostor za korisnike procese slobodan
kada se kreira novi proces, stavlja se u ulazni red (input queue)
OS analizira memorijske zahteve procesa u ulaznom redu i trenutno
stanje slobodne memorije i bira proces za uitavanje (na osnovu
algoritma rasporeivanja ili memorijskih zahteva)
OS pronalazi slobodan deo memorije dovoljno veliki da smesti izabrani
proces
OS uitava proces u izabrani deo slobodne memorije; deo memorije
koji proces zauzima oznaava zauzetim, a ostatak ostaje slobodan
kada se proces zavri, deo memorije koji je zauzimao proglaava se
slobodnim, uz eventualno spajanje u kontinualnu celinu sa slobodnim
delovima ispred i iza osloboenog dela
OS moe da ispita postoji li proces u ulaznom redu koji sada moe da
se uita
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 199/294
Kontinualna alokacija
Osnovno pitanje: ukoliko postoji vie slobodnih
delova u koje moe da se smesti proces, kako
izabrati jedan?
Pristupi:
izabrati prvi koji odgovara (first fit): jednostavan i efikasan
izabrati onaj koji najbolje odgovara (best fit), u smislu da
ostaje najmanje otpatka, sa idejom najboljeg iskorienja
prostora
izabrati onaj koji najloije odgovara (worst fit), u smislu da
najvie preostaje, sa idejom da se taj ostatak najlake
moe iskoristiti
Eksperimenti pokazuju da su first fit i best fit bolji u
smislu efikasnosti i iskorienja memorije; ni jedan
od ta dva nije generalno bolji u smislu iskorienja,
a first fit je generalno efikasniji
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 200/294
Kontinualna alokacija
Osnovni problem - eksterna fragmentacija (external
fragmentation): ukupan slobodni prostor jeste
dovoljan, ali nije kontinualan za alokaciju
Statistike: na N alociranih blokova, jo oko N
blokova se gubi zbog fragmentacije
Uzrok: alokacija delova razliitih veliina u slobodne
celine razliitih veliina
Jo jedan problem: ta ako se alocira prostor od
18462 bajta u slobodan deo od 18464 bajta
preostaju samo 2 slobodna bajta. Trokovi voenja
evidencije o tako malom slobodnom prostoru nisu
opravdani!
p1 p2 d
PMTP p1 p2 d
Start page
Size
RWX
Backing store
Start page
Size
RWX
Backing store
Start page
Size
RWX
Backing store
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 209/294
Stranina organizacija
Deskriptor stranice u PMT sadri samo informacije potrebne
hardveru:
Prava pristupa (RWX)
Da li je preslikavanje mogue (npr. null vrednost ako nije), bez obzira
zato nije zato to stranica nije validna, jer ne pripada alociranom
segmentu, ili zato to nije u memoriji
Ako jeste, u koji okvir se preslikava (frame)
Ako preslikavanje nije mogue, hardver generie page fault
ne ulazei u razlog. Kada obrauje ovaj izuzetak, OS utvruje
razlog na osnovu virtuelne adrese i podataka u deskriptoru
segmenta kome pripada i reaguje na jedan od dva naina:
Gasi proces, ako adresa pripada nedeklarisanom segmentu (memory
access violation)
Uitava stranicu, ako adresa pripada deklarisanom segmentu
PMT2
PMT1
null
null null
null null
null
null
null
Trap
> limit base
Rasporeivanje
Baferisanje
Keiranje
Spooling
Zatita
Obrada I/O zahteva
Performanse
Pojam fajla
Struktura direktorijuma
Montiranje fajl sistema
Deljenje fajlova
Zatita
Cnt
2
1 Location Name ...
Y: FILE fh = file_open(...,read_only)
Y: file_close(fh)
0 read_only
OS PRV Ispiti
OS PRV
Skripta Ispiti
OS1 PRV
Jan05 Feb05
Application programs
FILE open(char* filename); void close(FILE); read(FILE,...); ...
File-organization module
Disk controller
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 271/294
Struktura fajl sistema
Strukture podataka fajl sistema na disku:
boot control block: na svakom volumenu tipino prvi blok na disku;
sadri informacije kako podii OS sa tog volumena; ako volumen
nije bootable, ovaj blok je prazan (UFS: boot block, NTFS: partition
boot sector)
volume control block: na svakom volumenu ili particiji sadri
globalne informacije o volumenu, kao to su broj blokova, veliina
bloka, broj slobodnih blokova, pozakiva na prvi slobodni blok, broj
slobodnih FCB (File Control Block), pokaziva na prvi slobodni FCB
itd. (UFS: superblock, NTFS: master file table)
struktura direktorijuma za organizaciju fajlova (UFS: preslikava ime
fajla u broj FCBa, NTFS ovo smeta u master file table)
za svaki fajl njegov FCB (File Control Block) koji sadri sve potrebne
informacije (atribute) o fajlu, npr. veliinu, lokaciju, datum
kreiranja i poslednje izmene, kreator, prava pristupa itd. (UFS:
inode, NTFS: jedan ulaz u master file table)
file handle
File-
Logical file
organization Device driver
system
module
block#
search x/y/z.txt
No search x/y/z.txt
... ... ...
... ... ...
... ... ...
... FCB
Per-process System-wide Directory
open-file table open-file table structure cache
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 274/294
Struktura fajl sistema
Primer implementacije sistemskih usluga: read(FILE filehandle,...)
read(FILE fh,...)
read(N,len) read(i)
read(j)
copy buffer
File-
Logical file
organization Device driver
system
module
... ...
... ...
... ...
... FCB
Per-process System-wide Cache
open-file table open-file table
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 275/294
Struktura fajl sistema
Particija moe biti:
presna (raw) - ne sadri fajl sistem: jo nije uspostavljen fajl
sistem (pre formatizacije, formatting) ili za posebne namene (npr.
swap space ili za bazu podataka)
peena (cooked) ili formatizovana (formatted) - sadri fajl
sistem
boot niz blokova u posebnom formatu koji se direktno uitavaju u
memoriju i pokree izvravanje sa tano odreene lokacije u cilju
uitavanja operativnog sistema
korena (root) sadri OS kernel i druge sistemske fajlove
Mogunost podrke vie fajl sistema: dual-boot, svaka
particija razliiti fajl sistem, montiranje i udaljeni fajl
sistemi
Problem: kako efikasno omoguiti ovakvu heterogenost i
transparentno ponuditi sve fajl sisteme u istoj lokalnoj
strukturi direktorijuma?
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 276/294
Struktura fajl sistema
Virtuelni fajl sistem (virtual file system): OO pristup izolaciji
razliitosti fajl sistema iza istog interfejsa polimorfizam i
dinamiko vezivanje
File vnode
inode
LocalFile RemoteFile
Object
(struct) g(Object*)
...
...
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 277/294
Implementacija direktorijuma
Direktorijum (directory) je struktura podataka koja treba
da obezbedi efikasno preslikavanje imena fajla (ukljuujui
i poddirektorijum) u lokaciju tog fajla na disku
UNIX na isti nain tretira fajlove i direktorijume (jedan
indikator u FCB /inode/ ukazuje na to) i ima iste operacije
nad njima; na isti nain se i smetaju
Windows razlikuje operacije nad direktorijumom i fajlovima
Dva pristupa u realizaciji sktrukture i algoritama
pretraivanja direktorijuma:
linearna lista
hash tabela
Problemi:
pronalaenje slobodnog prostora za smetanje
fajla problem analogan kontinualnoj alokaciji
memorije dinamika alokacija (first fit, best fit) 0 1 2 3
eksterna fragmentacija 4 5 6 7
kako uopte odrediti veliinu fajla u vreme
8 9 A B
kreiranja?
C D E F
Reavanje eksterne fragmentacije:
10 11 12 13
poseban postupak defragmentacije (kompakcije,
14 15 16 17
compaction) relocira fajlove i sakuplja slobodan
prostor; pokree se uglavnom kada sistem nije u 18 19 1A 1B
funkciji (off-line), ali moderni OS mogu ovo da 1C 1D 1E 1F
rade i on-line
Februar 2005-2015. Copyright (C) 2005-2015 by Dragan Miliev 282/294
Metode alokacije Directory
File Start End
Ulanana alokacija (linked allocation): mail 0 A
svaki fajl je ulanana lista blokova rasutih bilo pic 14 12
gde po disku addr 19 1E
svaki blok sadri pokaziva na sledei blok
Pogodnosti:
reava probleme kontinualne alokacije (problem
dinamike alokacije i eksterne fragmentacije) 0 1 2 3
operacije kreiranja i proirivanja fajla su 4 5 6 7
jednostavne i efikasne; veliina fajla ne mora da
se definie prilikom kreiranja 8 9 A B
...
data
data
... data
...
...
...
direct blocks
... data
single indirect ... data
... data
double indirect
...
triple indirect
...
ta je naueno
ta nas oekuje u Operativnim sistemima 2
Domai zadatak
Ispit
Pitanja i diskusija