You are on page 1of 16

UOS/P - SKRIPTA

PREDAVANJE 1:

-Pomoću računara informacije (podaci) mogu da se :


• primaju i distribuiraju, odnosno razmjenjuju
• obrađuju
• pohranjuju

-Računar se sastoji od dva dijela:


• Hardware
• Software

-Software upravlja Hardware-om.

-Kompjuterski sistem dijelimo na:


• Hardware
• OS/Operativni sistem
• Aplikacije/Aplikativni programi
• Korisnici

-Na dnu kompjuterskog sistema je hardware i sastoji se od dva ili vise nivoa.
Najnizi nivo sastoji se od fizickih uredaja, a oni se sastoje od integralnih kola,
zica,napajanja i sl.
Sljedeci nivo je mikroarhitekturni nivo u kome su fizicki uredaji povezani
u funkcionalne cjeline, a iznad njega se nalazi mašinski jezik .
Masinski jezik sadrzi instrukcije za upravljanje podacima,operacijama itd, na
ovom nivou se vrsi kontroliranje I/O uredaja.

-Ostatak sistemskog software-a:


• Komandni interpreter (shell)
• Kompajleri
• Editori , itd.

-Software ima dva moda funkcioniranja :


• Korisnički mod
• Kernel ili supervizijski mod

-OS se izvodi u kernel modu , pa prema tome ima potpuni pristup hardware-u i moze
izvrsiti svaku instrukciju .

-Program korisničkog interfejsa, komandni interpreter (shell) ili GUI, je najniži nivo
softverskog korisničkog moda, i dozvoljava korisniku pokretanje ostalih programa.
-OS je program koji se stalno izvršava u računaru (odnosno program koji se stalno
nalazi u radnoj memoriji računara) i tada se obično zove kernel ili jezgro,
a sve ostalo spada u sistemski odnosno aplikativni softver.

Računari prve generacije (1945.–1955.):


-Prvi digitalni racunar , koristio je 300 vakumskih cijevi.
-Z3 racunar napravljen od releja.
-Colossus , 1944. godina.
-Mark I , Harvard.
-ENIAC.

-Čovjek je imao punu kontrolu nad računarskim sistemom.

Druga generacija računara (1955.–1965.):


-Zasnivala se tranzistorima kao prekidačkim elementima, pa su računari postali
mnogo manji, pouzdaniji i jeftiniji.

-Računari su bili smješteni odvojeno, u posebnim sobama, koje su se dijelile u tri


funkcionalne cjeline: ulazna soba, centralni računar i izlazna soba.

-Koristio se programski jezik FROTRAN i busene kartice.

-IBM 1401

-U drugoj generaciji računarskih sistema povećava se brzina rada centralnog


procesora, kapaciteti centralne memorije i eksternih memorija, pojavljuju se nove i
brže ulazno-izlazne jedinice.

Računari treće generacije (1965.–1980.):


-S razvojem discipline poznate pod imenom softversko inženjerstvo (software
engineering),uvode se nove funkcije:
A) multiprogramiranje (multiprogramming)
B) višestruke ulazno-izlazne operacije (spool)
C) podjela računarskog vremena (time-sharing)

-Multiprogramiranje je tehnika kojom se postiže bolje iskorištenje procesora:


memorija se dijeli na particije u koje se učitavaju različiti programi.

-Za multiprogramiranje operativni sistem mora obezbijediti:


• U/I rutine.
• Upravljanje memorijom – sistem mora alocirati memoriju zadacima.
• CPU raspoređivanje – sistem mora praviti izbor između procesa koji su
spremni za izvršavanje.
• Alokaciju uređaja.

-Spooling / Spool-Simultaneous Peripheral Operation On Line tehnika


omogućava da se nedovoljna brzina U/I uređaja poboljsava upotrebom brzih uređaja
kao što su trake, a naročito diskovi. Na taj način je moguće istovremeno izvršavanje
više U/I operacija.

-Podjela vremena / Time-sharing jeste tehnika koja omogućava da svaki korisnik


radi s računarom interaktivno, i to preko posebnog terminala koji je istovremno i
ulazni i izlazni uređaj za korisnika.

-Multitasking omogućuje da CPU izvršava više poslova (npr. aplikacija)


naizmjenično, i to tako da ih veoma brzo skida/stavlja sa/na CPU, kako bi korisnici bili
u stanju da „interaktivno“ komuniciraju sa svakim od programa koji izvršavaju.

-Razlikujemo dvije vrste multitaskinga:


• Kooperativni: ovo je multitasking sistem koji ima povjerenje u aplikacije da ce
koristiti procesor u odredenom vremenskom periodu i ostaviti ga nekom drugom
programu nakon izvrsavanja.
• Preemptivni: ovo je sistem koji drzi u potpunosti kontrolu nad procesorom i moze u
svakom momentu moze zauzeti procesor od strane nekog drugog programa koji ga u
tom trenutku koristi.

