Operativni sistemi-predavanja

Embed Size (px)

DESCRIPTION

operativni sistemi, vts nis, predavanja skracena verzija

Citation preview

2 }as

1. Uvod u operativne sisteme

Svaki raunarski sistem sastoji se od skupa tehnikih komponenti hardvera, programskog koda softvera i podataka koji se obrauju. Kao to je poznato, hardver predstavlja samu mainu, dok softver predstavlja programe. Predmet naeg izuavanja bie operativni sistemi, posebna vrsta softvera bez koje upotreba same maine praktino ne bi bila mogua.

Operativni sistem je program koji predstavlja interfejs izmeu hardvera raunara i korisnika raunarskog sistema. Njegova svrha je da obezbedi okolinu u kojoj se izvravaju korisniki programi. Prema tome, osnovni cilj operativnog sistema je da uini raunarski sistem pogodnim za upotrebu. Drugi cilj je da se korienje resursa raunarskog sistema odvija na efikasan nain.

1.1. Definicija i zadaci operativnog sistema

Raunarski sistem se grubo moe podeliti na etiri komponente (slika 1.1):

Hardver (CPU, memorija, U/I ureaji).

Operativni sistem.

Aplikativni softver (kompilatori, sistemi za upravljanje bazama podataka, tekst procesori, grafiki porgrami, itd.).

Korisnici (ljudi, drugi raunari ili druge maine).

Hardver raunara Sl. 1.1. Apstraktni pogled na komponente raunarskog sistema.

Hardver raunara prua osnovne resurese. Aplikativni programi definiu naine na koje se ti resursi koriste za reavanje nekog od problema korisnika. U sistemu moe postojati vie razliitih korisnika koji pokuavaju da ree razliite probleme. Stoga mogu da postoje razliiti aplikativni programi. Operativni sistem upravlja dodelom hardverskih resursa i vri koordinaciju upotrebe hardvera izmeu razliitih aplikacija razliitih korisnika.

Iz ovih razloga moemo posmatrati operativni sistem kao alokator resursa. Raunarski sistem sadri razliite resurse koji mogu biti hardverski ili softverski kao to su: CPU vreme, memorijski prostor, prostor za smetaj datoteka, U/I ureaji itd. Operativni sistem deluje kao menader ovih resursa dodeljujui ih razliitim programima i korisnicima na osnovu njihovih potreba tokom izvravanja njihovih zadataka. Kako je sasvim mogue da se javi vie zahtava za resursima koji esto mogu biti meusobno suprostavljeni, opertivni sistem mora da odluuje o tome kako e dodeljivati resurse kako bi se rad raunarskog sistema odvijao na nepristrasan i efikasan nain.

Ukoliko se usresredimo na upravljaku funkciju operativnog sistema, moemo rei da je operativni sistem upravljaki program koji nastoji da izvrenje korisnikih programa tee bez greaka. Ovo se naroito odnosi na upravljanje U/I ureajima.

Generalno, ne postoji potpuno adekvatna definicija operativnog sistema. Razlog za postojanje operativnog sistema je u tome to su operativni sistemi razuman nain da se kreira upotrebljiv raunarski sistem. Moda je lake definisati operativni sistem definiui ta radi jedan operativni sistem nego ta je on u stvari.

Ve smo rekli da su dva osnovna cilja operativnog sistema da raunarski sistem uini pogodnim za upotrebu i da obezbedi efikasan rad raunarskog sistema. Ova dva cilja su ponekad u kontradikciji. U prolosti se efikasnost smatrala vanijom od pogodne upotrebe, tako da se teorija operativnih sistema skoncentrisala uglavnom na optimalnu upotrebu resursa.

1.2 Zaeci operativnih sistemaNa poetku, postojao je samo hardver raunara. Prvi raunari su bili fiziki ogromne maine kojima se upravljalo sa konzole. Programer bi napisao program i zatim upravljao radom programa sa konzole. Najpre bi se program runo uneo u memoriju, bilo preko ploe se prekidaima, papirne trake ili buenih kartica. Zatim bi se pritiskom na odreene tastere unela poetna adresa programa i zapoelo njegovo izvravanje. Programer koji je ujedno bio i operater, pratio bi izvravanje programa preko naroitih displeja na konzoli. U sluaju greaka, programer bi zaustavljao program, ispitivao sadraj registara i memorije i otklanjao greku direktno sa konzole. Izlaz bi se tampao ili buio na traku ili karticu radi kasnijeg tampanja.

Mnogi sistemi koristili su emu rezervacije. Onaj ko bi eleo da koristi raunar bi se upisivao u raspored traei sebi slobodno vreme i rezerviui ga. Meutim, nekada je predvieno vreme bilo prekratko (u sluaju kada se jave problemi) a nekada ne bi bilo iskorieno u potpunosti.

Slika 1.2. Izgled memorije za rezidentni monitor. Tokom vremena poelo se sa korienjem itaa kartica, tampaa i magnetnih traka, Razvijeni su asembleri, louderi i linkeri kako bi olakali programiranje. Kreirane su biblioteke funkcija. Javljaju se drajveri ureaja kao specijalni programi, napisani za svaki ureaj, a koji su uzimali u obzir posebnosti svakog ureaja.

Neto kasnije, sa pojavom viih programskih jezika, posao programiranja je olakan, ali je zato otean posao operatera. Da bi se, na primer, izvrio neki program napisan u Fortranu, bilo je potrebno najpre napuniti Fortran prevodilac u raunar, tj. montirati odgovarajuu magnetnu traku. Program bi se itao sa buenih kartica i upisivao takoe na magnetnu traku. Prevodilac bi generisao asemblerski kod koji je morao da se asemblira slinim postupkom a zatim da se izvri linkovanje. Posle ovoga bi se program izvravao i po potrebi preiavao. Pri ovome je vreme postavljanja bilo ogromno.

Reenje je potraeno na dva naina. Unajmljeni su profesionalni operateri, tako da programer i operater vie nisu bili jedna osoba. Nije vie bilo nuno da programeri rezerviu vreme na raunaru. Drugi nain je podrazumevao uvoenje paketne obrade. Poslovi sline prirode grupisani su u pakete i izvravali jedan za drugim.

Ova reenja su malo poboljala iskorienost raunara. Ostajao je problem u tome to je, prilikom prekida rada programa, operater utvrivao da li je prekid bio normalan ili abnormalan, po potrebi vrio damp memorije i potom punio ita kartica novim poslom, ostavljajui procesor neiskorienim za to vreme.

Da bi se i ovaj problem prevaziao, uvedeno je automatsko sekvenciranje poslova i prvi rudimentarni operativni sistemi. Na taj nain vren je automatski prenos upravljanja sa jednog posla na drugi. Kreiran je mali program nazvan rezidentni monitor (slika 1.2). Na poetku rada raunara upravljanje se predaje rezidentnom monitoru koji je dalje prenosio upravljanje programima. Kada se neki program zavri kontrola se ponovao vraa rezidentnom monitoru koji opet ide dalje na drugi program.

Da bi rezidentni monitor znao koji program treba da se izvrava uvedene su upravljake kartice koje su ukazivale monitoru koji program treba da se izvri. Na primer,

$FTN izvri Fortran prevodilac

$ASM izvri asembler

$RUN izvri korisniki program

Za odreivanje granica poslova koristile se se jo dve kartice:

$JOB Prva kartica posla

$END Poslednja kartica posla

