You are on page 1of 4

1. to je OS, koji su osnovni zadaci?

Operativni sustav je programski paket koji djeluje kao suelje izmeu korisnika i hardvera, ujedno je i
skup programa koji vode kontrolu koritenja resursa(procesora, glavne memorije..) ; kontrolira
izvoenje programa, dodjeljivanje memorije, upravljanje podacima. Glavni cilj OS-a je da omoguava:
Jednostavnije koritenje raunala tako da korisnik pri radu ne mora voditi rauna o specifinosti
hardvera
Efikasnije koritenje resursa
2. Koji su zadaci OS-a?
Zadaci Os-a su:
Upravljanje procesima: Proces je program koji se izvodi. Os mora obavljati stvaranje i ponitavanje
korisnikih i sistemskih procesa, odgaanje odnosno prekidanje i ponovno aktiviranje procesa,
sinkronizaciju, komunikaciju meu procesima i rjeavanje deadlocka.
Upravljanje radnom memorijom: OS mora: pratiti koji su memorijski dijelovi trenutno zauzeti i od
koga; odluivati kojem procesu e dodijeliti osloboeni memorijski prostor; dodjeljivati i oslobaati
memorijski prostor po potrebi.
Upravljanje sekundarnom memorijom: Os mora: upravljati slobodnim memorijskim prostorom;
dodjeljivati memoriju; upravljati zahtjevima za pristup sekundarnoj memoriji.
Upravljanje ulazom/izlazom
Upravljanje datotekama: OS mora omoguiti: stvaranje i unitavanje datoteka, direktorija; osnovne
operacije s datotekama; organizirati sustav pristupa.
Zatita koritenja sustava
Otkrivanje pogreki u radu
Rad s mreom
Tumaenje korisnikih naredbi
3. to je proces, ime je odreen i kako OS vodi evidenciju o procesu?
Proces je program u izvoenju jer mijenja sadraj resursa. Sustav se sastoji od korisnikih procesa
(izvode korisniki kod) i procesa OS-a (izvode sistemski kod).
Procesi se izvode paralelno meusobno dijelei procesor. Obuhvaaju trenutne aktivnosti u sustavu
opisane sadrajima registara procesora i sadrajima memorijskih lokacija koje koristi proces. Sadri
programski odsjeak i stog procesa koji sadri privremene i globalne podatke pohranjene u
podatkovnoj memoriji. Proces je program u izvoenju sa programskim brojilom i pripadajuim
skupom registara i memorijskih lokacija kao i resursa koje koristi.
Operativni sustav vodi evidenciju o procesu u PCB-u (Process Control Block). To je struktura u kojoj
su smjetene informacije o procesu. Svaki PCB sadri id procesa, ime procesa, trenutno stanje
procesa, image na disku, sadraj registara, podatke o memoriji koju proces koristi, popis otvorenih
datoteka, informacije o korisniku procesa, pokazivae(na parent, child procese , ako postoje)...
4. Navedi i objasni stanja u kojima se proces nalazi tijekom izvoenja!
Stanje procesa je odreeno njegovom trenutnom aktivnou.

Proces se moe nalaziti u jednom od stanja:


Novi (new) stanje u kojem se proces nalazi nakon to je stvoren, kreira se PCB i proces ide u
sljedee stanje pripravan.
Pripravan (ready) oznaava proces koji se nalazi u redu za izvravanje. Nakon nekog vremena,
kada dobije pravo koritenja procesora, proces prelazi u stanje aktivan.
Aktivan oznaava proces koji se trenutno izvrava. Ukoliko OS prekine aktivan proces tada se taj
proces prebacuje u stanje pripravan, a ukoliko proces mora obaviti neku I/O operaciju, tada ide u
stanje eka. (U oba sluaja se zapamti trenutno stanje popunjavanjem PCB-a).
eka (waiting) oznaava stanje procesa u kojem proces eka na npr. Ulazno/Izlaznu operaciju.
Zavrio (terminated) oznaava stanje procesa u kojem je obrada zavrena, brie se PCB.
U jednom trenutku samo jedan proces moe biti aktivan, dok ih vie moe biti u stanju pripravan ili
eka.

5. Kako OS organizira procese kako bi ih prebacivao iz stanja u stanje