-Kod sistema sa dijeljenjem vremena:


• CPU je multipleksiran od strane više zadataka koji se nalaze u memoriji i na
disku.
• Zadatak se premješta iz memorije na disk, i obrnuto.
• Omogućena „on-line” komunikacija izmedu korisnika i sistema; kada OS
završi sa izvršavanjem jedne komande, traži sljedeći „kontrolni izvještaj“ sa
tastature korisnika.

-Pojava dva OS-a , MULTICS I UNIX.

-Racunar DEC/Digital Equipment Corporation.

-Racunar PDP-1.

- Računari četvrte generacije (1980.–1990.):


-Pojava PC-a/Personal Computer.

-LSI/Large Scale Integration, cip koji sadrzi hiljade tranzistora.

-Prvi OS-ovi za PC su bili MS-DOS i UNIX.

- Mrežni OS – računari su povezani u mrežu, svaki računar ima svoj OS, a


međusobno komuniciraju pomoću nekog protokola.

-Mreze mogu biti lokalne i globalne.

- Računari pete generacije:


-VLSI čipovi koji su posjedovali nekoliko stotina tranzistora.

-Pojava RISC/ Reduced Instruction Set Computer arhitekture.


- Računari šeste generacije:
-Danasnji racunari.

-Procesori sa vise jezgri.

-Cloud Computing, software se nalazi na internetu.

Predavanje 2:

-Prebacivanje CPU-a sa jednog procesa na drugi se naziva multiprogramiranje.

-Procesi se izvrsavaju nezavisno jedan od drugog.

-Proces predstavlja program koji je u fazi izvrsavanja.

-Program je "fajl" koji sadrzi niz instrukcija neophodnih za izvrsavanje nekog zadatka.

-Program postaje proces tek kada se njegov izvrsni fajl ucita u RAM.

-Proces moze koristiti pri izvrsavanju cetiri vrste memorije:


• Stek memorija.
• Heap memorija.
• Memorija za globalne promjenljive.
• Memorija za kod procesa.

-Proces moze imati sljedeca stanja:

• Novi/New : stanje kreiranja procesa.


• Aktivan/Running : proces je u stanju izvršavanja.
• Spreman/Ready : proces čeka na dodjelu procesoru.
• Čeka/Waiting : proces čeka na izvršenje.
• Završen/Terminated : proces je izvršen.

-Prelazi izmedu stanja procesa mogu biti:


• New ↔ Ready: procesor je spreman da krene sa izvršavanjem procesa.
• Ready ↔ Running: kada se javi potreba za izvršenjem novog procesa ,
raspoređivač će izabrati jedan od procesa koji je u stanju Ready.
• Running ↔ Terminated: proces koji se trenutno izvršava okončava se kada se
izvrši njegova posljednja instrukcija , sto ne mora uvijek da bude razlog.
• Running ↔ Ready: do ovog prelaza većinom dolazi zbog toga sto je trenutni
proces ostao bez dodijeljenog vremena.
• Running ↔ Waiting: proces će biti prebačen u stanje Waiting ukoliko on zahtijeva
nešto na šta mora da sačeka .
• Waiting ↔ Ready: ovaj prelaz će se desiti kada se ispuni zahtjev na koji je proces
čekao .
-Proces se moze zaustaviti u sljedecim slucajevima:
• Proces je izvrsen , tj. izvrsena je njegova posljednja instrukcija.
• Drugi proces ga zaustavlja.
• Roditelj proces se zavrsava i automatski zavrsava i dijete proces.

Predstavljanje svakog procesa se vrši preko PCB/Proces Control Block, a on sadrži


informacije koje su neophodne kako bi se procesi mogli izvršavati.
PCB se sastoji od:

• Identifikator procesa/Process ID/PID: ovaj element predstavlja identifikator za


procese kako bi se oni mogli razlikovati.
• Stanje procesa: kao što i samo ime kaze ovaj element predstavlja stanje procesa
koje smo vec prethodno spomenuli.
• Programski brojač: brojač sadrži adresu sljedeće instukcije koju proces treba da
izvrši.
• Sadržaj registara procesora: ukoliko se desi da prilikom izvršavanja nekog
procesa dođe do prekida , potrebno je da se sačuvaju sve neophodne informacije
uključujući i brojač kako bi se proces mogao nastaviti izvršavati bez problema.
• Informacije o raspoređivanju: ove informacije uključuju prioritet
procesa,pokazivače na redove za raspoređivanje,i jos neke parametere potrebne za
raspoređivanje procesa.
• Informacije o upravljanju memorijom: ovdje spadaju vrijednosti osnovnih i
graničnih registara steka, sadržaj tabela bitnih za upravljanje memorijom.
• Informacije za praćenje: utrošeno procesorsko i ukupno vrijeme , vremenska
ograničenja, brojevi procesa itd.
• Informacije o U/I statusu: ovdje spadaju lista U/I uređaja dodijeljenih procesu,
spisak otvorenih fajlova itd.