Znak $ odvajao je upravljake kartice od kartica koje su predstavljale programe ili podatke. Neki proizvoai su koristili i druge znake (npr. //). Na slici 1.3 vidimo primer skupa kartica za izvravanje jednog paketa poslova.

1.3 Poboljavanje performansi prvobitnih operativnih sistema

Raunari su, pogotovu veliki, bili veoma skupe maine, tako da se zahtevalo da izvravaju to je mogue vie poslova. Prelazak na paketne sisteme sa automatskim sekvenciranjem poslova bio je izvren upravo iz razloga poboljanja performansi. Ljudi su, u poreenju sa raunarom, veoma spori pa je poeljno da se to vie ljudskih operacija zameni softverom operativnog sistema. Meutim i kod ovog pristupa je CPU ostajao neuposlen. Mehaniki U/I ureaji su mnogo sporiji od elektronskih ureaja. To znai da CPU esto eka na U/I.

1.3.1 Rad off-line

Jedno reenje problema sastojalo se da se ulaz sa sporih, mehanikih ureaja iskopira najpre na magnetnu traku. Kada se traka napuni onda ona slui kao ulaz raunarskog sistema. Prilikom izlaza se na slian nain punila magnetna traka, a tampanje je vreno kasnije. Takav rad itaa kartica i tampaa naziva se off-line. Postojala su dva pristupa ovom problemu. Ureaji specijalne namene, kao to su itai kartica, linijski tampai i sl., pravljeni su tako da je njihov izlaz, tj. ulaz magnetna traka. Drugi pristup je podrzumevao upotrebu malog raunara koji bi bio posveen kopiranju sa ili na traku. Taj mali raunar je predstavljao neku vrstu satelita veem raunaru. Satelitskaobradaje jedan od prvih sluaja sistema sa vie raunara koji rade zajedno u cilju poboljanja performansi. Glavna prednost off-linerada je u tome to glavni raunar nije vie bio ogranien brzinom sporih U/I ureaja, ve samo brzinom mnogo brih jedinica magnetnih traka. Osim ovoga, programi su na taj nain mogli da se izvravaju nezavisno od tipa U/I ureaja (device independence). Programi su pisani da koriste logikeU/I ureaje, dok se uparavljakim karticama ili drugim komandama ukazivalo kako se logiki ureaj preslikava na fiziki ureaj.

1.3.2 BaferovanjeJo jedno reenje problema sporosti U/I ureaja je baferovanje. Tenja kod baferovanja je da se i CPU i U/I ureaju uposle sve vreme. Poto se podaci uitaju i CPU poinje da radi sa njima, ulazni ureaj odmah poinje sa narednim ulazom. Uz malo sree, dok CPU obradi prethodne podatke, novi ulaz bie uitan. Slian proces moe da se odvija i prilikom izlaza. Baferi su obino sadravali blokove podataka koji su se satojali od nekoliko logikih zapisa. Problem koji se kod implementacije baferovanja javljao sastojao se u otkrivanju kada je U/I ureaj zavrio svoj rad to je pre to mogue. Ovaj problem se reavao uvoenjem sistema prekida. Takoe se uvodi i direktnipristup memoriji(DMA).

Baferovanje nije uvek dovoljno da se povea efikasnost rada raunara, naroito kod programa koji su ekstremno posveeni U/I aktivnostima ili CPU aktivnostima.

1.3.3 Spooling

Priprema poslova za off-linerad se nastavila neko vreme, ali je ubrzo bila zamenjena u mnogim sistemima. Sistemi diskova su uli u iroku upotrebu. Problem sa magnetnim trakama je bio to, recimo ita kartica nije mogao da upisuje na traku na jednom kraju a CPU da ita podatke sa drugog kraja, jer je magnetna traka poluadresivi medijum sa ugraenom sekvencijalnom prirodom pristupa.

Nain obrade koji se odvijao pomou diskova nazivao se Spooling(Simultaneous Peripheral Operation On-Line). Ovde se disk koristi kao veliki bafer (slika 1.4).

ita kartica Linijski tampa Sl. 1.4. Spooling. Baferovanje preklapa U/I aktivnosti nekog posla sa njegovim CPU aktivnostima. Prednost spoolinga nad baferovanjem je to je ovde U/I aktivnost jednog posla preklopljena sa CPU aktivnostima drugih poslova. Ekstremni oblik spoolinga je da se itav sadraj magnetne trake iskopira na disk, tako de se sve operacije obavljaju sa kopijom na disku i to mnogom veom brzinom (ovaj ema se naziva staging a tape).

Spooling ima direktan uticaj na poboljanje performansi. Po ceni izvesnog prostora na disku i nekoliko tabela koje prate sadraj na disku, omogueno je preklapanje CPU aktivnosti jednog posla sa U/I aktivnou drugog. Osim ovoga, spooling obezbeuje vanu strukturu podataka: poolposlova. Pool poslova omoguuje da operativni sistem moe da meu spremnim poslovima iz poola odabere koji e se sledei izvriti i na taj nain da povea efikasnost. Dok su poslovi dolazili direktno sa itaa kartica pa i sa magnetne trake, oni su morali da se izvravaju u sekvencijalnom FIFO poretku. Meutim, kada imamo nekoliko poslova na brzom ureaju sa direktnim pristupom, kao to je disk, omoguen je planiranjeposlova(job scheduling).

1.3.4 Multiprogramiranje

Najvaniji aspekt planiranja poslova je sposobnost multiprogramiranja. Ideja multiprogramiranja sastoji se u sledeem. Operativni sistem bira jedan od poslova iz poola poslova i poinje da ga izvrava. U odreenom trenutku posao e ekati na montiranje trake, na komandu sa tastature, zavretak U/I operacije ili slino. U tom sluaju se operativni sistem jednostavno prebaci na drugi posao i poinje njega da izvrava. Kada se slina stvar dogodi i sa tim poslom pria se ponavlja. Pre ili kasnije e prvi posao zavriti svoje ekanje i dobie ponovo CPU kako bi se nastavio. Dokle god postoji neki posao koji treba izvravati CPU nije besposlen. Operativni sistemi sa multiprogramiranjem su prilino sloeni. Da bi mogli da imamo nekoliko poslova spremnih za izvravanje, oni moraju da se istovremeno nalaze u memoriji (slika 1.5). To povlai da moraju da

postoje sredstva za upravljanje memorijom. Takoe moramo da imamo i mogunost kratkoronog planiranja poslova (cpu scheduling), planiranja U/I ureaja, upravljanja zastojima, upravljanja konkurencijom, zatite i dr.

1.3.5Deljenje procesorskog vremena (Time Sharing)

Sistemi sa deljenjem procesorskog vremena su rezultat pokuaja da se obezbedi interaktivna upotreba raunarskog sistema po razumnoj ceni. Ovakav operativni sistem koristi planiranje CPU-a i multiprogramiranje dozvoljavajui svakom korisniku da koristi procesor tokom malog, unapred definisanog vremenskog intervala. Sada nije problem to korisnicima treba relativno puno vremena da izvre unos sa tastature ili proitaju sa ekrana monitora

rezultate rada programa, jer se upravljanje procesorom prenosi na druge poslove tokom svakog vremenskog intervala.

1.3.6 Sistemi za rad u realnom vremenu (RealTime Systems)

Jo jedan oblik operativnih sistema jesu sistemi za rad u realnom vremenu. Ovakvi sistemi se esto koriste kao kontroleri u specijalnim aplikacijama. Razliiti senzori snabdevaju raunar podacima. Raunar analizira te podatke i po potrebi podeava upravljanje kako bi promenio ulaz u senzore. Obrada kod ovakvih sistema mora biti zavrena u okviru unapred zadanog vremenskog perioda.

Funkcije operativnog sistema

OS predstavlja skup sistemskih programa koji posreduje izmeu korisnika i raunarskog hardvera a clij mu je da:

Izvrava korisnike programe i olaka reavanmje korisnikih problema

Priblii korienje raunarskog sistema i uini ga podesnijim za korisnika

Omogui to efikasnije iskorienje raunarskog hardvera1. Upravljanje resursima raunarskog sistemaPod resursima podrazumevamo programe, podaci, procesor, memorija, I/O kontroleri i sve ostalo to se koristi da bi se dobila neka informacija ili izvrila neka radnja. Osnovni cilj svakog OS je da svi ovi rasursi budu optimalno upotrebljeni.

2. Obezbeivanje pristupanog radnog okruenjaza krajnjeg korisnika Potrebno je da raunar koji razume samo jednostavan ali nerazumljiv jezik 1 i 0 priblii krajnjem korisniku i omogui mu da moe da upravlja raunarskim sistemom putem razumljivih naredbi bliskih jeziku kijm govorimo. Primer upis datoteke na HD raunara.

3. Automatsko funkcionisanje raunarskog sistemaOS mora da omogui funkcionisanje raunarskog sistema bez dodatne intervencije korisnika. Osnovni razlog za to je sporost korisnika, tako da bilo koja njegova intervencija u toku rada OS uinie isti sporim i neefikasnim a samim tim i neadekvatnim za reavanje mnogih problema. Primer: punjenje memorije sa podacima ili programima. 4. Mogunost planiranja i rasporeivanja poslova (scheduling)

Radi preciznije dodele procesa i procesora uvode se kontrolne naredbe koje treba da upravljaju celokupnim radom raunarskog sistema (job control language).5. Multiprogramiranje

Tehnika koja nam omoguuje da na jednom raunaru pokrenemo vie programa od jednom tj. njihovo istovremeno izvravanje.6. Eliminisanje zavisnosti U/I operacijaIzvravanje U/I operacija je znatno sporije od procesora pa je potrebno da OS te operacije izoluje tj. odvoji od procesora kako bi on mogao da za to vreme radi neke druge stvari. U tu svrhu koristimo dve hardverske strukture i to: kanal i tehniku prekida. Kanal predstavlja ureaj koji kontrolie jedan ili vie perifernih ureaja i po pravilu on se realizuje putem DMA (Direct Memory Access) kontrolera. DMA je sposoban da vri prenos podataka izmeu perifernih ureaja a da pri tom ne angauje procesor za to. Tehnika prekida se koristi da se procesor obavesti ili da neki ureaj zahteva opsluivanje ili pak da je neka radnja koju procesor nije izvravao zavrena,Karakteristike Operativnih sistema

1. KonkuretnostPredstavlja postojanje vie simultanih, paralelnih aktivnosti koje se istovremeno izvravaju. Javljaju se mnogi problemi koje tu treba razreavati kao:uzajamno ne meanje, korienje zajednikih resursa, sinhronizacija aktivnosti koje zavise jedne od druge, prelazak sa jedne na drugu aktivnost i td. 2. Deoba resursaU veini sluajeva konkurentne aktivnosti koriste zajednike resurse ili informacije pa samim tim oni moraju da budu deljivi (shared). Postoji vie razloga da se oni dele a na prvom mestu to je ekonominost korienja tj. znatno se smanjuje cena jednog raunarskog sistema.3. Postojanje dugotrajne memorijeDa bi smo mogli da opsluimo vie korisnika tj. da vie programa istovremeno izvravamo neophodan preduslov je da imamo mogunost trajnog skladitenja kako podataka tako i programa na nekom medijumu sa velikom brzinom pristupa istom. To se reava putem ureaja sa velikim kapacitetom tj. sekundarnom memorijom. Mnogi problemi se tu javljaju koje OS treba da razrei kao: obezbeenje jednostavnog pristupa podacima, brzina upisivanja i oitavanja podataka, sigurnost podataka i zatita od greaka i td. 4. NedeterminizamOS mora da se ponaa deterministiki tj. kada izvrava isti program sa istim podacima on mora uvek da da isti rezultat bez obzira kada se vremenski taj program odvija. Sa druge strane on mora da se ponaa i nedeterministiki jer mora da odgovori na mnoge zahteve i dogaaje koji mogu da se dogode potpuno ne planirano u toku rada kao to su: razni nepredvidivi prekidi, zahtevi za dodelu nekih resursa, greke u toku izvravanja programa).Poeljne osobine Operativnog sistema