Stanja pripravan, eka na disk, I/O.. su u memoriji prikazana kao redovi realizirani pomou vezanih
lista. U Data segmentu OS-a nalaze se pokazivai:
Pripravan poetak (pokazuje na prvi proces u redu pripravan)
Pripravan kraj (pokaziva na kraj reda pripravan)
Aktivan (pokaziva na trenutno aktivan proces)
Za svaki red eka pokaziva na poetak i kraj (slino kao i pripravni pokazivai, samo za red eka)
OS jednostavno prebacuje procese iz stanja u stanje tako da stavi proces u odreen red. PCB meu
ostalim podacima sadri i pokazivae koji e pokazivati na sljedei i prethodni u redu, te polje u kojem
je zapisano stanje procesa. Prebacivanje iz reda u red se obavlja jednostavnim preusmjeravanjem
pokazivaa.
6. Objasni context switch
Context switch je izmjena aktivnog procesa. Kod prebacivanja obrade s jednog procesa na drugi
procesor mora sauvati stanje prekinutog procesa tako da ga zapie u PCB , te obnoviti stanje procesa
(tako da uita sve potrebne podatke iz PCB-a) koji postaje aktivan. Sam context switch traje neko
odreeno vrijeme i nastojimo da to vrijeme bude to krae. Problem je to u PCB upisujemo i
informacije o dodijeli i koritenju memorije procesa. Taj proces dodatno usporava context switch. Zbog
toga koristimo niti (threadove) koje smanjuju broj izmjena konteksta. Koraci izmjene konteksta:
1. Sadraj spremnika upie se u PCB na koji pokazuje pokaziva aktivan
2. PCB iz reda aktivan stavi u red eka
3. Prvi proces iz reda pripravan stavi u red aktivan
4. Obnovi stanje procesa koji postaje aktivan(prepie stanja registara iz PCB-a).
7. Strategije dodjele procesora.
Postoje razliiti algoritmi za dodjelu procesora. Kriteriji po kojima usporeujemo koliko je dobro neko
rjeenje su Iskoristivost hardvera i Vrijeme ekanja to krae (tako da korisnik dobije to bru uslugu).
Algoritmi za dodjelu procesora:
1. Prvi u redu prvi posluen (FIFO) ima najgore teka
2. Krai poslovi prvi (shortest jobs first, SJF) problem troenja vremena na raunanje vremena
izvravanja pojedinih procesa
3. Round Robin - time sharing kojemu je temelj FIFO uz uvoenje ogranienja vremena koje proces
moe provesti u izvoenju
4. Ograniavanjem vremena u aktivnom stanju na vremenski kvant T - teka je relativno dobro. Treba
odabrati optimalno vrijeme kvanta T(ne smije biti premalo zbog izmjene konteksta). Ako se
izvravanje procesa prekine zbog isteka T onda ga ponovno vraamo u red pripravan ali mu
poveamo T.
8. Na primjeru proizvoapotroa objasni kritini odsjeak.
Dva procesa su nezavisna ako nemaju zajednike varijable i ne koriste iste dijelove memorije.
Primjer zavisnih procesa je problem proizvoa-potroa. Proizvoa proizvodi poruke, kojih moe biti
maksimalno n, a potroa ita poruke i tako ih troi. Da se osigura da proizvoa ne unosi poruku u
pun spremnik, odnosno da potroa ne oitava poruku iz praznog spremnika uvodi se varijabla brojac
koja se inicijalizira na vrijednost nula:
proizvoa
int in = 0;
while (1)
{
proizvedi podatak;
while (brojac == 1) nop;
stavi podatak u buffer[in];
in ++;
if (in >= N) in=in%8;
brojac ++;
}

potroa
int out = 0;
while (1)
{
while (brojac == 0) nop;
proitaj podatak iz buffer[in];
out ++;
if (out >= N) out=out%8;
brojac --;
potroi podatak;
}

Varijabla brojac je varijabla koju dijele oba procesa. U asemblerskom obliku naredbe za smanjivanje,
odnosno za poveavanje brojaa glase ovako:
proizvoa
potroa
mov ax, brojac
mov ax, brojac
inc
ax
dec
ax
mov brojac, ax
mov brojac, ax

Ako npr. doe do prekida nakon prvog reda izvoenja naredbe za inkrementaciju brojaa i procesor se
prebaci na izvoenje drugog procesa (potroa), varijabla brojac ostaje nepromijenjena te dolazi do
greke. Taj dio procesa, u kojem se prvo ita zajednika varijabla, zatim se obrauje i na kraju ta
izmijenjena vrijednost upisuje, se naziva kritian odsjeak. Kritian odsjeak openito se definira kao
dio procesa u kojem proces pristupa ili mijenja zajednike varijable ili datoteke. Za operacijski sustav
je bitno da osigura da kada je jedan proces u kritinom odsjeku tada niti jedan drugi zavisan proces
ne smije izvoditi svoj kritian odsjeak.
9. Kako se rjeava kritini odsjeak pomou test&set?
Naredbom test&set proces signalizira procesoru da ulazi u kritini odsjeak i time osigurava da ga se, u
tom dijelu, ne prekine u izvravanju. Prilikom ulaska u kritian odsjeak proces provjerava da lje neki
drugi proces u kritinom odsjeku i ako je, eka da taj prizae i tek onda ulazi u njega. Kada proces
izae iz kritinog odsjeka jednostavno signalizira da je izaao.
Na ulazu u kritian dio koristimo: while (test&set(flag)) nop; - s tim kodom provjeravamo da li je neki
proces ve u kritinom odsjeku i ako je ekamo da izae iz njega.
Na izlazu iz kritinog odsjeka koristimo flag=0;
10. Objasni semafor
Koritenje semafora efikasno rjeava: problem ulaska procesa u kritian odsjeak i probleme vezene
uz sinkronizaciju meu procesima.
Sam semafor je realiziran kao struktura koja se sastoji od cjelobrojne varijable (koja je u poetku
inicijalizirana na npr. 1) i pokazivaa na PCB (na poetku null). Problem ostalih algoritama je u tome
to proces koji nije dobio dozvolu za ulazak u kritini odsjeak aktivno eka troei vrijeme procesora.
Kod semafora taj se problem rjeava primjenom operacija ekaj i postavi.
ekaj (semafor S)
{
s.vrijednost --;
if(s.vrijednost < 0)
{
upii stanje procesa u PCB
stavi PCB procesa u red ekanja na S;
aktiviraj prvi proces iz reda pripravan;
}
}