-Thread/Nit je ajmo reci laki proces koji pomaze pri izvrsavanju zadataka unutar
procesa .Prije niti za istu svrhu su se morali stvarati novi procesi, nazovimo ih
podprocesi kojima je trebalo dosta vremena za stvaranje a i dosta resursa.
Danasnji procesori imaju vise threadova sto znaci da se vise njih moze dodijeliti
jednom procesu i samim time poboljsati performanse jer ce zadatak biti zavrsen
mnogo brze.Ova tehnologija se naziva Multithreading , mozemo reci da proces ima
mogucnost da izvrsava vise zadataka/instrukcija u isto vrijeme.

- Nitovanje/threading je koncept pri kom svaki proces predstavlja jedan kompletan


program, sa programskim kodom, memorijskim adresama itd., ali on ne obavlja
nikakav posao. Posao obavlja thread ili nit koji se zove Thread 0. Niti može biti više i
poenta je što svi troše zajedničke resurse.

-Sve niti unutar jednog procesa dijele isti memorijski prostor i pristupaju istim
podacima.Ali svaka nit unutar jednog procesa ima razlicit
identifikator,stanje(Ready...),brojac,registre i stek.
Sto znaci da PCB sadrzi informacije i o nitima.
-Postoje cetiri stvari zbog kojih je tehonologija niti dosta dobra:
• Odziv : Multithreading omogucava programu izvodenje cak i onda kada je jedan
njegov dio blokiran ili kada zavrsava drugu operaciju.
• Dijeljenje resursa: Da bi procesi dijelili resurse moraju proci odredene faze , dok
niti po svojoj prirodi dijele memoriju i resurse unutar jednog procesa , pa tako
mozemo imati vise niti kontrole unutar jednog procesa.
• Ekonomicnost: Kako smo vec rekli da se niti brze kreiraju i unistavaju od procesa ,
koriste dosta manje resursa pa samim time mnogo su ekonomicniji od kreiranja novih
procesa , niti se mogu kreirati i od 10 do 100 puta brze od procesa, naravno sve
zavisi od platforme .
• Skalabilnost: Kod procesora sa Multithreading podrskom , omoguceno je da se niti
mogu izvoditi paralelno na razlicitim jezgrama.

-Na kraju da zakljucimo da svako jezgro procesora moze izvrsavati jedan


zadatak/task.

-Kako bismo postigli cest prelazak procesora sa procesa na proces potreban nam je
rasporedivac procesa koji bira neki od procesa u stanju Ready i salje ga procesoru
na izvrsavanje.

-Procesi se smjestaju u Job Queue.

-Procesi u RAM memoriji spremni za izvrsenje se nalaze u Ready Queue.

-Svaki procesa koji cekaju na neku U/I uredaj zove se Device Queue.

-Biranje procesa kao sto smo vec rekli se obavlja preko rasporedivaca.

-Long-term Scheduler/Dugorocni rasporedivac bira procese sa diska i ucitava ih u


RAM memoriju(ukoliko se stvori "visak" procesa , ne mogu se svi izvrsiti pa se
smjestaju Hard disk).

-Short-term Scheduler/Kratkorocni rasporedivac bira izmedu procesa u stanju


Ready i dodjeljuje ih procesoru.

-Kratkorocni se izvrsava brze od Dugorocnog i naravno mnogo vise se koristi pa


prema tome mora biti brz .

-Dugorocni rasporedivac upravlja brojem procesa unutar memorije.

-Brzina kreiranja procesa mora biti identicna brzini procesa koji napustaju sistem.

-Kontekst posjeduje infromacije o procesima,stanje procesa,upravljanje memorijom .


Cuva se trenutno stanje procesa kako bi se on mogao nastaviti izvrsavati ukoliko se
desi neki prekid .
-Deadlock je slucaj kada neki proces zahtijeva odredeni resurs i ako taj resurs nije
dostupan u tom trenutku proces ce preci u Stanje cekanja/Waiting time.Naravno
moze se desiti da ovaj proces nikad ne promijeni svoje stanje jer su resursi koje je on
zahtijevao vec zauzeti od strane drugog procesa.

-Postoji 7 slucaja zbog kojih dolazi do Deadlock-a:


• Deadlock na file zahtjeve.
• Deadlock u bazama podataka.
• Deadlock u alociranju dodijeljenih uređaja.
• Deadlock u alociranju višestrukih uređaja.
• Deadlock u spoolingu.
• Deadlock u dijeljenju diskova.
• Deadlock u mreži.

-Imamo dva nacina pomocu kojih mozemo rijesiti Deadlock:


• Prevencijom
• Izbjegavanjem