1. Visok nivo efikasnosti

2. Visok nivo pouzdanosti

3. Jednostavnost odravanja

4. Prihvatljiva veliina

Vrste Operativnih sistema

OS moemo podeliti na razliite vrste to sve zavisi od kriterijuma koji se koristi i to:

Prema broju korisnika: Jednokorisniki(single user) i viekorisniki (multyuser) Prema broju simultanih aktivnosti: jednoprocesni (single tasking) i vieprocesne(multitasking)

Prema nameni i nainu obrade poslova: sistemi sa grupnom obradom (bach), interaktivni(time sharing) i kombinovani. Prema funkcionalnim osobinama raunarskog sistema: OS za velike raunarske sisteme, OS za sisteme sa deljenjem vremena, OS za stone raunare, OS za vieprocesorske sisteme, mrene OS, distribuirane OS, udruene sisteme, OS za upravljanje u realnom vremenu, runi OS (handheld system), ugnjedeni OS (embedded).Struktura Operativnog sistema Jedan raunarski sistem posmatramo kao skup komponenti sa tano definisanim ulogama i meusobnim vezama izmeu softverske i hardverske koponente sistema. Uloga operativnog sitema je da definie sve te veze i omogui da se na najefikasnij nain softverskim alatima upravlja hardverskim komonentama. Uglavnom svi operativni sistemi imaju strukturu kao na slici br.1

1. Interpretacija komandnog jezika

2. Planiranje i evidencija

3. Upravljanje podacima

4. Upravljanje U/I ureajima

5. Upravljanje memorijom

6. Jezgro ( kernel )

1. Jezgro operativnog sistema je najblie hardveru. Ono upravlja sistemom prekida raunara i vri obradu prekida, planira procese (upravlja procesorom ili procesorima ako ih ima vie), vri obradu procesa (manipulaciju nad procesima), njihovu sinhronizaciju i medjusobnu komunikaciju. Jezgro vodi rauna o procesoru kao resursu operativnog sistema. Kod nekih operativnih sistema ovaj najnii sloj se naziva upravljanje procesima ( kod LINUX-a imamo i upravljanje procesima i jezgro OS gde je jezgro neto iri pojam). Ovde operativni sistem radi u zatienom raimu rada ( kernel mode) gde je hardverski onemoguena izmena koda koji se izvrava. Sabv ostali softver radi korisnikom ( user mode) gde je mogue manjati programski kod.

2. Upravljanje memorijom odnosi se na upravljanje glavnom (operativnom) memorijom. Zadaci koje OS na ovom nivou treba da izvei su: realizacija strategije dodele memorije, dodela memorije, realizacija strategije oslobaanja memorije i osloba\anje memorije. Svaki raunarski sitem ima samo jednu memoriju i ona se posmatra kao jedna celina iako se sastoji iz nekoliko delova. Operativni sistem maora da ima u vidu da se memorija sastoji od fiziki razliitih komonenti koje su izraene razliitim tehnologijama, zatim da se u memoriji nalaze i programi i razliiti podaci kao i sam operativni sistem. U viekorisnikom sistemu sve se to umnoava sa brojem korisnika pa se tu javlja i potreba da OS vodi rauna i zatiti pojedinih delova memorije od neovlaenog upada i naruavanja integriteta podataka.3. Upravljanje U/I ureajima odnosi se na obezbeivanje nezavisnosti ureaja i efikasnosti njihovog rada, realizaciju strategije dodeljivanja i oslobaanja ureaja kao i samu njihovu dodelu.

4. Upravljanje podacima Ova komonenta treba da omogui korisniku to lake korienje i manipulaciju podacima koji se nalaze u memoriji. Osnovna uloga ovog dela OS je da vodi rauna o organizaciji podataka koji se smetaju u vidu datoteka koje su oragnizovane kao adresari (direktorijumi) i obini fajlovi kao i o njihovoj zatiti. Uloga ovog dela je da vodi rauna i o sekundarnoj memoriji kao i njenoj defragmentaciji tj. Upravljanje prostorom na disku.5. Planiranje i evidencija Ovaj deo obuhvata aktivnosti koje su vezane za uvoenje novih poslova u sistem i pravljenje poretka u kom e se oni izvravati. Dakle, vri se izbor posla, realizuje strategija dodele resursa i odreuje prioritet njihovog izvravanja.Pod evidencijom se podrazumeva evidentiranje korienja resursa. Ova komonenta je vrlo bitna kod sloenijih sistema gde imamo viekorisniki rad (multiuser mode).

6. Interpretacija komandnog jezika moe biti totalno van operativnog sistema ali je funkcijski tu. Zavisno od vrste raunarskog sistema korisniku moe biti na rspolaganju odreeni komandni jezik. On podrazumeva interaktivni rad a ako te interakcije nema onda se koristi neki jezik za obradu polova jezik za upravljanje poslovima.

Projektovanje Operativnih sistemaNaveemo tri osnovne koncepcije kod projektovanja OS koje su zastupljene:

1. Monolitni sistemi

Predstavlja najeu realizacij OS u prolosti. Monolitni OS je realizovan kao skup procedura koje se po potrebi mogu meusobno pozivati bez ikakvih ogranienja. Zbog toga ovakva organizacija OS dobila je naziv velika zbrka(big mess). U ovakvom OS moemo da razlikujemo tri osnovna skupa programa i to: glavni program koji obrauje sistemske zahteve, skup sistemskih procedura koje se pozivaju prilikom sistemskih poziva i skup pomonih procedura koje koriste sistemske porcedure.

2. Slojevita realizacija

Ovde je OS podeljen na hijerahijski organizovane slojeve gde svaki sloj moe da poziva samo funkcije iz niih tj podreenih slojeva. Svaki sloj ima tano odreenu funkciju i upravlja tano odreenim resursima. Tako na primer kod prvog slojevitog OS THE nulti sloj upravlja procesorom, prvi sloj upravlja memorijom, drugi sloj upravlja komunikacijom izmeu razliitih procesa i komandnog interpretera, trei sloj upravlja U/I operacijama a etvrti sloj je zaduen za korisnike programe koje ne interesuju niti upravljanje procesorom niti memorijom niti pak komunikacija izmeu procesa.3. Arhitektura mikrojezgra

Mikrojezgro (microkernel) predstavlja veoma savremen koncept u relizaciji savremenih OS. Osnovna zamiso je da se napravi minimalno jezgro visokih performansi koj e biti jako pouzdano i robusno tj. spremno da odgovori na sve zahteve jednog raunarskog sistema. Sve ostale funkcije jezgra smetaju se u korisniki prostor. Tu se nalaze korisniki moduli koji mogu meusobno da komuniciraju ali samo preko sistema poruka (message passing). Ovakvom strukturom omoguili smo da se takvi OS jednostavno mogu proiriti novim modulima jer se njihovim dodavanjem ne naruava osnovno dobro zatieno jezgro. Pored toga ovakvi OS su lako prenosivi na druge raunarske platforme a to je najvanije postignuta je znatno vea pouzdanost i sigurnost u odnosu na ostale OS drugaije arhitekture.Virtuelne maineOvde je potrebni istai jo jednu softversku strukturu koja je vezana za razvoj OS i koju je lansirao IBM. Radi se o virtuelnoj maini koja ima velike prednosti pri realizaciji novih OS. Struktura virtuelnih maina definisana je na sledei nain: na najniem nivou nalazi se hardver, a iznad njega monitor virtuelnih maina tj. poseban sistem koji obezbeuje niz virtuelnih maina koje predstavljaju tane kopije tog hardvera. Sada se na te kopije tj. virtuelne maine mogu instalirati razliiti operativni sistemi koji izvravaju razliite programe. Sve hardverske operacije koje ti OS alju prema svojim virtuelnim mainama prihvata monitor virtuelnih maina i realizuje ih u skladu sa hardverom ispod sebe. Svaka virtuelna maina realizovana je slojevito i ona tretira realni hardver i realno jezgro kao da je to hardver za operativni sistem koji ona predstavlja. OS stvara iluziju o viestrukim procesima koji se izvravaju na svom virtuelnom procesoru i svojoj virtuelnoj memoriji. Virtuelne maine obezbeuju kompletnu zatitu sistemskih resursa, poto su sve one meusobno izolovane i ne mogu direktno deliti resurse.U sistemskim programima moe da se prepozna jedna grupa programa programski sistem koji obezbeuje automatizaciju procesa razvoja programa. Taj sistem treba da obezbedi programeru razliite komponente u zavisnosti od modela programa koji programer eli da realizuje tj. Slui za efikasno izvoenje razliitih optih funkcija. On treba da obezbedi samo automatizaciju procesa unoenja, korekcije i testiranja programskog koda. U sistemske programe spadaju:- jeziki procesori tj. prevodioci : asembler, makroasembler, kompajleri i interpretatori