Postavi (semafor S)
{
s.vrijednost ++;
if(s.vrijednost <= 1)
{
prvi proces iz reda eka semafora S
stavi u red pripravan
}
}

Proces koji izvodi operaciju ekaj i zakljui da ne smije nastaviti izvoenje mora sam prekinuti svoje
izvoenje i stati u red ekanja na semaforu. Potom se izvoenje predaje operacijskom sustavu koji
aktivira neki proces iz reda aktivnih procesa. Uz svaki oblik kritinih odsjeaka vezan je jedan semafor
koji ima svoj red ekanja. Kad proces izvodi operaciju postavi na semaforu; jedan proces, koji eka u
redu na taj semafor, se aktivira i prebaci u red pripravan. Same naredbe promjene vrijednosti
semafora moraju biti nedjeljive i njima direktno upravlja OS.
11. Kako pomou semafora rijeiti problem proizvoa potroa?
Proizvoa:
while (1)
{
proizvodi poruku;
while (brojac == N) nop;
stavi poruku u buffer;
in++;
if (in==N) in=0;
ekaj(S);
brojac++;
postavi(S);
}

Potroa:
while (1)
{
while (brojac == 0) nop;
proitaj poruku iz buffera;
out++;
if (out==N) out=0;
ekaj(S);
brojac--;
postavi(S);
}

Kritian dio programa proizvoa, potroa je dio u kojem se mijenja vrijednost zajednike varijable
brojac. Problem kritinog dijela moemo rijeiti koristei semafor S.

U ovom programu postoji i problem sinkronizacije u dijelu while (brojac == N) nop; i while (brojac ==
0) nop. Taj problem rjeavamo uvoenjem dvaju semafora Spun i Sprazan. Sada program izgleda:
Proizvoa:
while (1)
{
ekaj(Spun);

Potroa:
while (1)
{
ekaj(Sprazan);

proizvodi poruku;
stavi poruku u buffer;

proitaj poruku iz buffera;

postavi(Sprazan);
in++;
if (in==N) in=0;
}

postavi(Spun);
out++;
if (out==N) out=0;
}

Ako koristimo semafore, tada vie nema potrebe za koritenjem naredbi while (brojac == N) nop; i
while (brojac == 0) nop. Inicijaliziramo Spun.vrijednost = n (veliina buffera) i Sprazan.vrijednost=0.
Kako se buffer puni (u programu proizvoa) tako se vrijednost varijable Spun.vrijednost smanjuje, a
vrijednost Sprazan.vrijednost raste. Spun.vrijednost se moe smanjivati maksimalno do -1 (to e
ujedno znaiti da je buffer pun) jer e tada funkcija ekaj(Spun) staviti proces proizvoa u red
ekanja Spun i aktivirati proces potroa. Proces potroa: kako se buffer prazni tako funkcija
eka(Sprazan) smanjiva vrijednost Sprazan.vrijednost, a f-ja postavi(Spun) poveava vrijednost
Spun.vrijednost. Vrijednost Sprazan.vrijednost se takoer moe smanjivati samo do -1 kada f-ja
ekaj(Sprazan) stavi proces potroa u red ekanja na Sprazan i ponovo prebaci izvoenje na proces
proizvoa. Glavna prednost ovakvog koritenja je u tome to se izbjegava prazan hod kod procesa
proizvoa(kada je buffer pun) i kod procesa potroa (kada je buffer prazan).
12. Problem potpunog zastoja (deadlock)
Vie procesa moe istovremeno zahtijevati uporabu istih resursa raunarskog sustava.
Primjer: Imamo dva procesa P1 i P2. P1 rezervira resurs S1 i izvravanje se prebaci na P2 koji
rezervira resurs S2. U iduem prebacivanju izvoenje se vrati na P1 koji sada eli rezervirati S2 ali taj
resurs je rezerviran od strane P2 pa P1 prebacimo u stanje ekanja. Procesor prebaci izvravanje na P2
koji sada eli rezervirati S1, ali ne moe pa se i on prebaci u stanje ekanja. Ne izvrava se niti jedan
proces. Ovakva situacija se naziva potpuni zastoj (deadlock).
n, m oznaavaju koliko istih resursa imamo.

Kvadrati S1 i S2 oznaavaju resurse(hardverske i softverske), dok krugovi P1 i P2 oznaavaju procese.


Potpuna petlja oznaava da postoji zastoj.