Predavanje 3(Rasporedivanje procesa):

-Multiprogramiranjem se poboljsava iskoristenost CPU-a.

-Prosjecan proces provodi 20% vremena u procesoru , dok je ostatak u memoriji.

-CPU iskoristenost = 1-pn


p je vrijeme izvrsavanja procesa i cekanja izvrsenja I/O aktivnosti(izrazava se u
procentima).
n je broj procesa koji se nalaze u memoriji, koji cekaju I/O aktivnost(za ovo vrijeme
CPU je nezaposlen) mozemo predstaviti kao pn.

-Stepen multiprogramiranja predstavlja iskoristenje CPU-a kao funkciju broja


procesa n koji se istovremeno nalaze u memoriji.

-Proces je nezavistan ako ne moze da utice ili na njega ne moze uticati neki drugi
proces koji se izvrsava .Pa prema tome svaki proces koji ne dijeli resurse sa drugim
procesom je nezavistan .

-Proces je zavisni/kooperativan ako on moze da utice ili na njega mogu da uticu


drugi procesi koji se izvrsavaju .
Ajde da nabrojimo razloge zbog kojih procesi razmjenjuju informacije:
• Dijeljenje informacija: vise procesa mogu imati zahtjeve da koriste iste informacije
tj. zajednicke fajlove pa prema tome OS im mora omoguciti ispravan pristup ovim
fajlovima.
• Povecanje brzine obrade: ukoliko neki proces mozemo rastaviti na vise procesa
koji ce se paralelno izvrsavati , zadatak se rijesava brze.
• Modularnost : racunarski sistem je modularan kada su funkcije sistema podijeljenje
u razlicite procese.
• Prilkladnost za koristenje: ovdje spada multitasking , sto znaci da vecina korisnika
zeli da izvrsava vise zadataka istovremeno.

-Karakteristike nezavisnih procesa:


• Na njega ne moze uticati niti jedan drugi proces.
• Rezultat ce uvijek zavisiti od inputa.
• Isti input ce uvijek dati isti output.
• Proces se uvijek moze zaustaviti i ponovo pokrenuti bez ikakvih problema.

-Karakteristike kooperirajucih procesa:


• Stanje procesa je djeljivo sa drugim procesima.
• Rezultat se ne može predvidjeti unaprijed.
• Rezultat ne mora uvijek biti isti za isti input.

-Problem pod nazivom proizvodac-potrosac.

-Jedno od rjesenje ovog problema kada je u pitanju komunikacija izmedu procesa


jeste dijeljenje memorije/shared memory.
Znaci ovdje se podrazumijeva dijeljenje memorije koja ce biti zajednicka za oba
procesa.Podrucje dijeljene memorije postoji u adresnom prostoru procesa koji ga je
kreirao uz pomoc sistemskog poziva shared memory create.
Ako drugi procesi zele komunicirati preko dijeljene memorije moraju prikaciti ovaj
segment na svoj adresni prostor koristeci sistemski poziv shared memory attach.
Naravno OS nastoji da sprijeci da jedan proces pristupa memoriji drugog procesa.

-Drugo rijesenje ovog problema jeste model prosljedivanja poruka/message


passing ,gdje procesi razmjenjuju podatke direktno ili indirektno preko zajednickog
"postanskog sanduka".
Kada je rijec o ovom rijesenju procesi mogu komunicirati bez upotrebe dijeljenja
memorije.

-Oba ova sistema se mogu sresti u OS-ovima i vecinom se koriste oba.


Razmjenjivanje poruka je korisno kada se radi o manjoj kolicini podataka i naravno
lakse se implementira od dijeljenja memorije.
Dijeljenje memorije omogucava brze komuniciranje ,ali treba obratiti paznju na
sinhronizaciju procesa koji se koriste .

-Postoje razliciti algoritmi za rasporedivanje procesa i naravno svi oni imaju razlicite
osobine .Neki od najvaznijih kriterija :
• Iskoristenje procesora/CPU utilization: procesor treba da bude iskoristen sto je
vise moguce , ovo opterecenje se krece izmedu 40 - 90%.
• Propusnost sistema (Throughput): broj procesa koji su se izvrsili u jedinici
vremena.
• Ukupno vrijeme potrebno za izvršavanje procesa (Turnaround time):
Veoma vazno je koliko traje izvrsenje nekog procesa.Ovo vrijeme obuhvata zbir
perioda provedenih u cekanju da proces ude u RAM,cekanje u Ready
Queue,izvrsavanje u procesoru i obavljanje I/O operacija.
• Ukupno vrijeme u redu čekanja (Waiting time): algoritam za rasporedivanje
procesa ne utice na vrijeme u kome se proces izvrsava ili obavlja I/O operacije, vec
samo na vrijeme koje proces provodi u redu spremnih procesa.
• Vrijeme odziva (Response time): mjera koja pokazuje koliko je vremena potrebno
od podnosenja zahtjeva do pocetka dobijanja prvih rezultata se naziva vrijeme odziva
koje zavisi od brzine izlaznih uredaja.