- predprocesori i postprocesori predprocesori su sistemski programi koji treba da pripreme na program za rad u nekom okruenju vre pripremu za ulazak u neki drugi program. Suprotno ovome izvravanje nekih operacija nad izlaznim podacima kao to je: formatiranje, izbacivanje nepotrebnih delova kao i optimizacija programskog koda,vre sistemski programi poznati kao postprocesori.- generatori na osnovu opisa neke operacije generiu program koji izvrava tu operaciju. Oni se prave za uske oblasti jer se danas jo uvek nemogue napraviti neki opti generator.

- dibageri (preiavai) pomau programeru u procesu pronalaenja greaka u programskom kodu na asembleru, visokom ili vrlo visokom prog.jeziku. Dibager je usko vezan odreeni programski jezik. Mogu biti apsolutni ili simboliki u zavisnosti od toga kako pristupaju adresama u programu.

- editori omoguavaju unos i auriranje programa i podataka ali raznih drugih dokumenata kao to su: slike, grafikoni, matematike formule i td. Za njih je bitno znati kako je projektant zamislio model editovanog dokumenta: da li je on alfanumeriki, bitmapiran, vektorski ili se sastoji iz vie objekata.- sredstva za testiranje programa pomau kod testiranja programskih reenja kako bi oni mogli da odgovore postavljenim zahtevima.

- linkeri ili povezivai objednjuju nezavisne komonente-module u jednu programsku celinu.

- loaderi ili punioci unose program u operativnu memoriju i pokreu njegovo izvravanje.

Postoje i odreeni usluni programi koji spadaju u programski sistem a koji nisu od fundamentalnog znaaja za razvoj programa tj. Bez njih je mogue napisati i pokrenuti neki program i njihova je uloga samo da pomau programeru i proire mogunosti operativnog sistema. Tu pre svega spadaju programi za sortiranje podataka, za rad sa datotekama, adresarima, za tampanje podataka, konverziju, preglede, arhiviranje i kriptovanje podataka. Takoe se sve vie koriste sistemi za upravljanje bazama podataka, sistemi za komunikaciju, sistemi za raunarsku grafiku kao i multimedijalni sistemi. Ove komponente se takoe ubrajaju u sistemske programe i sve se ee javljaju u proirenim operativnim sistemima.Sve komponente programskog sistema se izvravaju pod nadzorom operativnog sistema. Sa razvojem raunara programski sistem postaje sve sloeniji i sloeniji. Svakom programskom jeziku odgovara jedan program nazvan jeziki procesor koji sve programe napisane na tom jeziku preslikava u oblik koji raunar prepoznaje i direktno ih izvrava ili interpretira. Prevodioci su jeziki procesori koji prihvataju programe napisane na nekom programskom jeziku i generiu funkcionalno ekvivalentne programe na nekom drugom jeziku. Pojam procesor, u softverskom smislu, upotrebljava se da oznai raunarski program koji vri obradu drugih raunarskih programa.Ako se radi o programima, nakom izlaska iz editora kojim je napisan izvorni kod, isti se uvodi u odgovarajui prevodilac-kompajler. Rezultat kompilacije je objektni kod koji jo uvek nije spreman za izvravanje. U procesu nastanka jednog programa mogu se koristiti vie programa koji mogu biti tipa glavnog programa ili potprograma, a mogu se koristiti i sistemske biblioteke. Sve njih povezuje linker ija je osnovna uloga da formira program koji e biti spreman da se izvrava nakon njegovog punjena u operativnu memoriju. Takav program se naziva izvrna jedinica ( bound unit ). Punilac ili loader tu izvrnu verziju programa prebacuje u operativnu memoriju i inicira njegovo izvravanje. Linker i loader se esto mogu nai implementirani kao jedinstvena softverska komponenta.Resursi su hardverska sredstva (procesor, disk, tampa, operativna memorija) ili struktura podataka (semafor, slog u bazi podataka) koji su na raspolaganju procesima, a kojima upravlja operativni sistem. Raunar ima mnogo sredstava i to vie primeraka istog sredstva (na primer tri diska). Sredstvo u jednom trenutku moe koristiti samo jedan proces, a u vremenskom multipleksu vie procesa ukoliko tip resursa to dozvoljava. Resursi mogu biti:

viestruko korieni (reusable) kao to su centralni procesor, operativna memorija, U/I kanali, U/I jedinice, fajlovi, programi i td. jednostruko korieni (consumable) kao to su poruke i signali.

Viekorisniki (multiaccess ili multiuser) operativni sistemi su sistemi koji doputaju simultani pristup raunaru sa dva ili vie terminala.

Multiprogramski sistemi se karakteriu time da vie aktivnih programa mogu istovremeno konkurisati za resurse sistema.

Jednoprocesorski sistem (uniprocesor) je raunarski sistem koji ima samo jedan centralni procesor. ak i kada raunar ima hardverske mogunosti da paralelno izvrava ulaz/izlaz sa glavnim programom (ima U/I procesor ili komunikacioni procesor) u jednom vremenskom intervalu se moe izvravati samo jedan program i na njemu moe raditi samo jedan korisnik pa se takav raunar smatra jednoprocesorskim.

Vieprocesorski sistem (multiprocessor) je raunarski sistem koji ima dva ili vie centralna procesora koji istovremeno uestvuju u reavanju istog problema.Vieprocesorski operativni sistem (multiprocessor operating systems ili multitasking operating systems) su sitemi projektovani tako da mogu konkurentno da izvravaju vie procesa ili zadataka.

Paketna obrada (batch processing) je obrada kod koje se programi izvravaju serijski bez interakcije izmeu korisnika i programa. Programi i podaci se unapred pripremaju na spoljnim medijumima i organizuju u vidu paketa koristei naredbe JCL (Job Control Language).

Obrada u vremenskoj podeli (timesharing) je obrada koja obezbeuje da vie korisnika istovremeno radi na sistemu pri emu mogu koristiti isti ili razliiti program.Doputa se da vei broj korisnika radi konkuretno delei resurse sistema u vremenskom multipleksu.3 as3. Upravljanje procesimaUpravljanje procesima predstavlja osnovni zadatak svih operativnih sistema koji omoguavaju multiuser i multitasking. Prebacivanjem CPU-a sa procesa na proces se poveava produktivnost raunarskog sistema. U ovoj glavi emo se upoznati sa osnovnim principima planiranja procesa i algoritmima planiranja procesa.

Proces je program koji se izvrava tj. program postaje proces u trenutku kada pone da se izvrava. Svaki program mora imati kod i podatke, a svaki proces mora imati i neke sistemske podatke na osnovu kojih se razlikuje od ostalih procesa i na osnovu kojih OS moe da upravlja tim procesom.

Proces je osnovni element koji se koristi kod gradnje OS. Gledano sa strane OS proces je najmanji entitet koji se moe planirati i koji ima svoj kod i podatke. U kodu se mogu ravnopravno nai mainske naredbe i sistemski pozivi. Proces ima neka svoja obeleja tj. atribute i to su: prioritet, pravila pristupa (ko moe pristupiti procesu), identifikacija ( podrazumeva adresu programa koji se izvrava a predstavlja proces).

Sve procese u OS moemo podeliti na sinhrone i asinhrone. Bez obzira na tip procesa, svi procesi moraju meusobno da sarauju pa samim tim mora da postoji odreena sinhronizacija meu njima. Ako bi mogli da u jednom trenutku zamrznemo stanje u OS videli bi stotine prisutnih procesa koji upravljaju razliitim resursima i nalaze se u razliitim stanjima.Meutim, tu ne postoji nikakva anarhija, ve se sve to odvija po odreenom protokolu koji je definisao da se korisniku omogui da to efikasnije izvri ono to eli i da postigne to optimalnije iskorienje svih raspoloivih resursa. Sve su ovo opreni zahtevi koji su prouzrokovali da OS mogu da rade u razliitim reimima rada u zavisnosti od toga kome treba dati vei prioritet: oprimalnom usluivanju korisnika ili oprimalnom iskoriavanju resursa. Poto program postaje proces tek kada pone da se izvrava3.1 Koncept multiprogramiranja

Najvaniji koncept u modernim operativnim sistemima je multiporgramiranje. Kada u memoriji postoji vie programa istovremeno, tada oni mogu da dele CPU. Ovim se poveava opta efikasnost sistema i obavlja vie poslova za krae vreme. Ideja multiprogramiranja je relativno prosta. Jedan posao se izvrava sve do momenta kada mu zatreba neka U/I aktivnost kada eka da se njegov U/I zahtev zadovolji. Umesto da CPU bude neuposlen tokom ispunjenja U/I zahteva, operativni sistem prenosi upravljanje nad CPU-om na drugi posao.

Koristi od multiprogramiranja odslikavaju se u poveanoj iskorienosti CPU-a i veoj ukupnoj propusnoj moiposlova. Propusna mo je iznos izvrenog posla u datom vremenskom intervalu.

3.2 Koncept planiranja poslova

Planiranje je osnovna funkcija operativnog sistema, jer se skoro svi raunarski resursi planiraju pre upotrebe. CPU je jedan od osnovnih raunarskih resursa, pa je njegovo planiranje centralno u projektovanju operativnog sistema.

3.2.1 Osnovni koncepti

