Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Skripta - B.radenkovic - FON
Skripta - B.radenkovic - FON
Profesor
dr Boidar Radenkovi
Fakultet Organizacionih Nauka
Beograd, 2001.
Studenti
53. klasa
Sluba informatike
Sadraj:
1.KONCEPTI OPERATIVNIH SISTEMA........................................................................................ 5
1.1.Osnove operativnih sistema.......................................................................................... 5
1.2.Razvoj operativnih sistema............................................................................................ 5
1.3.Centralizovani operativni sistemi..................................................................................5
1.4.Mreni operativni sistemi............................................................................................... 6
1.5.Distribuirani operativni sistemi......................................................................................6
1.6.Kooperativni nezavisni sistemi......................................................................................7
1.7.Standardizacija.............................................................................................................. 7
2.Koncepti distribuiranih sistema.............................................................................................. 8
2.1.Koristi od distribuiranih sistema....................................................................................8
2.2.Servisi........................................................................................................................... 8
2.3.Projektni zahtevi............................................................................................................ 8
2.4.Sistemski modeli........................................................................................................... 8
2.5.Transparentnost............................................................................................................. 9
2.6.Fleksibilnost.................................................................................................................. 9
2.7.Pouzdanost.................................................................................................................... 9
2.8.Performanse................................................................................................................ 10
2.9.Distribuirani algoritmi.................................................................................................. 10
3.Konkurentni procesi i programiranje.....................................................................................11
3.1.Konkurentni procesi..................................................................................................... 11
3.2. Korienje niti............................................................................................................. 11
3.2.1 Implementacija niti u prostoru korisnikog programa...........................................11
3.2.2 Implementacija niti u kernelu...............................................................................11
3.3 Klijent - Server model.................................................................................................. 12
3.4 Vreme u distribuiranim sistemima...............................................................................12
3.4.1 Logiki sat............................................................................................................ 12
3.4.2 Fiziki sat.............................................................................................................. 13
3.5 Konkurentno programiranje......................................................................................... 13
3.6 Sinhronizacija slanja poruka........................................................................................14
4.MEUPROCESNA KOMUNIKACIJA.......................................................................................15
4.1.Meuprocesna komunikacija.......................................................................................15
4.2.Komunikacija prenoenjem poruka..............................................................................15
4.3 Sinhronizacija i prihvatanje poruka..............................................................................16
4.4 Pipe i socket APIs..................................................................................................16
4.5.Zatitni sloj socketa..................................................................................................... 17
4.6.Komunikacija grupe i multiprenos(multicast)...............................................................18
4.6.1 Ureivanje multiprenosa.......................................................................................18
4.6.2 Uzrono ureen multiprenos.................................................................................18
4.6.3 Atomski multiprenos............................................................................................. 18
4.7 Komunikacija upit/odgovor..........................................................................................19
4.7.1 Parametar prenosa i konverzija podataka.............................................................19
4.7.2 RPC kompilacija.................................................................................................... 19
4.7.3 Povezivanje........................................................................................................... 20
4.7.4 RPC izuzeci i upravljanje otkazima........................................................................20
4.7.5 Sigurnost: Suns Secure RPC.................................................................................21
4.8 Transakciona komunikacija.......................................................................................... 21
4.8.1 Dvofazni protokol.................................................................................................. 21
4.8.2 Tok izvravanja 2PC.............................................................................................. 22
4.8.3 Oporavak.............................................................................................................. 22
4.9 Servisiranje po imenu i sadraju..................................................................................22
4.9.1 Rezolucija imena................................................................................................... 22
4.9.2 Informaciona baza sadraja..................................................................................23
5. MEUPROCESNA KOORDINACIJA......................................................................................24
5.1 Kooperativni procesi.................................................................................................... 24
5.2 Distribuirana meusobna iskljuenja...........................................................................24
5.2.1 Lamport-ovi algoritmi distribuiranih meusobnih iskljuenja................................24
5.2.2 Ricart i Agrawal-ov algoritam distribiranih meusobnih iskljuenja......................25
5.2.3 Algoritmi distribuiranih meusobnih iskljuenja zasnovani na glasanju................25
rasporeivanje procesa
upravljanje memorijom
upravljanje datotekama.
Generalno operativni sistem je sainjen iz dva sloja. Donji sloj, tik iznad hardvera, implementira
neophodne funkcije i naziva se kernel (kernel - jezgro). Struktura kernela je esto monolitna, jer je
efikasnost glavna obaveza. Vii sloj implementira funkcije visokog nivoa koje program vidi. On je esto
horizontalno raslojen.
Portabilnost operativnog sistema moe biti podrana deljenjem hardverski zavisnog koda. Hardverski
zavisan deo bi trebao biti minimiziran da bi se smanjili trokovi portabilnosti. Obino su implementirane
sledee funkcije
- multipleksiranje procesora sa multiprogramskom podrkom
- upravljanje prekidima
- drajveri za ureaje
- primitive sinhronizacije procesa
- primitive meuprocesne komunikacije
U distribuiranoj sredini, raunarska komponenta moe imati specijalizovanu funkcionalnost i ne startuje
kompletan operativni sistem ukljuujui sve sistemske servise. Fukcije koje su obino potrebne za svaku
raunarsku komponentu formiraju mikrokernel. Mikrokernel bi trebao biti smeten u sloj zaduen za
obezbeivanje proirivosti aplikacijama visokog nivoa ukljuujui i kompletan standardan operativni
sistem i u sloju hardverske apstrakcije zaduen za portabilnost.
lokaciona transparentnost
migraciona transparentnost
replikaciona transparentnost
konkurentna transparentnost
paralelna transparentnost
1.7.Standardizacija
Potreba za kooperativnim nezavisnim sistemima je uslovila nekolko aktivnosti za standardizaciju
distribuiranih raunarskih sistema.
ODP standardizuje OSI komunikacioni sloj. ODP je OSI proirenje koje se odnosi na krajnje
ponaanje sistema. Cilj ODP-a je da omogui razvoj distribuiranih sistema u okruenju
veeg broja prualaca usluga.
Deljenje resursa. To moe biti od koristi usled nedovoljnih hardverskih komponenti ili
nedovoljnih podataka.
2.2.Servisi
Da bi se iskoristile mogunosti distrubuiranih sistema, servisi ponueni od strane konvencionalnih
operativnih sistema moraju biti proireni. Postoje dva osnovna pristupa
Prvi, nazvan monolotni kernel, baziran je na centralizovanom operativnom sistemu, npr. UNIX, bez
podrke za mrenu komunikaciju i integraciju udaljenih servisa.
Mikrokernelski pristup je baziran na ideji da se obezbede samo neophodni servisi kernela.
Generalno, ovi servisi spadaju u etiri kategorije meuprocesne komunikacije, primitivnog upravljanja
memorijom, U/I niskog nivoa, i mali deo upravljanja procesa niskog nivoa. Ostali servisi se nalaze
izvan kernela i obezbeeni su od strane sistemskih servera. Neki od tipinih servera su procesni
server, mrezni server, fajl server i autentifikacioni server. Ovi servisi su neophodni za implementaciju
distribuiranih sistema. Dodatni servisi podravaju distribuirane aplikacije i nalaze se na vrhu
sistemskih servisa. Primeri takvih servera su grupni server, mail server i web server.
2.3.Projektni zahtevi
U distribuiranim sistemima je dostupno vie procesora. Kako se procesori koriste, je glavno pitanje
projektovanja. Procesori u distribuiranom sistemu mogu biti organizovani prema modelu radne stanice,
procesorske liste ili njihovom kombinacijom.
Sledei projektni zahtev bavi se osnovnim osobinama distribuiranih sistema. To su transparentnost,
fleksibilnost, pouzdanost i performanse.
Implementacija servisa distribuiranih operativnih sistema je podrana od strane distribuiranih algoritama.
Postoji mnotvo centralizovanih algoritama, korienih od konvencionalnih operativnih sistema ani oni
moraju biti ponovo provereni za distribuirano okruenje. Distribuirani algoritmi treba da uzmu u obzir
sledee karakteristike distribuiranih sistema:
-
algoritam treba da je u stanju da rei situaciju kada se izgubi poruka ili krahira maina
2.4.Sistemski modeli
Osnovni model organizacije procesa u distribuiranom sistemu je model radne stanice. Ovaj model se
prosto sastoji od meusobno povezanih radnih stanica. Ako je svaka od ovih radnih stanica komletna
maina sa sposobnou da kontaktira druge maine, blii smo mrenom operativnom sistemu. Druga
mogunost je da su neke maine posveene samo odreenim servisima. Na primer, svim datotekam se
centralizovano upravlja na malom broju fajl servera. Tada se model preciznije naziva model radne stanice
- servera. Nasuprot modelu sa kompletnim mainama, neke radne stanice mogu biti bez diska, i ako se
obavlja udaljeno procesiranje te maine postaju terminali.
Reenje za nezaposlene maine je da se procesori sakupe na jednom mestu i da se dinamiki dodeljuju
korisnicima na osnovu zahteva. Ova organizacija procesora u distribuiranim sistemima naziva se model
procesorske liste. U tom modelu korisnici imaju sliku virtuelne vieprocesorske maine. Umesto radnih
stanica inteligentni terminali (poput X terminala) su na raspolaganju korisnicima da pristupe sistemu.
Dva pristupa, model radne stanice i model procesorske liste mogu biti kombinovani.
Osnovni nain njihovog kombinovanja je da se model radne stanice proiri procesorskom listom. U tom
hibridnom modelu korisnici mogu obavljati interaktivan rad na radnim stanicama, i da zahtevaju dodatnu
procesorsku snagu iz procesorske liste za komplikovane proraune.
Takoe je mogue da se procesori radnih stanica posmatraju kao oblik procesorske liste ako sistem
poseduje efikasnu implementaciju migracije procesa.
2.5.Transparentnost
Transparentnost zaklanja fiziku podeljenost objekata, njihovo upravljanje u distribuiranim sistemima, od
njihovih korisnika. U isto vreme koncept transparentnosti kreira eljenu sliku sistema. Kompletna
transparentnost je ekstremna. Ona nije uvek poeljna. Korisnik koji eli da odtampa dokument vie bi
voleo da saeka da lokalni zauzeti tampa zavri posao nego da tampa na 100 kilometara udaljenom
slobodnom tampau.
Postoji nekoliko tipova transparentnosti u distribuiranom sistemu
-
objekte
-
2.6.Fleksibilnost
Fleksibilnost je jedan od glavnih projektnih zahteva u distribuiranim sistemima, zato to trebamo da
oekujemo razvoj novih tehnologija u budunosti koje moraju da budu ukljuene u trenutno projektovane
sisteme. Drugi razlog je mogua potreba za poboljanjem distribuiranih sistema, ak i sa heterogenim
komponentama. Drugim reima moramo da oslikamo mogunost da se sistem razvija u vremenu i
prostoru.
Koncept fleksibilnosti ukljuuje osobine poput modularnosti, skalabilnosti, portabilnosti i meusaradnje.
2.7.Pouzdanost
Pouzdanost je oigledno bitniji zahtev u distribuiranim sistemima nego u centralizovanim, zbog njihove
visoke kompleksnosti i geografske distribucije.
Moe se desiti da korisnicima bude onemoguen rad zbog kvarova na komunikacionim linkovima ili
udaljenim serverima. U sluaju kad je mnogo resursa potrebno da bi se izvrio zadatak, krajnja
pouzdanost je proizvod pouzdanosti komponenti.Ovo ini kvarove u distribuiranim sistemima eim, jer
je traeni servis dostupan samo ako sve komponente funkcioniu. Sa druge strane mogue je
organizovati distribuirani sistem tako da ako jedna komponenta otkae druga preuzima njene poslove.
Ova ideja poveava pouzdanost jer je servis dostupan ako bar jedna komponenta radi. Pouzdanost ima
vie aspekata. Upravo smo raspravljani o jednom koji je nazvan dostupnost.
Povrh toga, ako servise obezbeuje grupa kooperatvnih servera, i ako servis nastavlja da bude dostupan
kada jedan ili dva servera budu izgubljeni zbog nekog pada performansi sistem je otporan na greke.
Otpornost na greke je jo jedan aspekt pouzdanosti.
Dok su kvarovi na komponentama u distribuiranim sistemima nenamerni, namerni upadi, ako je
bezbednost naruena mogu izazvati ozbiljne tete. Bezbednost je novi vaan aspekt pouzdanosti.
2.8.Performanse
Posedovanje transparentnog, fleksibilnog distribuiranog sistema, sa estim preoptereenjima sistema,
gde se aplikacije sporo izvravaju bilo bi beskorisno. Nasuprot tome performanse bi trebal biti bolje ili bar
jednake izvravanju iste aplikacije na centralizovanom sistemu.
Poboljanje performansi deljenjem posla meu vie procesora zahteva slanje poruka. Poput toga,
koordinacija nekoliko servera, koja obezbeuje pouzdane servise, zahteva razmenu informacija.
Komunikaciona zadrka je injenica koja je neizbena u distribuiranim sistemima. Zbog toga
komunikacioni sistem, ukljuujui komunikacione primitive i komunikacione protokole mora biti paljivo
projektovani.
2.9.Distribuirani algoritmi
Generalno uzevi algoritmi korieni u centralizovanim sistemima ne mogu biti direktno korieni u
distribuiranim sistemima. Sledee injenice se moraju uzeti u obzir:
Na razliitim vorovima je nepotpuna i nedosledna slika sistema, zbog nepostojanja deljene memorije
i komunikacionih zadrki. Koordinacija izmeu procesa na razliitim vorovima se postie slanjem
poruka.
Ne postoji globalan sat. ak i ako postoji centralni sat u distribuiranom sistemu, vremensko kanjenje
prenoenja vremenske informacije razliitim vorovima e se razlikovati i moe varirati, na primer u
zavisnosti od mrenog saobraaja.
Distribuirani sistemi mogu imati menjajuu topologiju, na primer zbog povezivanja novog vora.
Kvarovi na komunikacionim linkovima i vorovima moe takoe izmeniti topologiju
U zavisnosti od upravljanja kontrolom, distribuirani algoritmi mogu biti potpuno centralizovani ili
decentralizovani. Kasnije, ako centalizovani kontroler doivi kvar, algoritam mora biti u stanju da ga
oporavi.
blokirati povezani light weight proces, ali korisniki proces moe nastaviti izvravanje izvrenjem niti
povezane sa drugim light weight procesom u istom korisnikom procesu. Rasporeivanje korisnikih niti
sa izbacivanjem je mogue jer light weight procesi mogu biti izbaeni od strane kernela.
Fiziki, zahtevi i odgovori se prosleuju dotinom kernelu, i alju kroz komunikacionu mreu ciljnim
kernelima i procesima. Iz jednostavnosti ovog modela proizilazi potreba za samo dva komunikaciona
sistemska poziva kernelu: send (poalji) i receive (primi) poruku.
Vano pitanje je kako klijent locira server ako on promeni lokaciju ili postoji vie servera. Zbog
fleksibilnosti serveri se identifikuju preko imena. Serveri, nazvani vezujui serveri (binder servers) spajaju
klijente i servere. Procedura koja izvrava ovo spajanje je nazvana dinamiko povezivanje (dynamic
binding). Kada se server startuje, on alje povezivau podatke o svojoj lokaciji. Tada klijenti preko
povezivaa znaju lokaciju odgovarajueg servera. Kao dodatak, poveziva moe pomagati u
autentifikaciji klijenata za servere.
S obzirom da je relacija pojavilo se ranije, koja se tako zove desilo se ranije, tranzitivna, dodeljivanje
vrednosti logikom satu na ovaj nain odrava relaciju izmeu vremena pojavljivanja bilo koja dva
dogaaja koji sluajno utiu jedan na drugi, kao to je gore opisano. Zbog toga je uvedena totalna
ureenost izmeu takvih sluajno povezanih dogaaja.
Sa druge strane, mogu postojati dogaaji u razliitim procesima koji se mogu pojaviti pre, posle, ili
paralelno jedan sa drugim, npr dogaaji koji se pojave izmeu dve uzastopne razmene poruka u dva
procesa. Za takve dogaaje se kae da su razdvojeni ili konkurentni. Jasno je da je skup svih dogaaja
samo parcijano ureen.
Nekim distribuiranim algoritmima je potrebna potpuna ureenost svih dogaaja. To se moe reiti
dodavanjem jedinstvene vrednosti procesa u kome je dogaaj nastupio, na logiki sat dogaeja. Ako se
desi da dva dogaaja u razlitim procesima imaju isti marker vremena, prednost odreuje nii broj
procesa.
Ako su Ci(a) i Cj(b) vrednosti logikog sata dogaaja u procesima Pi i Pj , generalno se ne moe odrediti
da li je dogaaj a nastupio pre dogaaja b ako je Ci(a) < Cj(b) jer mogu biti konkurentni. Tu situaciju
reava vektorski logiki sat. Vektorski logiki sat dogaaja a u procesu Pi je vektor [TS1, TS2, ...,
Ci(a), ..., TSn] gde je n broj procesa, TSk, k=1, ...,n, ki je posladnja znana vrednost logikog sata za
proces Pk, dobijena kao vremenska marka razmenom poruka, a Ci(a) takoe oznaava TSi, vrednost
logikog sata dogaaja u procesu Pi.
Svaki proces inicijalizuje svoj vektorski sat na prazan vektor na poetku izvravanja. Vektorskim satom
dogaaja u istom procesu se pristupa kao skalarnom satu. Kada proces Pi poalje poruku (dogaaj a),
negov vektorski sat VCi(a) se doda poruci. Prihvatajui proces Pj postavlja svoj vektorski sat VCj(b) po
prijemu te poruke (dogaaj b) takav da je TSk(b), kj ureeni par najveih vrednosti prispelog
vektorskog sata VCi(a) i sopstvenog vektorskog sata, i uveava svoj logiki sat Cj.
Jasno je da ako se dogaaj a u Pi pojavi pre nego dogaaj b u Pj tada je TSk(a)TSk(b), k=1, ..., n,
kj i TSk(a)<TSk(b), to smo izrazili sa VCi(a)<VCj(b). Konkurentni dogaaji c u Pi i d u Pj ne mogu
nikad zadovoljiti VCi(c)<VCj(d) ili VCi(a)>VCj(d).
sinhronizaciju procesa
meuprocesnu komunikaciju.
semafor
kritini region
monitor
izraz putanje
Kad se distribuirani sistemi uzmu u obzir, novi zadatak je procesna komunikacija preko slanja poruka.
Slanje poruka takoe ukljuuje implicitnu sinhronizaciju zato to poruka ne moe biti primljena pre nego
to je poslata.
Centalizovane metode su jo uvek korisne u distribuiranim sistemima. Niti koriste deljenu memoriju i
sinhronizacione metode deljenih promenjivih. Ponekad je poeljno simulirati sinhronizaciju deljenih
promenjivih slanjem poruka.
slanje poruke
primanje poruke
Odgovarajue send i receive primitive mogu biti blokirajue ili neblokirajue. Ako je komunikaciona
primitiva neblokirajua kontrola se odmah vraa pozivaocu i proces pozivaoc moe da nastavi da se
izvrava paralelno sa primitivom. Postavlja se pitanje kako proces pozivaoc zna kad je slanje ili primanje
zavreno. To je bitnije za receive primitivu. Dodavanje wait primitive koja dozvoljava primaocu da se
blokira kad je potrebno jedno je od reenja.
Za veinu aplikacija, divoljno je pretpostaviti da je raceive blokiraje a send moe biti blokirajue i
neblokirajue. Neblokirajue send i blokirajue receive se naziva asinhrono slanje poruka, a blokirajui
send i receive sinhrono.
Asinhrono slanje poruka pretpostavlja deljeni komunikacioni kanal koji poseduje potencijalno slobodan
bafer. Asinhrono slanje poruka se moe posmatrati kao proirenje koncepta semafora. Primeri asinhronog
slanja poruka su pipe i socket
Sinhrono slanje poruka znai ekanje procesa dok se odgovarajua operacija ne pojavi. To znai da send
mora saekati da se odgovarajui receive pojavi i obratno. Taj mehanizam sinhronizaciije se naziva
sastanak (randevu). Ovaj oblik ulazno/izlaznog (send/receive) satanka je obezbeen od strane
Komunikacionog Sekvencijalnog Procesa (CSP). CSP sastanak obezbeuje blokiranje i prostu razmenu
podataka izmeu poiljaoca i primaoca. Poziv udaljene procedure (RPC) je proirenje sinhronog slanja
poruka u kome je pozivaoc blokiran dok se pozvana procedura ne izvri i rezultat prosledi pozivaocu.
RPC je komunikacija izmeu klijenta i servera. Serveri su implementirani preko seta procedura koje mogu
biti pozvane od strane udaljenih klijenata. Serveri u RPC-u ekaju da budu pozvani od strane klijenata.
Sa druge strane serveri u sastanku pokuavaju da prihvate zahteve klijenata. Primer ovog koncepta je
Ada sastanak. Procedure eksplicitno izraavaju spremnost da prihvate pozivaoca.
4.MEUPROCESNA KOMUNIKACIJA
4.1.Meuprocesna komunikacija
Prenoenje poruka je jedini metod razmene podataka u distribuiranim sistemima.
Prenoenje poruka je najnii nivo procesne komunikacije na aplikacionom nivou. Vii nivoi komunikacije
izmeu procesa, zasnovani na komunikaciji prenosenjem poruka, su upit/odgovor komunikacija i
transakciona komunikacija.
Komunikacija upit/odgovor podrava model klijent/server. Ovaj nivo se moe implementirati kao RPC
(Remote Procedure Call )
Atomske sekvence komunikacija upit/odgovor formiraju transakcije. One slue kao osnovne jedinice za
komunikaciju za aplikacije kao to su sistemi baza podataka.
Kada se zahteva tradicionalan, centralizovani koncept deljene memorije, na primer zbog jednostavnosti
programiranja, logiki podeljena memorija se moe simulirati prenoenjem poruka.
Komunikacioni procesi specificiraju drugog uesnika komunikacije i poslatu ili primljenu poruku. Postoji
pitanje kako se komunikacioni entiteti adresiraju. Obino se koriste opcije:
-
naziv procesa
link
mailbox
port
Korienje naziva procesa (tj. idetifikatori globalnih procesa su jedinstveno sainjeni od niza identifikatora
procesa sa internet adresom domaina) obezbeuje jednu direktnu komunikacionu putanju izmeu bilo
kog para komunikacionih procesa. Kada se odgovarajui procesi, koji alju i primaju poruke, moraju
imenovati meusobno, tada je shema adresiranja simetrina. Potreba za imenovanjem drugog
komunikacionog entiteta bi zahtevala da server eksplicitno imenuje sve mogue klijente. Primanje poruka
iz nepoznatih izvora bi bila pogodnija shema. U ovom sluaju, parametar izvora receive osnove je ulazna
varijabla kojoj se dodeljuje vrednost identifikatora procesa koji je poslao poruku. Ovakva shema
adresiranja je asimetrina.
Sheme adresiranja putem naziva procesa obezbeuju komunikacione procese sa dvosmernom
komunikacionom putanjom. Da bi omoguili viestruke komunikacione putanje izmeu procesa, moramo
identifikovati komunikacione putanje u komunikacionim osnovama. Ovaj zahtev vodi do koncepta linkova,
slinom konceptu virtualnih kola u mrei raunara. Linkovima se upravlja logiki i oni su jednosmerne
komunikacione putanje.
Nazivi procesa i brojevi linkova su direktne sheme adresiranja. Ponekad je, proces koji alje poruku
zainteresovan samo za prijem poslate poruke i obrnuto, proces koji prima poruku je zainteresovan samo
za poruku kao takvu, dok identitet procesa koji alje poruku moe biti sadran u njoj. Viestruki klijenti koji
zahtevaju servise od nekih viestrukih servera je pogodan primer. Reenje je u korienju mailbox-a. Oni
omoguavaju komunikaciju vie sa vie i viestrukih putanja.
Port se moe posmatrati kao specijalan sluaj mailbox-a, koji omoguava komunikaciju vie sa jednim.
Poruke se smetaju u red koji je po principu redosleda pristizanja (first-came-first-served).
Mailbox i portovi su posredne komunikacione sheme.
Prva opcija se zove asinhroni send, obzirom da proces poiljaoc nastavlja svoje izvrenje asinhrono sa
transferom poruke, odmah nakon to je poruka kopirana u jezgro poiljaoca. Preostale opcije se nazivaju
sinhroni send. Poslednja se eksplicitno naziva komunikacija klijent-server.
Baferi se koriste da ublae raskorak izmeu brzina obrade podataka komponenata koje realizuju prenos
poruke. Poruka je zatim sadrana u baferu jezgra poiljaoca, baferu komunikacione mree i baferu jezgra
primaoca. Moemo posmatrati kombinaciju ovih bafera kao jedan globalni logiki bafer. Ukoliko je veliina
ovog bafera neograniena, asinhroni send nikada ne blokira. U suprotnom, ako komponente koje
realizuju prenos poruke imaju bafere manjih veliina nego to je to potrebno, poiljalac i primalac moraju
biti sinhronizovani. To je randevu koncept
Upotreba pipe-a i imenovanog pipe-a je ograniena u zavisnosti od situacije gde se strukture podataka ili
jedinstveno imenovani fajlovi (obini sistem fajlovi) mogu deliti. Da bi se obezbedile uobiajene metode
za meuprocesnu komunikaciju i dozvolila upotreba mrenog protokola, potrebno je izvrenje
interprocesne komunikacije APIs na vrhu prenosnog nivoa. Za ilustraciju ovog koncepta koristiemo
najrasprostranjeniji mehanizam, poznat kao Berkley sockets. Dve krajnje take komunikacionog kanala
su socketi, i oni su obezbeeni od strane dva komunikaciona procesa. Par socket-a ostvaruje dvosmerni
komunikacioni link.
Socket se kreira izdavanjem socket sistemskog poziva koji vraa socket deskriptor. Parametri socket
sistemskog poziva su:
komunikacioni domen u okviru koga socketi dele komunikacione pogodnosti, kao to su imenovani i
upotrebljeni komunikacioni niz (na primer: Unix ili Internet domen)
tip socketa ukazuje na tip komunikacije koja se ostvaruje preko socketa (na pr. datagram ili virtuelno
kolo, stream u Berkley-evoj terminologiji)
protokol ukazuje na protokol koji se koristi u komunikaciji (na primer TCP ili UDP)
Socket deskriptor je lokalni za proces koji je izdao odgovarajui socket sistemski poziv. Bind sistemski
poziv daje ime socket deskriptoru, na primer, adresa mree domaina i port koje specificira korisnik ili
lokalno generisane od strane prenosnog servisa za Internet domen. Za Unix domen, asocirani naziv je
naziv fajla u lokalnom sistemu fajlova. Kada su procesi koristili sockete i bind sistemske pozive, mogu
izvoditi komunikaciju bez konekcije koristei datagram socketa pomou sendto/recvfrom socket poziva.
Parametri sendto/recvfrom socket poziva sadre deskriptore lokalnih socketa i poruku. Obzirom da je
komunikacija bez konekcije, adresa destinacije u sendto i adresa izvora u recvfrom moraju biti
specificirane u dodatnom parametru.
Eksplicitna specifikacija adresa destinacija i izvora u send/receive pozivima se moe izbei korienjem
connect socket poziva. Connect socket poziv vezuje deskriptor lokalnog socketa sa nazivom deskriptora
udaljenog socketa i ostvaruje vezu za sockete virtualnih kola. Nakon connect operacije, podaci se mogu
prenositi send/recv sistemskim pozivom bez navoenja udaljenog socketa. Slino, proces moe koristiti
read/write socket sistemske pozive za sockete virtualnih kola umesto send/recv.
U sluaju klijent-server komunikacije, oekuje se da server ima dobro poznatu adresu servisa. Server e
morati da komunicira sa vie klijenata ija su imena nepoznata. Za ostvarivanje veze, server izdaje
accept poziv, koji se sastaje sa connect pozivom klijenta. Listen sistemski poziv se izdaje da bi pokazao
spremnost za prihvatanje konekcija i navodi maksimalan broj neispunjenih zahteva koji je dozvoljen da
se nakupi u jezgru. Accept pozivi se sastaju sa nizom connect poziva i vraaju novi socket deskriptor.
Server e koristiti novi socket deskriptor za komunikaciju sa konektovanim klijentom i nastavie sa
oslukivanjem na dobro poznatoj adresi. Proces servera se moe ravati na procese naslednike za svaku
vezu koristei novi socket deskriptor.
sve socket poruke su ifrovane odgovarujuim ifra algoritmom i tajnim write kljuem
svaka poruka sadri proveru autentinosti poruke koju je stvorila hashing poruka sa MAC ifrom
Klijent eli da trai uslugu od bilo kog servisa svih lanova grupe best-effort multicast; sistem
samo treba da garantuje isporuku multicast poruke do dostupnog ispravnog procesa
Klijent treba da trai servis od svih lanova grupe servera - reliable multicast; multicast treba da
prime ili svi serveri ili ni jedan (sdri potrebu za privremeno uvanje poruka)
otkazi zaetnika
FIFO poredak: Multiprenosne poruke iz jednog izvora su isporuene u redosledu u kome su bile
poslate. Ovaj tip poretka je lako implementirati korienjem rednih brojeva.
Potpuni poredak: Svi multiprenosi poruka ka grupi su isporueni svim lanovima grupe u istom
poretku. Pouzdani potpuno ureeni multiprenos se naziva atomic multicast.
izraavanje rednog broja vektorom rednih brojeva, S = (S1, S2, , Sn). Svaki Sk predstavlja broj
poruka do sada primnjenih od lana grupe k. Kada lan i viestruko prenosi novu poruku m, on
inkrementira Si za 1 i vezuje vektor S za m. Kada primi poruku m sa rednim vektorom T=(T1, T2,
,Tn) od lana i, lan j prihvata ili odlae dostavu poruke m prema sledeim pravilima:
o
Protokol uzronog poretka simulira multiprenos u zatvorenoj grupi, i multiprenosi ne mogu spojiti
grupe.
Faza: Tvorac poruka emituje poruke i prikuplja potvrde sa logikim vremenskim rokom od svih
lanova grupe.
2.
Faza: Nakon to su sve potvrde prikupljene, tvorac alje commitment poruku koja nosi najvei
vremenski rok potvrde kao logiku vezu za angaovanje. lanovi grupe tada odluuju da li
angaovana poruka treba biti smetena ili isporuena bazirajui se na globalnim logikim
vremenima angaovanja multiprenosnih poruka.
Primeri RPC:
o
SUN-RPC (SunSoft)
Veina RPC implementacija koriste call-by-value i call-by-copy/restore parametre prenosa. Callby-copy/restore parametar prenosa je kombinacija call-by-copy na ulazak procedure i call-byreference na povratak, kada su rezultati prekopirani u pozivajuu proceduru.
zapisivanje podataka
predstavljanje podataka
datoteka interfejs specifikacije koja opisuje interfejs servisima koje server obezbeuje i koje
klijent moe da pozove
RPC generator koji uzima interfejs specifikaciju kao ulaz i proizvodi klijent i server izvorni kod
stub procedure kao izlaz
4.7.3 Povezivanje
Povezivanje opisuje proces prijavljivanja servisa koje prua server i proces pronalaenja servera od
strane klijenata. Obuhvata sledee korake:
na poetku, server alje svoj program i broj verzije zajedno sa portom, koji slua, port mapper-u.
Port mapper je serverov proces, koji upravlja program/port planiranjem i ima dobro poznatu adresu
porta
pre daljinskog poziva procedure, klijent kontaktira udaljeni port mapper radi dobijanje rukovanja
udaljenim serverom
Ako je serverova maina nepoznata, druga sredstva (kao server sadraja) se prvo moraju koristiti za
lociranje serverove maine.
pravljenja zahteva istog znaaja, tj. ponovljeni zahtev proizvodi iste rezultate (na primer:
itanje bloka, pisanje u bloku, ali ne dodavanje bloka datoteci)
pad sistema klijent ne zna da li je servis izvren ili ne, a eljena semantika je da servis
bude izvren tano jednom. Ovo se mora implementirati korienjem transakcija.
krah klijenta dovodi do ostataka raunanja kod servera, koji se moe eliminisati pomou:
o
izdisanja'' operaciji je dat ivotni vek i klijent mora eksplicitno da trai dodatno vreme
koristi javne kriptografske metode tokom logovanja i simetrine kriptografske metode (DES) za
komunikaciju sa kljuem etape
Secure RPC poruke mogu sadrati kao dodatk podacima: vremenski rok, sadanjost, pregled
poruka
koristi NIS+ (Network Information Service) kao mesto za smetanje korisnikovih mrenih naziva
javnih i tajnih kljueva.
Izolovanost: parcijalni rezultati nedovrene transakcije nisu dostupni drugima pre uspenog
zavretka transakcije.
ACID svojstva se mogu postii uz pomou dvofaznog protokola (Two-phase Commit Protocol 2PC)
pre nego to uesnik glasa za izvrenje mora biti spreman da obavi to izvrenje
Da bi savladali otkaze, aurirani podaci se smetaju log stabilne aktivnosti. Log aktivnosti se moe
koristiti za oporavak nakon otkaza za ponovno izvrenje izvrene transakcije ili za ponitavanje
neizvrene.
4.8.3 Oporavak
S obzirom da pisanje precommit i commit zapisa u log aktivnosti brie sve aurirane podatke pre ovih
sinhronizacionih taaka, odgovarajue akcije prilikom oporavka od otkaza mogu se osloniti na odgovor
loga barem do sinhronizacionih taaka. Akcije oporavka se mogu kategorizovati u tri tipa:
o
Look-up operacije dato ime ili atributi entiteta. Vie atributa je steeno
Bilo koji objektni entitet (servisi ili objekti) u sistemu moraju biti imenovani (prepoznatljivi) i lociran
rezolucija imena mapira imena do logikih adresa osnovna funkcija distribuiranih sistema
rezolucija adrese mapira logike adrese do mrenih putanja (fizike lokacije) ovo je domen
mrenog softvera
X.500 (ITU)
Name space velikog obima koji sadri razliite klase objekata se moe struktuirati izimajui u obzir
jedinstvene tipove.
fizicka
organizaciona
funkcionalna
5. MEUPROCESNA KOORDINACIJA
jednosmerana
klijent/server
ravna komunikacija
kritinoj oblasti, on prosleuje token dalje. Tako, token krui po prstenu ak i ako ni jedan proces ne eli
da ue u svoju kritinu oblast, a rezultat su nepotrebne poruke.
Tipologija prstena koja je nametnuta procesima nije najbolji nain za dobijanje tokena, jer putanja moe
biti dugaka (na primer, ako je zahteva poslao token neposredno pre nego to je hteo da pristupi svojoj
kritinoj oblasti, putanja je za jedan korak kraa od duine celog kruga). Alternativno reenje je nametnuti
procesima tipologiju stabla.
2.
Kada proces primi token moe da prisupi svojoj kritinoj oblasti. Nakon zavretka kritine oblasti, proces
p preduzima sledee akcije:
1.
Podeava T[p]=S[p].
2.
Prikljuuje sve procese sa S[k]=T[k]+1, izuzev k=p, redu zahteva u tokenu, ako ve nisu u njemu.
3.
Ako je red zahteva prazan, zadrava token. U suprotnom, uklanja ulaz sa vrha reda zahteva i
alje token procesu koji je naznaen u uklonjenom ulazu.
otkrivanje otkaza je bazirano na pauzama. Slino kao kod algoritama distribuiranih meusobnih
iskljuenja, algoritmi za izbor lidera takoe zavise od topologije grupe procesa.
Prvo emo razmatrati potpunu topologiju, gde svaki proces u grupi moe dosegnuti bilo koji drugi proces
iz iste grupe u jednom skoku. Dalje pretpostavke su sledee:
1.
2.
3.
Detekcija otkaza je sigurna korienjem skupa vremenskih intervala koji su malo vei od
zbira zadravanja poruke u putu i upravljanja porukom. Proces koji je otkazao znae da je okazao
kada se oporavi.
Politika rasporeivanja distribuiranih procesa, odreuje koj prenos e se kada izvriti i na kom
raunaru. Obino strategija rasporeivanja distribuiranih procesa pokuava da distribuira
optereenje sistema izmeu raunara distribuiranog sistema
Poto rasporeiva ne mora da odrava stanje trenutnog rasporeivanja optereenja, on moe biti vrlo
jednostavan i efektivan. Sdruge strane, rasporeiva je centralizovani deo distribuiranog sistema.
Prednosti Modela Procesa
Vanost veza izmeu procesa moe se opisati sa Direct Acylic Graph (DAG) u kome punktovi
predstavljaju procese sa poznatim remenom izvravanja, a granice predstavljaju vanost veza izmeu
procesa. Granice se oznaavaju sa teinom preneenih poruka izmeu postupaka u okviru granica
roditelja.
Distribuirano raunarsko okruenje moe se prilagoditi pomou neusmerenog grafa. Ovde punktovi
predstavljaju raunare a granice predstavljaju komunikacione kanale meu raunarima. Svaka granica je
oznaena sa komunikacionim kanjenjem.
Rasporeiva trai raspored procesa po procesorima tako da ukupno vreme izvravanja bude minimalno.
Komunikacija meu procesima na istom procesoru nije od velike vanosti.
Poto je problem iznalaenja optimalnog dodeljivanja procesora procesima NP zavren, ponueno je
nekoliko heuristikih algoritama:
neki raunar postane idealan ili manje optereen nego raunar na kome se proces izvrava,
rasporeiva moe prebaciti proces na taj raunar.
Deljenje optereenja
U sluaju deljenja optereenja, optereenje se distribuira preko distribuiranih sistema rasporeivanjem
procesa na neoptereen ili malo optereen raunar. Ovaj pristup, ipak, obezbeuje samo lokalno reenje
rasporeivanja distribuiranih procesa, na primer, unapreuje samo izvoenje na lokalnoj maini. U prilog
tome, ukupno optereenje se moe distribuirati nejednako.
Kako bi se raspodelio proces, neophodno je da rasporeiva zna informacije o trenutnom optereenju
prenosa (distribucije). Generalno, mogua su dva pristupa:
Rasporeivanje Optereenja
Glavni razlog rasporeivanja optereenja je izjednaavanje optereenja svih raunara u distribuiranom
sistemu. Ovaj cilj se moe postii prebacivanjem procesa sa veoma optereenih raunara na
neoptereene ili malo optereene raunare.
Na osnovu vremena kada rasporeiva inicira premetanje procesa, algoritmi rasporeivanja optereenja
mogu se podeliti na sledee grupe:
daljinsko izvravanje i
prebacivanje procesa
LOCUS, CHARLOTTE
nivo programskog jezika
SR, PVM
nivo aplikacije
rexec
rlogin
Prosleivanje poruka, kada raunar na kome se proces izvravao primi poruku za taj
proces, on jednostavno prosleuje poruku novoj procesorskoj lokaciji.
Preventiva protiv gubljenja poruke, pre nego to se proces premesti, svi procesi sa
kojima taj proces komunicira su obaveteni o novoj procesorskoj lokaciji.
Fajl (Datoteka) sistem je kljuna komponenta svakog distribuiranog sistema. Uloga fajl sistema je da
skladiti postojane imenovane objekte podataka zvane fajlovi, i da omoguci da budu dostupni kad je to
potrebno. Fajl sistem je dakle odgovoran za kreiranje, brisanje, povraaj, izmene i zatitu fajlova.
Distribuirani fajl sistem (DFS) predstavlja implementaciju fajl sistema u disribuiranom sistemskom
okruenju koje se sastoji od fiziki razdvojenih (distribuiranih u smislu lokacije) skladita podataka ali koji
obezbeuje tradicionalnu preglednost fajl sistema za korisnike. Zato se mnogi vani koncepti u izradi
distribuiranih sistema mogu demonstrirati implementacijom DFS-a:
1. distribuirani fajl sistemi primenjuju koncept transparentnosti
2. nacin adresiranja u DFS-u je primer ''opsluivanja imenoanja''
3. korienje keiranja i replikacije fajlova radi poveanja performansi i bolje dostupnosti faljova
4. Kontrola pristupa i zatita podataka u DFS-u predstavlja problem.
SERVIS DIREKTORIJUMA. Glavna funkcija je mapiranje tekstualnih imena fajlova u adrese. Mapiranje je
dosta nezavisno od trenutnih operacija nad fajlom. Zbog toga, uobiajeno je odvajanje servisa
direktorijuma od servisa fajlova kako bi se podrala modularnost i portabilnst . Obino je opsluivanje
fajlova na usluzi razliitim strukturama direktorijuma. Operacije nad direktorijumima ukljuuju pregled,
dodavanje i brisanje sadraja direktorijuma.
SERVIS AUTORIZACIJE . Uloga servisa autorizacije je da obezbedi kontrolu pristupanja fajlu. U
implementaciji, autorizacija se moe realizovati u sklopu servisa direktorijuma ili servisa fajlova. U
prethodnom sluaju, komponenta za servis direktorijuma uva informacije o pristupima fajlovima i
direktorijumima. Ako je korisnik autorizovan za pristup fajlu ili direktorijumu, njemu se omoguava obrada
eljenog fajla , i odreene mogunosti, koje se definiu pravima korisnika pri korienju fajla. Kada se
kasnije pristupa fajlu, prava pristupa se proveravaju preko fajl servera. Kasnije komponenta za servis
direktorijuma obezbeuje samo obradu fajla. Klijent mora bit autorizovan od strane fajl sistema svaki put
kad izvodi neku operaciju nad fajlom.
SERVIS FAJLOVA. Fajl sistemi koji podravaju transakcije dele fajl servise na transakcione i osnovne fajl
servise. Transakcioni servisi sprovode upravljanje konkurentnom obradom i upravljanje replikacijama.
Osnovni fajl servisi su ''read/write'' i ''get/set''. Servis fajlova takoe podrava kreiranje i brisanje fajlova.
Servis fajlova je u interakciji sa sistemskim opsluivanjem kod poslova dodeljivanja i oslobaanja prostora
bafera i fajla.
SERVISI SISTEMA. Funkcije koje obezbeuje sistem obuhvataju trenutne ''read/write'' operacije,
mapiranje logikih u fiziki blok adresa, i upravljanje prostorom koji zauzima (memorijom) fajl. Upravljanje
keom i odzivima je takoe usluga sistemskih servisa fajl sistema.
Klijenti se konsultuju sa registracioni serverom tamo gde se serveri moraju registrovati za svoje
usluge. Registracioni server dodeljuje, po nekom kriterijumu, najbolji server.
Klijenti emituju zahteve za montiranjem a fajl serveri odgovore na te zahteve. Sada klijent moe
da bira jedan od servera, koji su se javili, primenom neke strategije.
SEMANTIKA TRANSAKCIJE: Jedinca pristupa fajlu ili grupi fajlova je nedeljiva sekvenca read i write
operacija. Operacije transakcije su obuhvaene parom naredbi: poetak transakcije/kraj transakcije.
Izvravanje transakcije se ne ometa od strane drugih konkurentnih transakcija. To znai da zahtev za
izvravanje dve ili vie konkurentnih transakcija je isti kao da se izvravaju jedna za
drugom(sekvencijalno). Jedino se odrava konzistentnost podataka, stalne izmene fajla se sprovode
samo na kraju uspene transakcije.
SEMANTIKA SESIJE: Izmene na otvorenom fajlu su fiziki vidljive samo lokalnom klijentu. Samo kada je
fajl zatvoren izmenjeni fajl se kopira na fajl server i promena je trajno izvrena. Tako da je sesija
obuhvaena parom naredbi: ''open/close'' i deljenje fajla postoji samo izmeu uspenih sesija.
8.5 Keiranje
Keiranje od strane korisnika klijent-server sistema eliminie prenos kroz mreu kada klijent pristupi fajlu.
Na ovaj nain se moe postii prednost u izvravanju ali keiranje klijenta unosi nekonzistentnost u
sistem. Ako klijent lokalno vri izmene keiranog fajla i ubrzo zatim drugi kljient proita fajl sa servera,
drugi klijent dobija zastareo fajl.
''WRITE-TROUGH'' STRATEGIJA pokuava da rei problem nekonzistentnosti trenutnim slanjem ''write''
naredbi fajl serveru. Shodno tome, kada drugi klijent ita fajl sa fajl servera, dobija novu vrednost. Ipak
promene se nee videti od strane drugih procesa koji imaju isti fajl u svom keu.
''WRITE-INVALIDATE'' ili ''WRITE-UPDATE'' protokoli se mogu koristiti za reenje ovog problema.
Ponitavanje keeva od strane fajl servera obavetava sve klijente da su njihovi keevi "zastareli" i da se
moraju ponovo uitati za predstojee korienje.
''Write-trough'' i ''write-invalidate'' simuliraju Unix semantiku.
Jasno je da sa ''write-trough'' keom prenos mreom je eliminisan samo za itanje. Kako bi se snizio
promet write naredbi kroz mreu promene se mogu prikupiti na strani klijenta i da se periodino alje write
naredba. Ova strategija kontrole se naziva ''WRITE-BACK'' i nije podrana od strane Unix semantike.
Dalja olakanja u radu sa keiranjem trae usvajanje semantike sesije. Izmenjeni fajl se aurira(slanjem
"write" naredbe) posle zatvaranja. Ova strategija se zove ''WRITE-ON-CLOSE''.
sekundarnoj. Kako bi se izbegla situacija da se ne update-uju sve sekundarne kopije, a prmarna kopija se
"srui" prvo se upisuju izmene u trajno skladite fajla, a posle se vri promena primarne kopije. Nakon
oporavka od "pada" sa primarnih se moe zavriti slanje zahteva za izmenu sekundarnim. Ipak, ako je
primarni iskljuen, ne mogu se izvriti izmene.
"Quorum" glasanje. Klijenti moraju zahtevati i odravati dozvole mnogih servera bilo pre itanja ili
pisanja u odazvani fajl. Pretpostavimo da se fajl replikuje na N servera. Pisanje u replikovani fajl, zahteva
od klijenta da sakupi "quorum" za pisanje Nw, koji je ogranien na 2*Nw N. Kad se sakupi Nw servera
koji su se sloili, u fajl se upisuje i nova verzija je povezana sa fajlom. Broj verzije je isti za sve
novoizmenjene kopije. Kako bi se itao replikovani fajl, klijent mora da prikupi kvorum za itanje (read
quorum) Nr, koji je ogranien na Nr+Nw N. Poto su oba kvoruma isprepletana meusobno, bilo koji
sakupljeni kvorum itanja e morati da sadri veinu izmenjene kopije. Jasno je, da je metod kvorum
glasanja robusniji ako se uporedi sa replikacijom osnovne kopije.
Fizika organizacija memorije u okviru bloka ne utie na logiku organizaciju podatka. Ova injenica
moe pokrenuti problem tzv. pogrenog deljenja. Blok je premeten ili iskopiran ak i ako se samo mali
deo podataka u okviru bloka zahteva od strane nekog procesora. Ako je podatak iz drugog dela bloka
potreban drugom procesoru, DSM tretira blok kao deljeni blok i ako se ustvari podaci ne dele.
Uzimajui u obzir dva generalna tipa pristupa, read/write postoje 9 razliitih kombinacija od kojih se 4
opisuju na sledei nain:
1. Read-remote-write-remote
2. Read-migrate-write-migrate
3. Read-replicate-write-migrate
4. Read-replicate-write-replicate
Read-remote-write-remote
Ova strategija pristupa naziva se algoritam centralnog servera
- serveri su potencijalno usko grlo
- koherencija memorije je trivijalna
Read-migrate-write-migrate
Strategija se naziva algoritam prenosa. To je protokol jednog itaa i jednog pisaa.
- bolje izvaenje moe se postii "istraivanjem" programskog prostora
- problem je efekat ''block - bouncing'' a i moe da doe pogrenog deljenja (false sharing)
Read-replicate-write-migrate
Strategija pristupa se naziva algoritam ''read-replication''. To je protokol vie itaa jedan pisa.
Strategija koristi ''write-invalid'' protokol u sluaju pristupa za pisanje na ''read-replicated'' blok.
Read-replicate-write-replicate
Ova strategija pristupa predstavlja algoritam ''full replication'' (potpune replikacije). To je protokol vie
itaa vie pisaa.
-najee koristi ''write-update'' protokol zbog sluaja da se pristupa radi itanja ''read-replicated''
bloka.
-pretpostavlja da je grupa lanova konana (''copy set'' deljenog bloka podataka je poznat).
proces klijenta
server
autentifikacioni
autorizacioni
server
drugi serveri
zatite
zahtev
odgovor
RH
Hijerarhija
Uloga
U
Korisnici
R
Uloge
UA
Dodela
Korisnika
Prava pristupa
PA
Dodela
prava pristupa
10.6 Kriptografija
Kriptografija moe biti primenjena za autentifikaciju principala i potpisivanje poruka u distribuiranim
sistemima
Indetetii klijenata i servera se nazivaju principali.
principalu
Poruka autentifikacije: jedinica podataka koja nosi digitalni zapis tako da poruka ne moe biti poreknuta
imposter
eavesdro
p
repudiation
replay
imposter
forgery
C K: C, G,N
Ticket granting
server
3
4
Klijent
Server
2.
3.
C G: Authenticatorcg, Ticketcg
4.
5.
C S: Authenticatorcs, Ticketcs
virusa
prevara (RIP, ARP, RPC) - tj. izmiljeni paketi nekih protokola sa namerom korupcije mrenim
ureajima
peer process
peer process
socket(domen,tip,protokol)
socket(domen,tip,protokol)
bind(soket, adresa, )
bind(soket, adresa, )
sendto(soket, msg, )
recvfrom(soket, msg, )
recvfrom(soket, msg, )
sendto(soket, msg, )
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#define BUFSZ 256
main() {
int s, n, len;
char buf[BUFSZ];
close(s);
exit(0);
Klijent
socket(domen, tip,
protokol)
socket(domen,tip,protokol)
bind(soket, adresa, )
listen(soket)
rendezvous
connect(soket, )
newsock = accept(soket, )
fork()
read(newsock, )
write(newsock, )
/* Server */
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#define NSTRS 3
char *strs[NSTRS] = { "first\n", "second\n", "third\n" };
main() {
char c;
int fromlen;
int i, s, ns;
struct sockaddr_in sin, fsin;
request
reply
write(soket, )
read(soket, )
http://www.netbsd.org
portabilnost
FreeBSD http://www.freebsd.org
OpenBSD http://www.openbsd.org
Debian GNU/Linux
RedHat Linux
SuSE Linux
Slackware
mrena komunikacija samo kada se pristupa udaljenom fajlu ili imenovanom toku
NetBIOS API
-
12. MIKROKERNEL
Nedostaci Mikrokernela
Generalno, postoji jedan inherentan problem mikrokernela; oni su veoma neefikasni. Izvor ovih
nedostataka je direktno povezan sa velikim brojem primljenih poruka kao i velikim brojem razvodnika
poruka.
Na primer, ako je FTP servis obezbeen sa etiri servera; interfejs server, IP server, TCP server i FTP
server, onda su potrebne etiri poruke i etiri razvodnika poruka da bi se primio paket podataka. Osim
toga, ako je komunikacija izmeu procesa i njihov rasporeiva baziran na prenosu poruka, ova
optereenja mogu biti jo vea.
Da bi savladali ove nedostatke, mikrokerneli su dizajnirani da minimiziraju i interprocesnu komunikaciju i
optereenja razvodnicima prekida.
RC 4000
Mikrokernel RC 4000 je najraniji mikrokernel dizajniran kao vieprogramski sistem koji moe biti korien
kao osnova razliitih operativnih sistema. Definie apstrakciju sekvencionalnih procesa, komunikacionih
poruka i memorijskog dela. Osim toga, obezbeuje mehanizam za upravljanje procesom, interprocesnu
komunikaciju, proces rasporeivanja i ulazno-izlaznu manipulaciju.
Vana karakteristika sistema RC 4000 je hijerarhijska organizacija procesa koji su bazirani na relaciji
roditelj-dete. Ovo omoguuje jedan od sledeih pravila za kontrolu procesa i upravljanje resursom:
-
Kada se sistem startuje, sve resurse poseduje inicijalni operativni sistem. On moe kreirati druge procese
i dodeliti njima svoje resurse. Kada se dete proces zavri, svi njegovi resursi se vraaju roditelju.
roditelja, sauvati njegovu memoriju i koristiti je. Kasnije, kada dodatna memorija bude dostupna, on
moe uitati prethodni sadraj i nastaviti proces.
12.7 Ulaz/izlaz
Svi dostupni I/O ureaji su vieni kao spoljanji procesi. Da bi zapoeo I/O operaciju, proces formira
zahtev i alje ga odreenom spoljanjem procesu. Kada kernel primi zahtev, on startuje I/O operaciju.
Kada je to zavreno, kernel alje odgovor.
Ako je procesu potreban ekskluzivni pristup I/O ureaju, moe da iskoristi mehanizam rezervacije
spoljanjeg procesa. Kada je spoljanji proces rezervisan on odbija sve zahteve sem onih od procesa koji
ga je rezervisao. Kada je proces zavren, kernel oslobaa sve rezervacije koje je proces napravio.
12.8 U235
U235 je eksperimentalni mikrokernel, koji obezbeuje minimalni skup apstrakcija i mehanizama za
upravljanje procesima, upravljanje memorijom i upravljanje procesorom. Koristei ovo, sekvencionalni
procesi mogu primeniti veliki broj servisa razliite vrste, kvaliteta i dostupnosti. Na primer, oni mogu
primeniti distribuirani servis deljive memorije, daljinski vremenski servis ili servis rasporeivanja u
realnom vremenu.
Mogue je stvoriti razliite vrste operativnih sistema nad U235 microkernelom. Na primer, ako su
memorijski servis i proces rasporeivanja dostupni samo lokalnim procesima, i ako ovaj servis
zadovoljava zahteve u realnom vremenu, moe se napraviti centralizovan, operativni sistem koji radi u
realnom vremenu. Slino, ako su servisi dostupni udaljenim procesima, moe se napraviti mreni
operativni sistem.
Poto je komunikacija preko slanja poruka sinhrona, proces e biti blokiran ako pokua da primi poruku
koja jo nije poslata ili ako pokua da poalje poruku koju proces ne oekuje. Ove dodatne osobine mogu
biti iskoriene za procesnu sinhronizaciju.
kada proces uputi nemapiranu memorijsku stranu, on alje zahtev njegovom straniniku. On
sadri informacije o vrsti greke kao i adresu greke
kada straninik primi zahtev, analizira razlog stranine greke. Ako proces narui memorijsko
zatitno pravilo, straninik moe da uniti proces. Inae, straninik nalazi slobodnu memorijsku
stranu, puni je sa odgovarajuim podacima i smeta u memorijski prostor greaka procesa. Ako
straninik nema slobodnu memorijsku stranu, moe da premesti u ve korienu.
proces se izvrava dok se ne blokira, ili dok prati dodeljenu vremensku porciju. Kada se jedan od
ovih dogaaja desi proces alje poruku njegovom rasporeivau. Ona sadri razne informacije o
upotrebi procesora.
Ova apstrakcija i mehanizam se moe koristiti za implementaciju ogromnog broja politike rasporeivanja.
Na primer, sasvim je mogue imati skup procesa rasporeenih pomou politike svaki-sa-svakim i drugi
skup procesa rasporeenih pomou FIFO algoritma.
13 CORBA
Implementacija aplikacije zahteva od razvojnih timova da brinu o upravljanju deljivim resursima servera
(kao to je memorija ili procesorsko vreme), da brinu o upravljanju kontekstom ili rukovanju nitima (eng.
Thread).
To je krupan zahtev koji moe u mnogome usporiti razvoj aplikacije, jer bi se svaka transakcija
programirala. Takve transakcije se nazivaju programirane (eng. Programmatic transactions). Aplikacije
koje ih koriste su teke i skupe za odravanje. To je jedan od razloga zato je razvoj komponentnih
modela postao popularan i doiveo veliki razvoj poslednjih godina. Komponente kojima je implementiran
mehanizam izvravanja transakcija, na ovaj nain se mogu koristiti u pravljenju novih aplikacija.
Komponentni model omoguava lake izmene i odravanje. S druge strane skrauje se vreme potrebno
za implementaciju jer postoje razliite gotove komponente koje se mogu iskoristiti. Ovakav pristup
implementaciji transakcija se naziva deklarativnim pristupom. Programeri su osloboeni brige o realizaciji
mehanizama za kontrolu izvrenja transakcija.
Trenutno najpopularniji komponentni modeli su COM+ (eng. Component Object Model), EJB (eng.
Enterprise Java Beans) i CORBA.
kima itave arhitekture, koja spaja druge komponente. ORB obezbeuje komunikaciju izmeu
komponenti u distribuiranom okruenju razmenom zahteva i odgovora
Object Services
-
osnovni servis sa standardnim interfejsom, koji programeri mogu koristiti za rad sa distribuiranim
objektima (tj. servis adresiranja, razmena, istrajnost)
opte osobine
-
domen interfejsa
-
objekti aplikacije
-
K lije n t
S e rv e r
O dgovor
Z a h te v
P r o s le e n
z a h te v
P r o s le e n
odgovor
O b je c t R e q u s t B r o k r ( O R B )
Struktura ORB-a
Dinamiki
interfejs
zahteva
IDL
stubs
ORB
interfejs
IDL
skelet
ORB jezgo
ORB zavisni interfejs
Standardni interfejs
Prema-objektni tip generisanog interfejsa
Ovde moe biti viestukih objektnih adaptera
Dinamiki
interfejs
Objektni
skel
adapter
et
moduli
tipovi
interfejsi
operacije
atributi
izuzeci
Klijen
t
Apple
t
Klijent Application
Server
Prox
y
Proxy
resolve()
CORBA adresiranje Service
NamingContex
t
ObjectImpl
unbind(
bind( )
http://www.omg.org
CORBA
-
http://www.corba.org
Literatura
[1] Koncepti operativnih sistema,Ji afak, STU Bratislava, 1999.
[2] Konkurentno programiranje, folije, Marko Vukovi, FON 1984.
[3] Operativni sistemi i konkurentno programiranje, skripta,Boidar Radenkovi, FON 2000