-Kratkorocni rasporedivac bira jedan od procesa u stanju Ready koji se nalazi u


Ready Queue.

-Rasporedivac se aktivira u sljedecim stanjima:


• Prelaz procesa iz Running u Waiting(proces je zatrazio I/O operaciju ili ceka da
se izvrsi "podproces").
• Prelaz iz stanja Running u Ready(desi se prekid,istek vremena).
• Prelaz iz stanja Waiting u Ready(izvrsena I/O operacija).
• Prelaz u stanje Terminated(zavrseno izvrsavanje procesa).

-Rasporedivanje bez prinudne suspenzije procesa je vrsta rasporedivanja kada


se proces dodijeli procesoru na izvrsavanje sve dok se taj proces ne izvrsi ili ne
prede u stanje Waiting.

-Rasporedivanje sa prinudnom suspenzijom procesa je vrsta rasporedivanja gdje


rasporedivac u bilo kojem trenutku moze da prekine izvrsavanje procesa i dodijeli
procesoru neki drugi proces u stanju Ready.

-FCFS/First Come First Serve rasporedivanje:


Ovo je najprostiji algoritam za rasporedivanje procesa u kojem se procesi dodjeljuju
procesoru onim redom kojim pristizu u red cekanja .
Sto znaci da ovaj algoritam koristi FIFO red u kojem se PCB procesa koji se tek
ubacuje u red stavlja na kraj reda a procesor se dodjeljuje procesu na pocetku reda.
Rasporedivanje je ovdje dosta "neposteno" jer procesi zadrzavaju CPU sve dok se
ne izvrse ili zatraze neki I/O , sto znaci da ne postuje prioritete procesa.
Ovo dovodi do zakljucka da je ovaj nacin rasporedivanja dosta nepovoljan.

-SJF/Short Job First rasporedivanje:


U ovom algoritmu za sve procese u redu cekanja se procjenjuje vrijeme potrebno za
njihovo izvrsenje , a procesor se dodjeljuje procesu koji se najbrze izvrsava.Ako dode
do slucaja gdje imamo procese sa indenticnim vremenom koristi se algoritam FCFS.
Osnovni nedostatak je to sto algoritam ne moze da odredi ukupno vrijeme potrebno
za izvrsavanje procesa.Ova procjena zasniva se na cinjenici da se proces izvrsava u
nekoliko ciklusa , trajanje sljedeceg ciklusa se procjenjuje na osnovu prethodnog
trajanja .
Razlikuemo dvije vrste SFJ algoritama:
• Bez prinudnog suspendovanja procesa: ovdje se uvijek izvrsava proces koji je
trenutno u stanju izvrsavanja , bez obzira da li se u redu pojavio novi proces.
• Sa prinudnim suspendovanjem procesa:ukoliko je vrijeme za izvrsavanje novog
procesa krace od procesa koji se trenutno izvrsava ,procesor se dodijeljuje novom
procesu.Ovaj algoritam se jos naziva Rasporedivanje po najmanjem preostalom
vremenu/SRT/Shortest Remaining Time.

-Rasporedivanje po prioritetu:
Kod prioritetnog algoritma procesima se dodjeljuje prioritet , dok se procesor
dodjeljuje procesu sa najvecim prioritetom.
Ukoliko procesi imaju isti prioritet koristimo FCFS rasporedivanje.
Prioritet se moze definisati:
• Interno: koristimo kvantitete za racunanje prioriteta procesa,vremenska
ogranicenja,memorijski zahtjevi,broj otvorenih fajlova.
• Eksterno: eksterni kriteriji su definisani izvan OS-a,vaznost procesa.
Najveci nedostatak je mogucnost neogranicenog blokiranja/starvation.
Ovo je slucaj kada se neki procesi nikad ne izvrse jer imaju nizak prioritet,pojavljuju
se procesi visokog prioriteta.
Rjesenje problema je starenje procesa, ovom metodom se povecava prioritet
procesa koji su u redu cekanja.

-RR/Round Robing/Kruzno rasporedivanje:


Algoritam slican FCFS ali se za prelaz izmedu procesa koristi prinudno
suspendovanje.Pa prema tome kazem da je RR algoritam rasporedivanja sa
prinudnim suspendovanjem.
Zadaje se vremenska jedinica od 10-100 milisekundi.RR se implementira kao kruzni
red kroz koji prolazi kratkorocni rasporedivac i redom dodjeljuje procesor svakom od
njih u trajanju od odredene vremenske jedinice.
Ready Queue je FIFO red,novi proces ide na kraj reda a izvrsava se onaj na pocetku.
Ako izvrsavanje traje manje od vremenske jedinice proces ce sam osloboditi
procesor a rasporedivac ce dati procesor procesu koji je prvi na listi, trenutno izvrseni
proces ide na kraj reda.
U suprotnom tajmer generise prekid i desava se prethodno pomenuti proces.
Performanse algoritma zavise od velicine jedinice koja je zadana , ako je ona velika
ovaj algoritam postaje kao i FCFS, a ako je kratka algoritam se zove dijeljenje
procesora/procesor sharing.