CPU izvrava veliki broj poslova ili zadataka. Dok je njegova glavna aktivnost izvravanje korisnikih programa, CPU se takoe koristi i za druge sistemske aktivnosti. Svaka akcija raunarskog sistema se inicira od strane CPU-a. CPU mora da odgovori na trapove, programske zahteve i U/I prekide. Stalni problem kod operativnih sistema je kako nazivati sve aktivnosti CPU-a. Paketni sistemi izvrvaju poslove dok sistemi sa deljenjem procesorskog vremena imaju korisnike programe. ^ak i kod jednokorisnikih sistema korisnik moe biti u stanju da izvrava vie programa istovremeno: jedan interaktivni i vie paketnih programa. Kad se izvrava samo jedan program, operativni sistem moe da obavlja sopstvene interno programirane aktivnosti. Po mnogo emu su sve ove aktivnosti sline pa ih zovemo jednim zajednikim imenom: procesi. Proces je program koji se izvrava. Uspenost planiranja poslova zasniva se na osobini procesa da njihovo izvrenje predstavlja ciklus CPU aktivnosti i U/I aktivnosti. Proces neprestano prelazi iz jednog u drugo od ovih stanja (cpu burst i I/O burst). Trajanja CPU aktivnosti su merena, i mada se prilino razlikuju od procesa do procesa i od raunara do raunara, ona pokazuju hipereksponencijalnu krivu frekvencije (slika 3.1). Postoji veliki broj veoma kratkih CPU aktivnosti i mali broj veoma dugih.

frekvencija

trajanje Sl. 3.1. Histogram trajanja CPU aktivnosti.

Tokom svog izvrenja program menja stanje. Stanje procesa definisano je trenutnom aktivnou. Izvrenje procesa je alternativna sekvenca CPU i U/I aktivnosti, koja poinje i zavrava se CPU aktivnou. Svaki od procesa moe biti u jednom od sledeih stanja: novi, aktivan, eka ili zaustavljen (slika 3.2).

Kako vie procesa moe da deli CPU, to aktivni proces moe da eka da mu se dodeli CPU ili da se na njemu izvrava. Stanje kada proces eka da mu se dodeli CPU naziva se spreman, a kada mu se dodeli CPU onda je on u stanju izvravanja.

pointer Stanje procesa

Broj procesa

Programski broja

Registri

Memorijske granice

Lista otvorenih fajlova

Broj procesa

3.3. Upravljaki blok procesa (Process control block)Svaki proces je u operativnom sistemu predstavljen njegovim upravljakim blokom procesa (ponekad se zove i upravljaki blok zadatka ili posla). PCB je sadri:

Stanje procesa.

Sadraj programskog brojaa.

Sadraj registara CPU-a.

Informacije o upravljanju memorijom (bazni i granini registri memorijske oblasti ili stranina tabela).

Informacije o nalozima (iznos CPU vremena i stvarnog vremena, vremenska ogranienja, broj naloga, broj procesa, itd.).

Informacije o stanju U/I (U/I zahtevi, U/I ureaji dodeljeni procesu, lista otvorenih datoteka, i dr.)

Informacije o planiranju CPU-a (prioritet procesa, pointeri na redove procesa i dr.)

PCB se mora smestiti u monitorsku memoriju. Ovom memorijom se moe upravljati na nekoliko naina. Najjednostavniji nain je da se unapred odredi maksimalni broj procesa i statiki dodeli dovoljno prostora za svaki PCB. Dinamika dodela memorije je obino bolja, to se tie fleksibilnosti i boljeg iskorienja memorije, ali zahteva sloenije algoritme nosei i opasnosti od moguih greaka od pogrenog dodeljivanja memorije.

3.2.2 Redovi procesa

Cilj multiprogramiranja je da se u svakom trenutku neki proces izvrava kako bi se maksimizirala iskorienost CPU-a. Kod jednoprocesorskih maina najvie jedan proces se u jednom trenutku moe izvravati. Ako u sistemu postoji vie procesa, svi ostali e morati da ekaju dok se procesor ne oslobodi i dodeli nekom od njih. Spremni procesi dre se u redovima spremnih procesa. U optem sluaju, to je povezana lista iji su elementi PCB-ovi procesa u redu. Redovi spremnih procesa ne moraju biti nuno FIFO strukture. Osim redova spremnih procesa, u sistemu postoje i redovi ureaja u kojima procesi ekaju da im se dodeli neki U/I ureaj. Opta ema planiranja poslova je u obliku dijagrama redova kao na slici 3.4.

Planeri

Operativni sistem ima vie planera (schedulers). Dva su osnovna: dugoroni i kratkoroni. Dugoroni planer (ili planer poslova) odreuje koji e se poslovi propustiti u sistem radi obrade. U paketnim sistemima ima vie poslova koji su u sistemu nego onih koji mogu da budu izvreni. Poslovi koji ekaju kopiraju se na disk. Dugoroni planer bira poslove iz pula poslova i puni ih u memoriju radi izvrenja. Kratkoroni planer (planer CPU-a) bira jedan od tih poslova koji su u memoriji i spremni su za izvrenje i dodeljuje mu procesor.

Osnovna razlika ova dva planera je u frekvenciji njihovog izvrenja. Kratkoroni planer vrlo esto bira proces koji e se izvravati i zato mora da bude veoma brz. Dugoroni planer se izvrava znatno ree. On upravlja stepenom multiprogramiranja (brojem procesa u memoriji). Ukoliko je taj stepen stabilan, srednja brzina dolaska poslova u sistem je jednaka srednjoj brzini izlaska iz sistema. Prema tome, dugoroni planer se aktivira samo kada neki posao naputa sistem. Zbog dugog intervala izmeu dva izvrenja, dugoroni planer ima na raspolaganju due vreme za izbor posla. Takoe je bitno da dugoroni planer taj izbor izvri paljivo i da napravi dobru meavinu poslova orijentisanih ka CPU-u i onih orijentisanih ka U/I aktivnostima.

U nekim sistemima dugoroni planer moe i da ne postoji ili moe da bude minimalan. Na primer, sistemi sa deljenjem procesorskog vremena esto nemaju dugoroni planer, ve se svaki novi proces alje u memoriju kratkoronom planeru. Stabilnost ovih sistema zavisi ili od fizikih ogranienja ili od razumnog ponaanja korisnika.

Neki sistemi, naroito oni sa virtuelnom memorijom ili sa deljenjem procesorskog vremena, mogu da imaju jo jedan, srednji nivo planiranja. Taj srednjoroniplanerje prikazan na slici 3.6

Kljuna ideja je da je ponekad korisnije ukloniti proces iz memorije kako bi se smanjio stepen multiprogramiranja. Posle izvesnog vremena procesi se mogu ponovo vratiti u memoriju. Ova ema naziva se swapping(prebacivanje), a izvodi se sa ciljem da se pobolja meavina poslova ili da bi se oslobodila memorija u sluaju zaguenja.

Jo jedna komponenta je ukljuena u funkciju planiranja i naziva se dispeer. Dispeer je modul koji u stvari daje upravljenje nad CPU-om procesu koji je izabran od strane kratkoronog planera. Ova funkcija obuhvata punjenje registara procesa, prebacivanje u korisniki reim rada i skok na odgovarajuu lokaciju u korisnikom programu kako bi se on nastavio. Ova komponenta mora da bude to je mogue bra.

3.3 Algoritmi planiranja

Planeri CPU-a odluuju o tome kojem od spremnih procesa treba dodeliti CPU. Postoji vie razliitih kriterijuma planiranja.

3.3.1 Kriterijumi performansiRazliiti algoritmi imaju razliite osobine i mogu da favorizuju jednu vrstu procesa u odnosu na druge. Prilikom izbora odreenog algoritma za odreenu situaciju moraju se imati u vidu osobine algoritama. Postoji vie kriterijuma na osnovu kojih se mogu porediti algoritmi planiranja. Ti kriterijumi su sledei:

Iskorienost CPU-a. Kako je CPU veoma skup ureaj, nuno je drati ga stalno uposlenim. Iskorienost CPU-a moe da varira od 0% do 100%. U realnim sistemima ona se obino kree od 40% do 90%.

Propusna mo. Ako je CPU zauzet, onda on obavlja neki posao. Propusna mo je mera koja predstavlja broj poslova koji se mogu zavriti u jedinici vremena. Za duge poslove ona moe da iznosi jedan posao po satu, dok za kratke poslove propusna mo moe da bude desetak poslova u sekundi.

Vreme obilaska. Ovo vreme je vreme koje protekne od momenta prijavljivanja posla do njegovog zavretka i predstavlja sumu vremena koje posao provede u ekanju da ue u memoriju, ekanju u redu spremnih procesa, vremena tokom kojeg se izvravao na CPU-u i vremena tokom kojeg je obavljao U/I operacije.

Vreme ekanja. Ovo je ukupno vreme koje proces provede u redu ekanja spremnih procesa.

Vreme odziva. U interaktivnim sistemima vreme obilaska nije ba najbolji kriterijum, jer proces esto na poetku proizvede neki izlaz i nastavlja svoje izvrenje izraunavajui nove rezultate dok se korisniku prikazuju prethodni rezultati. Druga mera, koja se naziva vreme odziva, predstavlja vreme koje protekne od prijavljivanja posla dok se ne proizvede prvi izlaz programa, ne raunajui vreme potrebno da sa taj izlaz zaista i prikae na nekom izlaznom ureaju.

Kada izaberemo kriterijum na osnovu kojeg vrimo poreenje algoritama, obino elimo da dobijemo optimalne performanse, maksimizirajui iskorienost CPU-a i propusnu mo a minimizirajui vremena obilaska, ekanja i odziva. U najveem broju sluajeva optimiziraju se srednje vredosti, ali e nekada biti potrebno da se optimiziraju minimalne, odnosno maksimalne vrednosti ovih mera.

3.3.2 FCFS algoritam