-Raspoređivanje pomoću redova u više nivoa/Multi Queue Scheduling:


Ovaj algoritam se koristi ukoliko je procese moguce podijeliti u grupe.
Procesi se dijele na interaktivne/foreground i pozadinske/background.
Kod ovog rasporedivanja se Ready Queue dijeli u nekoliko zasebnih redova u koje
se procesi trajno pridruzuju .
Interaktivni procesi se rasporeduju kruznim algoritmom.
Pozadinski procesi se rasporeduju FCFS algoritmom.
Pojedinom redu se moze dodijeliti odredena kolicina vremena.

-Raspoređivanje u multiprocesorskim sistemima:


Sve o cemu smo dosad pricali jesu procesori sa jednom jezgrom.Kada imamo na
raspolaganju procesore sa vise jezgri , moguce je izvrsiti dijeljenje opterecenja/load
sharing.
Rasporedivanje je moguce vrsiti da se donosenje odluka,I/O obrada dodijeli glavnom
procesoru/master.Drugi nacin je da slave procesori izvrsavaju samo korisnicki
kod, ovo se jos zove asimetrično multiprocesiranje/asymmetric multiprocessing
.
Drugi pristup je simetrično multiprocesiranje/symmetric multiprocessing u kojem
svaki procesor vodi racuna o rasporedivanju.

PREDAVANJE 4:

-Spomenut cemo neke vrste operativnih sistema:


• Mainframe operativni sistemi: razlikuju se od obicnih PC-ova po ulazno-izlaznim
kapacitetima .Operativni sistemi za mainframe racunare orijentisani su prema
istovremenoj obradi velikog broja poslova, od kojih vecina zahtjeva dosta veliku
kolicinu ulazno-izlaznih aktivnosti.
• Server operativni sistemi: Ispod Mainframe OS-ova dolaze nam server operativni
sistemi , i oni se koriste na nekim jacim PC-ovima,Workstation racunarima pa
moguce ih je koristiti i kod Mainframe racunara. Oni preko mreže
opslužuju više istovremenih korisnika, kojima dozvoljavaju dijeljenje hardverskih i
softverskih resursa.
• Operativni sistemi za multiprocesore: da bismo dobili dosta jake racunare
moguce je povezati vise procesora u jedan sistem.Ovi racunari trebaju posebne
operativne sisteme , slicni su server OS-ovima samo sto imaju specificna svojstva za
komunikaciju,povezivanje itd.
• Operativni sistemi za PC: ovo su sitemi koje svi vecinom danas imamo na nasim
racunarima .
• Operativni sistemi za rucne uredaje: rucni uredaji jesu PDA/Personal Digital
Assistant .
• Operativni sistemi za ugradene uredaje: se koriste na racunarima koji kontrolisu
uredaje koji ne moraju biti racunari .U ovu kategoriju spadaju DVD uredaji , MP3
uredaji i sl.
• Operativni sistemi za senzorske cvorove: mreze malih senzorskih cvorova se
mogu koristiti u razlicite svrhe, kao sto su npr. zastita objekata ,mjerenje temperature
i sl.
Svaki senzor je racunar koji naravno sadrzi CPU,RAM memoriju,ROM memoriju i
naravno potreban mu je neki OS , primjer je TinyOs.
• Operativni sistemi za sisteme realnog vremena: kao sto i samo ime kaze glavni
faktor kod ovog sistema jeste vrijeme.
Najcesce se u velikim fabrikama gdje je vremenska preciznost neophodna.
• Operativni sistemi za pametne kartice: najmanji OS-ovi se izvrsavaju na
pametnim karticama koje su velicine kreditne kartice sa ugradenim procesorom.

- Adresni prostor je memorijska lokacija sa koje proces moze citati i pisati podatke.
Ovaj adresni prostor sadrzi izvrsne fajlove,razne programske podatke i stek.

- Ulazi i izlazi su fizicki uredaji preko kojih se unose i ispisuju podaci.


Ovdje spadaju tastature, misevi,monitori itd.
Ovim jedinicama upravlja racunar , prema tome neophodan je ulazno-izlazni
podsistem koji ce upravljati ovim uredajima.

- Sistemski pozivi obezbjeduju interfejs za usluge koje nudi operativni sistem.

- Interfejs za sistemske pozive sluzi kao veza sa sistemskim pozivima koje nudi
operativni sistem.On presrece pozive funkcija unutar API interfejsa i poziva
odgovarajuci sistemski poziv unutar OS-a.

- Sistemski pozivi se mogu podijeliti na:


• Upravljanje procesima
• Rad sa datotekama
• Upravljanje uredajima
• Odrzavanje komunikacije
• Komunikacija

-Sadrzaj memorije upisuje se u datoteku i ispituje uz pomoc debagera.


To je sistemski program koji programerima olaksava ispravljanje i pronlazenje
gresaka u aplikacijama.

-Korisnicki interfejs nam omogucava komunikaciju sa racunarom.


PREDAVANJE 5 (Sinhronizacija procesa):

-Komunikacija izmedu procesa se jos naziva i ICP/Inter Process


Comunication/Meduprocesna komunikacija.
-OS ima zadatak da obezbijedi mehanizme kojima se rjesava problem uskladivanja
ili sinhronizacije procesa.

-Situacije u kojima dva ili vise procesa citaju ili upisuju neke djeljive podatke, gdje
krajnji rezultat zavisi od redoslijeda izvrsavanja instrukcija u razlicitim procesima
naziva se stanje trke/race condition.

-Potrebna je medusobna ili uzajamna iskljucivost/mutual exclusion, sto znaci da


kada neki proces koristi neku djeljivu varijablu ili neki fajl ostali procesi ne smiju imati
mogucnost da rade istu stvar kao i ovaj proces.

-Dio programa u kojem se pristupa djeljivoj memoriji se naziva kriticna


sekcija/critical section.

-Za ulazak procesa u kriticnu sekciju potrebna mu je dozvola.Dio koda u kojem se


nalazi taj zahtjev za dozvolom se naziva ulazna sekcija/entry section.Iza kriticne
sekcije se nalazi izlazna sekcija/exit section i ostala nam je jos preostala
sekcija/remainer section.

-Problem izbjegavanja trke se moze uspjesno rijesiti ako je zadovoljeno jedno od


sljedecih pravila:
• Medusobno iskljucivanje/Mutual Exclusion: ako jedan proces izvrsava svoju
kriticnu sekciju,onda nijedan drugi proces ne smije da izvrsava svoju kriticnu sekciju.
• Napredovanje/Progress: ukoliko nijedan proces ne izvrsava svoju kriticnu sekciju ,
a pojave se procesi koji zele da udu u svoju kriticnu sekciju, onda samo ovi procesi
koji zele da udu u svoj sekciju mogu da ucestvuju u odlucivanju koji ce proces dobiti
pravo da prvi ude u svoju kriticnu sekciju.
• Ograniceno cekanje/Bounded Waiting: nakon sto proces napravi zahtjev za
ulazak u svoju kriticnu sekciju ,a prije odobravanja ovog zahtjeva drugim procesima
kojima je dozvoljen ulaz , broj ulaza se mora ograniciti.

-Onemogucavanje prekida kod jednoprocesorskih sistema se najjednostavnije


postize tako sto ce svaki proces prilikom ulaska u svoju kriticnu sekciju onemoguciti
sve prekide , a neposredno nakon napustanja kriticne sekcije ponovo ih omoguci.

-Kod sistema sa dva ili vise CPU-ova iskljucivanje prekida pogada samo CPU koji
izvrsava iskljucenu instrukciju.
Procesi dodijeljeni drugim CPU-ima nastavljaju se izvrsavati i pristupati djeljivoj
memoriji.
- Iskljucivanje prekida je cesto korisna tehnika unutar samog operativnog sistema, ali
nije prikladna kao opci mehanizam medusobnog iskljucivanja za korisnicke procese.

-Druga metoda iskljucivanja prekida je pomocu Varijable zakljucavanja koje


zahtjeva jednu djeljivu varijablu/bravu koja je postavljena na 0.Kada proces zeli uci
u svoju kriticnu sekciju prvi ispituje bravu, ako je ona na 0 proces je postavlja na 1i
ulazi u kriticnu sekciju.Ali ako je ona 1, proces mora da ceka dok ona ne postane 0
jer 1 znaci da je zauzeta.

-Strogo smjenjivanje predstavlja trecu metodu za rijesenje ovog problema .


Cjelobrojna varijabla red , koja je pocetno postavljena na 0 prati ciji je red da ude u
kriticnu sekciju a zatim azurira djeljivu memoriju.
Stalno provjeravanje do pojave nekog zahtjeva naziva se Zaposleno cekanje/Busy
waiting.Brava koja koristi kruzno zaposleno cekanje naziva se Kruzna brava/Spin
lock .

-U nastavku cemo spomenuti neke sinhronizacijske probleme .

-Jedan od najcescih problema u konkurentnoj obradi jeste problem proizvodaca i


potrosaca koji je jos poznat pod nazivom problem ogranicenog
meduskladista/bounden buffer .

-Sljedeci problem je problem citanja i pisanja .Problem se nece pojaviti u slucaju da