Najednostavniji algoritam planiranja poslova je FCFS (First-Come-First-Served). Procesor se najpre dodeljuje onom procesu koji ga je prvi zahtevao. Implementacija ovog algoritma se lako vri korienjem FIFO redova. Kada se proces ubacuje u red spremnih procesa njegov PCB se stavlja na kraj reda. Kada se procesor oslobodi on se dodeljuje prvom procesu iz reda. Meutim, performanse ovog algoritma su veoma slabe. Posmatrajmo sledea tri posla prikazana u tabeli. Posao Vreme izvravanja

1 24

2 3

3 3

Ako su ovi poslovi pristigli u redosledu navoenja i opsluuju se na osnovu FCFS algoritma, rezultat ovoga vidimo u sledeoj Gantovoj karti.

Vreme obilaska za prvi posao je 24, za drugi 27 a za trei 30. Srednje vreme obilaska je 27. Ako pretpostavimo da su poslovi pristigli u redosledu 2, 3, 1, dobiemo sledeu Gantovu kartu.

Sada je srednje vreme obilaska jednako 13, to predstavlja znaajno smanjenje. Srednje vreme obilaska za ovaj algoritam u optem sluaju nije minimalno mogue, a moe znaajno da varira u zavisnosti od konkretnog sluaja.

Pored ovoga, posmatrajmo performanse FCFS algoritma u dinamikoj situaciji. Pretpostavimo da imamo jedan posao orijentisan CPU aktivnostima i vie poslova orijentisanih U/I aktivnostima. Mogu je sledei scenario. Posao orijentisan CPU aktivnostima dobie CPU i drae ga doke se ne izvri. Za to vreme, svi ostali poslovi e zavriti njihove U/I aktivnosti i bie u redu spremnih procesa. Dok ekaju u redu, U/I ureaju su besposleni. Kada se posao koji je drao CPU izvri i pree na U/I aktivnost, ostali poslovi koji imaju kratke periode CPU aktivnosti a duge periode U/I aktivnosti, e se brzo izvriti i vratiti U/I aktivnostima. Sada je CPU besposlen. Posao orijentisan CPU aktivnostima se vraa u red spremnih procesa i dodeljuje mu se procesor i pria se ponavlja. Ova situacija, gde svi procesi ekaju da jedan dugaak proces oslobodi CPU, naziva se efekat konvoja. Rezultat tog efekta je slaba iskorienost i CPU-a i U/I ureaja.

3.3.3 SJF algoritam

Razliit pristup planiranju poslova prisutan je kod SJF (Shortest-Job-First) algoritma. Kod ovog algoritma se svakom poslu pridruuje i podatak o duini njegovog sledeeg CPU ciklusa. Kada je procesor slobodan on se dodeljuje onom poslu kod koga je ta duina najmanja. Ukoliko postoje dva ili vie poslova iste duine, kao sekundarni kriterijum koristi se FCFS. Razmotrimo sledei skup poslova prikazan u tabeli.

Posao Vreme izvravanja

1 6

2 3

3 8

4 7

Upotreba SJF algoritma daje sledeu Gantovu kartu.

Srednje vreme obilaska koje se ovde dobija je 13. Ovaj algoritam je dokazano optimalan, jer daje minimalno srednje vreme ekanja za neki skup poslova. U dokazu se pokazuje da premetanje kraeg posla pre dueg smanjuje vreme ekanja kraeg posla u veoj meri nego to poveava vreme ekanja dueg posla (vidi sliku 3.7). Prema tome, smanjuje se srednje vreme ekanja.

Sl. 3.7. Dokaz da je SJF algoritma optimalan.

Problem kod ovog algoritma je upravo u odreivanju duine sledeeg zahteva za CPU-om. Kod dugoronog planiranja poslova u paketnim sistemima moemo da koristimo granicu vremena rezervisanog za posao. Tako je korisnik motivisan da tano proceni trajanje posla, jer to je manja granica koju zada to e se njegov posao bre izvriti. Ovaj algoritam se najee koristi kod dugoronog planiranja. Na alost, i pored optimalnosti, ne moe se primeniti na kratkorono planiranje CPU-a. Nema naina da se odredi trajanje sledee CPU aktivnosti. Jedan pristup je da se pokua sa aproksimacijom ovog algoritma. Iako ne moemo da znamo trajanje sledee CPU aktivnosti, moemo da predvidimo njenu duinu.

Obino se za ovo predvianje koristi eksponencijalna sredina prethodnih aktivnosti. Ako je tn trajanje n-te CPU aktivnosti a n+1 predvieno trajanje naredne, onda je

(1)

n+1 =tn+(1-) n ,01Vrednost t sadri najskoriju poznatu informaciju; n sadri davnu prolost u sebi. Parametar upravlja relativnim teinama nedavne i davne prolosti u predvianju. Ako je = 0, tada je n*1= n, i nedavna prolost nema efekta. Za vrednost parametra = 1, n*1= tn, pa je samo najskorija CPU aktivnost od vanosti. Najee je = 1/2, tako da i nedavna i dalja prolost imaju podjednaku teinu.

Da bi razumeli eksponencijalnu sredinu razviemo prethodnu formulu zamenjujui vrednosti za n.

n+1 =tn + (1-)tn1 +K+(1-)j tnj +K

Kako su i i (1-) manji od 1, to je svaki sledei sabirak manje teine od prethodnog.

3.3.4 Algoritam sa prioritetima

SJF algoritam je specijalni sluaj optijeg algoritma sa prioritetima. Prioritet se pridruuje svakom poslu, a CPU se dodeljuje poslu sa najviim prioritetom. Poslovi sa istim prioritetom se opsluuju po FCFS algoritmu. SJF je u stvari algoritam sa prioritetima gde je prioritet p jednak recipronoj vrednosti predvienog trajanja CPU aktivosti, tj. p =1/. Prioriteti se mogu definisati interno ili eksterno. Interno definisani prioriteti koriste neku merljivu veliinu za izraunavanje prioriteta procesa. Na primer, vremenske granice, memorijski zahtevi, broj otvorenih fajlova, kao i odnos srednjeg trajanja U/I aktivnosti i srednjeg trajanja CPU aktivnosti su neke od veliina koje se mogu koristiti za izraunavanje prioriteta. Eksterni prioriteti postavljaju se na osnovu kriterijuma koji su spoljanji u odnosu na operativni sistem, kao to su vrsta i iznos plaene naknade za korienje raunara, vanost naruioca posla, kao i slini faktori, uglavnom politike prirode. Glavni problem sa ovim algoritmom je pojava umiranjaod gladi. Moe se desiti da neki proces sa niskim prioritetom, zbog estog pristizanja poslova vieg prioriteta u sistem, nikada ne dobije priliku da se izvrava. Mogue je da se takvi procesi izvre tek kada se smanji optereenost sistema (na primer, tokom vikenda), ili da im se ne dodeli CPU sve do prestanka rada sistema. Postoje glasine da je 1973. godine na MIT-u, kada je raunar IBM 7094 trebao da bude zamenjen, pronaen posao niskog prioriteta koji je prijavljen na sistem 1967. godine i jo uvek se nije izvrio.

Drugo reenje ovog problema je starenje.Tehnika starenja predvia da se postepeno poveava prioritet onih poslova koji dugo ekaju u sistemu.

3.3.5 Algoritmi sa prekidanjmDo sada opisani algoritmi su algoritmi bez prekidanja. Kada se kod takvih algoritama jednom dodeli procesor nekom procesu, onda ga on zadrava sve dok se ne izvri do kraja ili dok ne obavi U/I zahtev. FCFS algoritam je po svojoj prirodi algoritam bez prekidanja, ali se druga dva mogu modifikovati da budu algoritmi sa prekidanjem. SJF algoritam moe biti realizovan i bez prekidanja i sa prekidanjem. Dilema nastaje kada novi posao stie u red spremnih procesa dok se prethodni posao izvrava. Novi posao moe da ima krai CPU ciklus nego to je potrebno za dovretak posla kome je ve dodeljen procesor. SJF sa prekidanjem e prekinuti posao koji se trenutno izvrava, dok SJF bez prekidanja dozvoljava da se dovri tekui posao. Varijanta SJF algoritma sa prekidanjem naziva se SRTF (Shortest-Remainig-Time-First). Planiranje procesa na osnovu prioriteta takoe moe biti sa i bez prekidanja. Kada posao pristie u red spremnih procesa njegov prioritet se poredi sa prioritetom posla koji se izvrava. Ako je prioritet novog posla vii, tekui posao e se prekinuti i procesor dodeliti novom poslu. U varijanti bez prekidanja novi proces ostaje u redu spremnih procesa do zavretka tekueg posla.

Algoritmi bez prekidanja (naroito FCFS) nisu pogodni za sisteme sa deljenjem procesorskog vremena, gde je neophodno da svaki korisnik dobije deo procresorskog vremena u pravilnim intervalima.

3.3.6 Kruni algoritam