bazi pristupaju dva procesa citaca , medutim ukoliko pristupe jedan proces pisač i
neki drugi proces(pisač ili citac) moze doci do nereda.

-Iduci nam dolazi tzv. problem Filozofa za vecerom koji predstavlja klasicni problem
sinhronizacije .Ovaj problem je predstavljanje potrebe alociranja nekoliko resursa
procesima bez izgladnjivanja i/ili potpunog zastoja .

-Deadlock/Potpuni zastoj ce nastupiti ukoliko neki proces zatrazi odredene resurse


, a ti resursi u tom trenutku nisu dostupni .Kada se ovo desi proces prelazi u stanje
Waiting i ponekad se moze desiti da ovaj proces nikad vise ne promjeni to stanje jer
su resursi koje je on zatrazio zauzeti od strane drugog procesa.
(Spominjali smo Deadlock ranije)

-U uobicajenom režimu korištenja resursa, proces može da bude u nekoj od tri faze:
• Zahtjev/Request: proces zahtijeva resurs, i ukoliko ne moze da ga dobije ceka da
se taj resurs oslobodi.
• Koristenje/Use: proces je dobio resurs i koristi ga .
• Oslobadanje/Release: proces oslobada resurs posto je zavrsio sa koristenjem.

-Deadlock nastupa ako su istovremeno ispunjeni sljedeci uslovi:


• Medusobno iskljucenje/Mutual exclusion: barem jedan resurs mora da bude u
stanju u kome se ne moze dijeliti ,odnosno samo jedan proces moze da koristi
odredeni resurs.
• Dobrovoljno oslobadanje resursa/No preemption: resurs moze biti osloboden
samo ako ga dobrovoljno oslobodi proces koje je dodijeljen.
• Zatrazanje resursa tokom cekanja/Hold and wait: proces mora da ima barem
jedan resurs dok ceka da mu se dodijeli neki drugi resurs koji je trenutno dodijeljen
nekom drugom procesu.
• Kruzno cekanje/Circular waiting: postoji skup procesa P1, P2, ..., Pn takvih da
proces P ceka na resurs koji drži proces P2, proces P2 ceka na resurs koji drži P3, i
tako redom do procesa Pn koji ceka na resurs koji drži proces P1.

-Rukovanje Deadlocko-m se vrsi na tri nacina:


• Koristenje protokola za sprecavanje/izbjegavanje potpunih zastoja
obezbjedujuci sistem nikad ne ude u stanje potpunog zastoja.
• Sistemu se moze dozvoliti da ude u stanje Deadlock-a, zastoj se otkriva i
otklanja uz pomoc algoritama.
• Problem se ignorise kao da se potpuni zastoji nikad ne pojavljuju u sistemu.

-Hardverska rjesenja problema kriticne sekcije kao sto su nedjeljive instrukcije mogu
se prevazici koristenjem Semafora/Semaphore.

-Semafor S je cjelobrojna promjenjiva kojoj se pristupa preko dvije nedljeljive/atomic


operacije
• wait()
• signal()

-OS razlikuje brojacke semafore/counting semaphore i binarne semafore/binary


semaphore.

-Binarni semafori se jos nazivaju muteksi/mutex jer omogucavaju medusobno


iskljucivanje/mutual exclusion.

-Spinlok je vrsta semafora gdje se proces vrti dok ceka da dobije bravu/lock.

-Proces se budi operacijom wakeup() koja mijenja stanje procesa iz Waiting u


Ready.

-Svaki semafor ima cjelobrojnu vrijednost value i listu procesa list .


Kada proces mora da ceka na semafor,on se dodaje u listu procesa.
Operacija signals() uklanja jedan proces iz liste procesa koji cekaju na semafor i
budi ga .

-Operacija block() suspenduje proces koji je poziva,a operacija wakeup() nastavlja


izvrsavanje blokiranog procesa.

-Semafori koji koriste FIFO strukturu za uklanjanje procesa iz reda cekanja na


semafor mogu biti jaki semafori i slabi semafori.

-Zbog mnogih gresaka koje semafori mogu napraviti osmisljeni su monitori.

-Konstrukcija monitora obezbjeduje da unutar monitora u odredenom trenutku bude


aktivan samo jedan proces.
Jedine operacije koje se mogu primjenjivati na uslovne promjenljive su wait() i
signal(). Operacija x.wait() znaci da ce proces koji je poziva biti suspendovan dok
neki drugi proces ne pozove x.signal(). Operacija signal() nastavlja izvršavanje
samo jednog procesa.

-Implementacija monitora pomocu semafora vrsi se tako sto se za svaki monitor


uvodi semafor/mutex i inicijalizuje na 1. Proces mora da izvrši wait/mutex prije
nego što ude u monitor, a kada izade iz njega, mora da izvrši signal/mutex.

You might also like