Kruni algoritam (round-robin) je algoritam projektovan specijalno za sisteme sa deljenjem procesorskog vremena. Definie se mala jednica vremena (kvantum vremena) koja se kree izmeu 10 i 100 milisekundi. Red spremnih procesa realizovan je kao kruni red. Planer procesa svakom procesu iz reda dodeljuje CPU na korienje tokom intervala koji je manji ili jednak kvantumu vremena. Kada se ovaj algoritma implementira, red spremnih procesa se realizuje kao FIFO red procesa. Novi proces se dodaje na kraj reda. Planer procesa bira prvi proces iz reda, postavlja tajmer na vreme od jednog kvantuma i dodeljuje CPU procesu. Mogue je da se desi jedna od dve stvari. Proces moe da ima CPU ciklus krai od vremenskog kvantuma. U tom sluaju on sam oslobaa CPU izdajui U/I zahtev ili terminiranjem. Procesor se zatim dodeljuje narednom poslu iz reda spremnih procesa. U drugom sluaju, tajmer e, po isteku kvantuma vremena, da izazove prekid. Registri prekinutog procesa se pamte u njegovom PCB-u, i proces stavlja na kraj reda. Iza toga, planer procesa bira naredni proces iz reda spremnih procesa. Performanse ovog algoritma veoma zavise od kvantuma vremena. Ako taj kvantum vremena tei beskonanosti, ponaanje ovog algoritma tei ponaanju FCFS algoritma. Ukoliko je vremenski kvantum veoma mali (na primer 1 mikrosekunda), round-robin se naziva deljenje procesorai teoretski izgleda da svaki od nprocesa u redu ima sopstveni procesor koji je nputa sporiji od stvarnog procesora. Ovakvo reenje primenjeno je hardverski kod raunara CDC 6600 za implementaciju deset perifernih procesora sa jednom ALU i upravljakom jedinicom i deset skupova registara. Hardver izvrava jednu instrukciju za jedan skup registara, zatim ide na sledei. Medjutim, sa stanovita softvera postoje drugi problemi. Na kraju svakog kvantuma vremena tajmer generie prekid. Prebacivanje procesora sa jednog na drugi proces zahteva pamenje sadraja svih registara starog procesa i punjenje registara za novi proces. Ovaj zadatak se naziva prebacivanje konteksta. Prebacivanje konteksta je sa stanovita izvravanja procesa potpuno nekoristan posao. Trajanje prebacivanja konteksta zavisi od brzine memorije, broja registara i postojanja specijalnih instrukcija. Poeljno je da je kvantum vremena znatno dui od vremena potrebnog za prebacivanje konteksta. Vreme obilaska takoe zavisi od kvantuma vremena. Ono je krae ako veina poslova svoju CPU aktivnost zavrava za jedan kvantum vremena. Sve nas ovo navodi da je bolje imati dui kvantum vremena, ali to onda konvergira ka slabom FCFC algoritmu. U praksi se najee tei da kvantum vremena bude u 80% sluajeva bude dui od trajanja CPU aktivnosti.

3.3.7 Vienivovski redovi

Ova klasa algoritama planiranja kreirana je za situacije kada se poslovi mogu lako klasifikovati u razliite grupe. Na primer, uobiajena je podela na poslove u prvom planu (interaktivni) i poslove u pozadini (paketni). Ova dva tipa poslova imaju sasvim razliite zahteve u pogledu vremena odziva i mogu da imaju razliite algoritme planiranja, a uz to interaktivni poslovi mogu imati eksterno dodeljen vii prioritet od poslova u pozadini. Kod ovog algoritma je red spremnih procesa podeljen u vie redova. Poslovi koji pristiu svrstavaju se u odgovarajui red. Svaki red ima sopstveni algoritam planiranja, a izmeu samih redova postoji fiksiran prioritet. Na taj nain posao koji je prvi u svom redu moe dobiti procesor na korienje iskljuivo ako je red vieg prioriteta prazan.

3.3.8 Vienivovski redovi sa povratnom spregom

Normalno se kod vienivovskih redova ekanja poslovi dodeljuju redovima po njihovom ulasku u sistem. Poslovi ne mogu prelaziti iz reda u red. Kod vienivovskih redova sa povratnom spregom dozvoljeno je kretanje poslova izmeu redova. Ideja je da se izdvoje poslovi sa razliitim karakteristikama CPU aktivnosti. Ako posao koristi previe CPU vremena premeta se u red sa niim prioritetom. Ovaj algoritam ostavlja poslove orijentisane U/I aktivnostima i interaktivne poslove u redovima vieg prioriteta (vidi sliku 3.8).

Asinhroni Konkurentni Procesi

Proces

Proces je jedna od osnovnih stvari u OS. Postoje neke ne sasvim precizne definicije procesa. Proces je program u izvrenju, je jedna od njih. Postoji vie bitnih stvari koje su neophodne za izvrenje procesa. Stanje brojaa naredbi je bitan deo. Za proces je bitno koja je sledea instrukcija, a one koje su se izvrile vie nisu bitne. Ceo rad do tada je akumuliran negde u memoriji. Stanje varijabli je drugi vaan deo. Kada se procesu dodeli memorijska lokacija ona ne treba da se menja do kraja izvravanja tog procesa. Za pristup podacima potrebno je uvati poetnu i krajnju memorijsku zonu rezultata, a takoe i stanje registara. Posebno je vaan registar flag-ova. Tu se uvaju informacije o rezultatu predhodnih operacija(da li je rezultat negativan, nula, da li je dolo do prekoraenja...). Zbog toga je vano sauvati flag-ove, a i stanje steka je neophodno uvati. CPU ne moe da radi bez steka. To je glavni hardverski dodatak CPU. Pristup steku se vri po LIFO sistemu. Stek je neophodan za realizaciju sistema prekida, kao i za prelazak na podprogram. Takoe se moe koristiti za prenos argumenata u podprogram. Obino postoji jedan sistemski stek koji se inicijalizuje po ukljuenju raunara u strujno kolo i koristi ga iskljuivo sistem, a njegov sadraj ne sme biti menjan od strane korisnika. Postoji jo jedan, manje slubeni, stek preko kojeg se obino prenose parametri u podprograme. U sistemima moe postojati jo stekova koji se obino zovu pomoni, a i sam korisnik moe da definie svoj stek. Za ispravano korienje steka neophodno je uvanje pointera na stek. Svi ovi podaci se koriste za informacije o stanju procesa.

Kod MP OS vie programa se izvrava konkurentno, a ne paralelno to je mogue jedino na multi procesorskim sistemima. Programi se izvravaju malo po malo. Izvrava se deo jednog programa pa drugog pa sledeeg i tako u krug. Kako je vreme prelaska sa jednog na drugi program veoma malo, gledano spolja programi se izvravaju paralelno. Procesi se mogu nalaziti u tri stanja. Izvrnom, spremnom i blokiranom. ivot jednog procesa prolazi kroz te tri faze. Prelaz iz jednog u drugo stanje kontrolie kernel. Proces prelazi u blokirano stanje kada izda I/O zahtev. Program koji kontrolie rad proces izvrava se na raznim nivoima. Na najniem nivou samo dodeljuje vreme procesima. Na viem nivou se bavi dodeljivanjem memorije, koliko procesa moe biti u memoriji... Tipian program radi dok ne doe do I/O zahteva, a onda sam sebe blokira. Kada zavri I/O prelazi u spremno stanje.

Postoje razni termini za procese. U BATCH sistemima zvali su se JOB. U TS sistemima termin je bio TASK. Danas je popularan termin TRED, to je ime za pojedine faze jednog istog posla. CHILD procesi su takoe TRED-ovi.

Suspendovanje procesa vri isti deo kernela koji vodi brigu o dodeli memorije procesima. Kada ima suvie procesa u memoriji ovaj program suspenduje jedan ili vie procesa na odreeni vremenski interval dok se sistem ne odgui. Ovo se vri jer ukoliko ima previe procesa u memoriji za svaki od tih procesa u memoriji ima malo koda to dovodi do zaguenja sistema jer CPU po obradi instrukcija iz memorije mora da eka da se nove uitaju sa diska. Proces iz suspendovanog stanja se po pravilu vraa u spremno stanje. Teoretski je mogue da proces pree iz suspendovanog u izvrno stanje ali se to ne radi u praksi, isto vai i za obrnut sluaj. Blokirani procesi mogu biti suspendovani, ali korak nazad nema smisla. Proces koji je blokiran prvo obavi I/O, a zatim prelazi u suspendovano stanje. Programu koji se brine o svemu ovome omoguavaju rad sistem prekida i stek.

Sistem prekida je hardverski sistem na CPU. Njegov rad je slian procesu prelaska na podprogram, ali se u nekim stvarima razlikuje. SP radi slino programu koji treba da se izvri. Izvri se i vrati se na memorijsku lokaciju odakle je pozvan. Razlika u radu je u tome to su podprogrami kontrolisani od strane programera, i tano se zna kada e biti prelaz na podprogram. SP su asinhroni signali. Nisu kontrolisani, ne zna se kada e uslediti zahtev za SP.

SP je osnovni mehanizam CPU-a koji omoguava MP. Sutinska razlika imeu SP-a i prelaska na podprogram je u nainu programiranja. Programi koji koriste SP su nezgodni za testiranje i dokazivanje da su korektni. Najvei problem je u tome to ovek misli sekvencijalno. Logika pri pisanju paralelnih i asinhronih programa se razlikuje od logike koju ovek koristi pri razmiljanju. Dokazivanje korektnosti asinhronih programa se vri pomou kontra primera. Ranih 70-ih svi mikroprocesori imaj ugraen SP. Obino svaki CPU ima vie SP. Glavni je no mascable, hardverski SP koji ne moe da se iskljui. Koristi se za sluajve pada sistema(npr. Nestanak struje). Pored ovog, postoji obian interupt koji se vezuje na neki pobuiva i koji moe da se iskljui.

Postoje dva tipa sistema prekida. Potpuni i brzi. Prilikom potpunog prekida na stek se prenose svi podaci. Adresa povratka, sadraj svih registara, flag-ovi i moda jo neto ako je potrebno. Ovo je uobiajen nain prekida. Nekada je potrebno prekid realizovati brzo. Ukoliko se po prekidu obavlja neki mali posao za koji se zna tano ta radi gubljenje vremena je prenoenje na stek svih podataka izuzev adrese povratka. U tom sluaju programer moda da vodi rauna ta se radi u toku prekida i da pazi da se sauva sadraj svih registara. Ovo je korisno za prekide koji se generiu prilikom uitavanja karaktera sa tastature. Onda se na steku uva samo sadraj registra u koji e se uitati karakter koji stie sa tastature.

Asinhroni Programi

Prilikom pisanja programa na papiru uobiajeno je da se korisnti neki pseudo programski jezik. Slubene rei PARBEGIN i PAREND se koriste za pisanje programskih delova koji se izvravaju asinhrono. Prilikom pisanja asinhronih programa imamo vie problema.

Prvi problem je komunikacija dva raunara koji nemaju zajedniki sat, a jedina veza im je jedna ica. CPU ovih raunara icu posmatra kao jedan jedno-bitni registar. To je zato to CPU svemu pristupa na uniformni nain(npr. sve posmatra kao fajl). Sinhroni nain slanja izmeu ova dva raunara bi bio u praksi problem ako bi jedan slao veliki niz 0 ili 1. Problem je jer pri velikim brzinama nee oba sata isto raditi tako da e doi do greke. Tri ice(jedna za podatke i dve kontrolne) su minimum za asinhronu razmenu podataka. Problem je napraviti programe za slanje i primanje.

Poiljalac

Primalac

X = Novi;

while(A == 0);

A = 1;

Novi = X;

while(B == 0);

B = 1;

A = 0;

while(A == 1);

while(B == 1);

B = 0;

Ovo je jedini nain za asinhrono slanje podataka izmeu raunara pomou tri ice. X je ica kojom se alju bitovi, A kontrolna od poiljaoca ka primaocu, B kontrolna obrnuto. Program na poiljaocu radi tako to poalje jedan bit i javi drugom da je poslao, a zatim eka da drugi primi bit. Kada drugi primi bit, prvi eka da drugi bude spreman da prihvati sledei bit pa tek onda alje i tako u krug. Drugi prvo eka da prvi poalje, zatim primi i eka da mu prvi javi da je video da je primljen bit. Onda drugi javlja da je spreman da prihvati sledei bit.

U kritinoj sekciji u jednom trentuku moe da bude samo jedna procedura. Da procedura u kritinoj sekciji ne bi bila prekinuta mora se onemoguiti prekid. Reenje sa iskljuivanjem interapta se ne primenjuje esto, jer vie softverskih delova u dananjim raunarima zavisi od sistema prekida. Kao to su OS, ke memorija, kontrola tastature... Najvei problem ovde je taj to nije dobro definisano ta je kritina sekcija. Iskljuivanje interapta se primenjuje u situacijama kad je u kritinoj sekciji mali broj instrukcija. Optije reenje treba da zadovolji nekoliko uslova.

Uzajamna iskljuivost, ne mogu dva procesa u isto vreme da budu u kritinoj sekciji.

Uslov progresa, proces koji nije u kritinoj sekciji i ne eli da ue u nju ne treba da ometa druge procese da uu u nju.

Uslov konanog ekanja, mora da postoji granica koliko jedan proces moe da eka.

Ranije se za ovo trailo isto softversko reenje. Ono moe na bilo kojoj platformi da se implementira. Kasnije se okree hardverskim reenjima koja se sastoje iz niza nedeljivih manskih instrukcija.

Softverska Reenja

Postoji vie ovakvih reenja. Neka je u glavnom programu deklarisana promenljiva naredu tipa integer koja se postavi na vrednost 1. Onda dva paralelna procesa imaju listing.

Proces 1

Proces 2

.

.

.

.

while(naredu == 2);

while(naredu == 1);

// Kritina sekcija

// Kritina sekcija

naredu = 2;

naredu = 1;

Ovo reenje ispunjava samo uslov uzajamne iskljuivosti, zove se alternirajui svi. Ovde, ukoliko jedan proces ne eli da ue u krtinu sekciju on onda blokira drugi. Ovo reenje je dobro za problem sinhronizacije.

Druga ideja je da se uvede promenljiva moze, tipa boolean.

Proces 1

Proces 2

.

.

.

.

while(moze == 0);

while(moze == 0);

moze = 0;

moze = 0;

// Kritina sekcija

// Kritina sekcija

moze = 1;

moze = 1;

Kod ovog reenja se javlja problem da nije zadovoljen uslov uzajamne iskljuivosti. Jedan proces vidi da je ulaz u kritinu sekciju slobodan, ali nije stigao da sprei drugi proces da takoe ue u kritinu sekciju. Zato se uvode dve promenljive hoce1 i hoce2 umesto moze, istog tipa.

Proces 1

Proces 2

.

.

.

.

hoce1 = 1;

hoce2 = 1;

while(hoce2);

while(hoce1);

// Kritina sekcija

// Kritina sekcija

hoce1 = 0;

hoce2 = 0;

Kod ovog reenja se javlja problem ukoliko je jedan proces mnogo bri od drugog. Tada taj proces moe ponovo ui u kritinu sekciju jer je drugi toliko sporiji da nije stigao da ue. Ispunjen je samo prvi uslov. Ovde dolazi do uzajamnog zakljuavanja.

1965. se pojavljuje Dekerov algoritam za dva procesa. U praksi se obino radi sa vie procesa.

Proces 1

Proces 2

.

.

.

.

hoce1 = 1;

hoce2 = 1;

while(hoce2)

while(hoce1)

if(naredu == 2) {

if(naredu == 1) {

hoce1 = 0;

hoce2 = 0;

while(naredu == 2);

while(naredu == 1);

hoce1 = 1;

hoce2 = 1;

}

}

// Kritina sekcija

// Kritina sekcija

naredu = 2;

naredu = 1;

hoce1 = 0;

hoce2 = 0;

81. se pojavljuje Pitersonov algoritam koji radi slino Dekerovom. U glavnom programu se deklariu dve globalne promenljive tipa boolean i jedna tipa integer i njima se dodeli nula. Paralelni proces ima sledei listing.

Proces 1

Proces 2

.

.

.

.

hoce1 = 1;

hoce2 = 1;

naredu = 2;

naredu = 1;

while(hoce2 && naredu == 2);

while(hoce2 && naredu == 2);

// Kritina sekcija

// Kritina sekcija

hoce1 = 0;

hoce2 = 0;

Objanjenje rada ovog algoritma za razliku od Dekerovog je veoma jednostavno. Da bi se ulo u kritinu sekciju, najavim da hou, dam prednost drugom i ekam dok ovaj hoe i ima prednost. Ovde je obezbeeno da procesi naizmenino ulaze u kritinu sekciju bez obzira na njihovu brzinu. Mana ovog algoritma je to je ovo reenje samo za dva procesa. Takoe, ovo je isto softversko reenje pa je samim tim sporije.

Hardverska Reenja

Ideja za hardverska reenja je da se naprave mainske instrukcije koje su u stanju da rade dve stvari istovremeno bez mogunosti prekida. Te instrukcije su. TAS - Test And Set. FAA - Fetch And Add. SWAP - zameni mesta.

TAS operie sa dve promenljive. Sintaksa je A = TAS(B) prebacuje B u A i 1 u B. Promenljive A i B moraju biti boolean tipa.

FAA operie sa dve promenljive. Sintaksa je FAA(A, B) prebacuje B u A i B+A u B, gde je A kod izraza B+A staro A, pre promene vrednosti. Ovde A i B nemoraju biti boolean tipa.

SWAP operie sa dve promenljive. Sintaksa je SWAP(A, B) menja mesta A i B.

Kod hardverskog reenja u glavnom programu se deklarie jedna promenljiva tipa boolean(zauzeto) i setuje se na nulu, a u svakoj proceduri lokalna promenljiva takoe tipa boolean(nemoe).

Proces 1

.

.

nemoze = 1;

while(nemoze)

nemoze = TAS(zauzeto);

// Kritina sekcija

zauzeto = 0;

Ovde se, takoe, umesto TAS moe koristiti SWAP. Loa strana reenja uz korienje TAS instrukcije je ta to je to hardversko reenje. To je uslovna mana jer nemaju svi CPU ugraenu tu instrukciju. Prednost je ta to radi bre i moe raditi za n procesa bez ikakve modifikacije. Dok su predhodni algoritmi bili iskljuivo za dva procesa. Mana je to nema garancije koliko e neki proces da eka. Statistiki ovaj algoritam dobro radi, ali teorijski uslov konanog ekanja nije zadovoljen.

Ukoliko se eli garancija konanog ekanja algoritam se mora modifikovati. U glavnom programu se mora deklarisati niz tipa boolean(ceka[n]) koji se setuje na nulu, i promenljiva tipa integer(zauzeto) koja se setuje na nulu.

Proces i

.

.

ceka[i] = 1;

while(ceka[i] && TAS(zauzeto));

ceka[i] = 0;

// Kritina sekcija

j = i+1;

while(j != i && ceka[j] == 0)

j = (j+1) mod n;

if(i == j)

zauzeto = 0;

else

ceka[j] = 0;

Ovo reenje je sporije. Procedura je neefikasna jer svima nudi da preu u kritinu sekciju, to dovodi do troenja CPU vremena. Iako ovaj algoritam garantuje konano ekanje on se ne koristi u praksi.

Uoptenje Pitersonovog algoritma za n procesa predstavlja Lamportov algoritam(pekarski algoritam). Za implementaciju ovog reenja bie nam potrebno par definicija. Definiemo da je (A,B) < (C,D) ako A