430 likes | 587 Views
Nivo korištenja komunikacije Software-a. Maja Petekić. Centralna jedinica za obradu podataka. u prethodnom dijelu pažnja je bila posvećena pohranjivanju podataka i organizaciji same memorije u računalu
E N D
Nivo korištenja komunikacije Software-a Maja Petekić
u prethodnom dijelu pažnja je bila posvećena pohranjivanju podataka i organizaciji same memorije u računalu • jednom kada su podaci pohranjeni, stroj mora moći manipulirati sa tim podacima u skladu sa naredbama algoritma • stroj, dakle mora imati ugrađenu sposobnost: • izvođenja operacija i • koordiniranja redoslijedom izvođenja operacija • ovi zadaci se izvode u CPU-u, pa je glavna tema ovog dijela usko vezana uz način funkcioniranja centralne jedinice za obradu podataka (central processing unit – CPU) • procesi na različitim CPU-ima na višestrukom računalu komuniciraju međusobnim slanjem poruka
kada je u jednostavnijem obliku, prolaznost poruke ovisi o tekućem procesu • drugim riječima, operacijski sustav se brine za prenošenje i primanje poruka, te procedure biblioteke matematičkih funkcija, omogućujući prolaznost tih označenih poziva k tekućem procesu • u sofisticiranijem obliku, prolaznost poruke nije vidljiva korisnicima, kako bi daleka komunikacija izgledala poput postupka pozivanja
službe, koje se brinu o komunikaciji, mogu biti vratićene na dva poziva-jedan za slanje poruka i jedan za primanje poruka. Poziv za slanje poruke je oblika: • send(dest, &mptr); dok je poziv za primanje poruke oblika: • receive(addr, &mptr); • pošiljaoc šalje poruku, naglašenu sa mptr, do sustava identifikacije, dest, i uzrokuje blokadu poziva, koja traje sve dok se poruka ne pošalje • kasnije ponovo nastaje blokada poziva, koja traje do primitka poruke • nakon toga se poruka, naglašena sa mptr, odbija te se poziv odblokira • parametar addr označava adresu na kojoj primatelj sluša
saznajmo sada nešto o blokiranim pozivima • kada proces poziva naredbu send, tada mora specificirati odredište i tip slanja na određenu lokaciju • nakon slanja poruke proces slanja se blokira • operacija popraćena pozivom naredbe send nije izvršena sve dok poruka ne biva u potpunosti poslana • na sličan način, pozivom naredbe receive ne dobiva se odgovor sve dok poruka u potpunosti ne pristigne, makar to potrajalo satima • u nekim sustavima primatelj poruke može specificirati od koga želi primiti poruku, te se u tom slučaju dolazak ostalih poruka blokira
osim blokiranih poziva postoje i neblokirani pozivi • ako je send neblokiran, tada pozivatelj odmah ima nadzor nad pozivom, još prije slanja poruke • prednost ove sheme je ta što proces slanja može nastaviti računanje paralelno sa slanjem poruke, za razliku od beskorisnih procesa koji sadrže CPU • izbor između blokiranih i neblokiranih poziva je normalno napravljen sustavom uređivanja, premda u nekoliko sustava oba su sustava dostupna i korisnici mogu odabrati koji im više odgovara • provedena korist ponuđenih neblokiranih osnova je izjednačena sa ozbiljnim nedostatkom: pošiljaoc ne može promijeniti tip poruke dok se poruka ne pošalje • proces slanja ne zna kada je slanje gotovo, tako da nikada ne zna kada je sigurno moguće promijeniti tip poruke
tako su mogući izbori na strani s koje se šalje: • blokirana pošiljka (CPU nezaposlen tijekom slanja poruke) • neblokirana pošiljka s kopijom (CPU gubi vrijeme na posebno kopiranje) • neblokirana pošiljka s prekidom (otežava rad) • kopija na zapisu (posebna kopija vjerojatno treba zaključak (kraj)) • u normalnim uvjetima, prvi izbor je najbolji, naročito ako su višestruke veze dostupne, jer u tom slučaju, dok jednu blokiranu vezu pokušavamo poslati, ostale veze mogu nastaviti s radom • to, također, ne zahtijeva nadgledanje niti jedne jezgre • poruka će obično brže stići ako ne zahtijevamo njenu kopiju
otkako se model prolaska poruke brine za praktičan put do strukture mnogostrukog operacijskog sustava računala, to se odrazilo na jednu nepopravljivu pogrešku: osnovni obrazac oko kojeg je izgrađena sva komunikacija je ulazno/izlaznog tipa • procedure send i recieve su fundamentalno povezane u ulazno/izlaznom procesu i mnogi ljudi vjeruju da je ulazno/izlazni proces pogrešan model programiranja • kada proces na računalu 1 poziva proceduru na računalu 2, proces zvanja na računalu 1 je suspendiran, te izvršenje pozvane procedure uzima računalo 2 • Informacija može biti poslana od pošiljaoca do primatelja u parametrima i može se vratiti rezultatu procedure • niti jedna prolazna poruka niti ulazno/izlazni proces nisu vidljivi programeru • ta tehnika je poznata kao RPC(Remote Procedure Call) i postala je bazom velike vrijednosti multiračunalnog software-a
ideja o RPC je stvorena da bi se napravio nepristupačan postupak pozivanja, koji izgleda kao moguć kao lokalni poziv • u jednostavnijem obliku, da bismo pozvali nepristupačnu proceduru, posjećeni program mora biti graničan s malom bibliotekom procedure, zvanom posjećeni ostatak, što reprezentira proceduru servera na posjećenoj adresi • slično, server je graničan s procedurom zvanom serverski ostatak • te procedure skrivaju činjenicu da procedura poziva posjetitelja na server nije lokalna
pravi koraci nastanka RPC-a prikazani su slikom • prvi korak je kada posjetitelj poziva posjećeni ostatak • taj poziv je lokalna procedura poziva, u kojoj su parametri potisnuti na stog na normalnom putu • drugi korak je kada posjećeni ostatak stavi parametre u jednu poruku i osposobi sustav poziva za slanje poruke • stavljanje parametara nazvano je svrstavanje • treći korak je kada jezgra šalje poruku od posjetiteljevog računala do serverskog računala • četvrti korak je kada jezgra prolazi dolazećim paketom do serverskog ostatka • konačno, peti korak je kada serverski ostatak poziva serversku proceduru
iako RPC ima svoju privlačnost, mnogi programeri još preferiraju model podijeljene memorije i vole ju koristiti čak i na višestrukom računalu • moguće je realno očuvati iluziju dijeljene memorije, čak i kada zapravo ne postoji, koristeći tehniku zvanu DSM (Distributes Shared Memory) • uz DSM, svaka stranica je locirana u jednoj memoriji • svako računalo ima svoju vlastitu virtualnu memoriju i svoje vlastite tablice stranice • kada CPU koristi load ili store na stranici koju ne posjeduje, tada nailazi na zamku operacijskog sustava • operacijski sustav tada locira stranicu i momentalno upita CPU o zadržavanju na nedefiniranom području stranice, te ga šalje preko međusobno povezanih mreža • operacijski sustav samo zadovoljava nedostatke stranice iz nepristupačnog RAM-a umijesto iz lokalnog diska
razlika između stvarne podijeljene memorije i DSM-a je ilustrirana na slikama • na slici (a) možemo vidjeti pravi višestruki procesor sa fizikalno podijeljenom memorijom, koju provodi operacijski sustav • na slici (b) možemo vidjeti DSM, koji provodi operacijski sustav • slika (c) prikazuje drugu fomu podijeljene memorije, koju su proveli viši nivoi softwarea • kada CPU upućuje na adrese koje nisu lokalne, javlja se zamka, te DSM software dohvaća stranicu koja sadrži adresu i ponovo pokreće pogrešnu naredbu, koja sada uspješno završava • ovaj koncept je ilustriran slikom (a) za adresni prostor sa 16 stranica i 4 čvora, od kojih je svaki sposoban držati 4 stranice
u multiprocesoru, svi procesi pripadaju istoj memoriji • kada CPU dovrši svoj zadatak, odabire proces i pokreće ga • u početku, svi procesi su potencijalni kandidati • na višestrukom računalu situacija je malo drugačija • svaki čvor ima svoju memoriju i svoj sustav procesa • CPU 1 se ne može odmah odlučiti za pokretanje procesa lociranog na čvoru 4 bez da prethodno dobije rezultat rada • ta razlika znači da je raspoređivanje na višestrukim računalima jednostavnije, ali razvrstavanje procesa na čvorove je mnogo važnije • raspoređivanje na višestrukom računalu je slična raspoređivanju multiprocesora, ali se ne pojavljuju svi formirani algoritmi • najjednostavniji algoritam multiprocesora ne radi bilo kako, svaki proces se može pokrenuti samo na CPU-u i ondje se locira
širokopisna klasa algoritama je postojeća za sustave procesa s poznatim CPU-om i uvjetima memorije, te poznate matrice, dajući srednju vrijednost sadržaja između svakog para u procesima • ako je broj procesa veći od broja CPU-a, k, svaki proces će se morati dodijeliti pojedinim CPU-ima. • ideja je ta da se provede ta dodijela kao minimiziranje sadržaja mreže • sustav može biti predstavljen kao opterećen graf, kojem je svaki vrh proces i svaki luk predstavlja tok poruka između dva procesa • matematički, problem tada dovodi do pronalaska načina podjele, graf rastavlja na k podgrafova (tj. CPU i uvjeti memorije ispod nekih granica za svaki podgraf)
za svaku mogućnost ograničavanja, lukovi koji su u potpunosti unutar samog podgrafa predstavljaju komunikaciju među strojevima i mogu biti ignorirani. • lukovi koji idu od podgrafa do drugog reprezenta sadržaja mreže • cilj je tada pronaći podijelu koja minimizira sadržaj mreže dok susreće sva ograničenja • na slici je prikazan sustav od 9 procesa, od A do I, sa svim lukovima označenim sa značajnom komunikacijom između ta dva procesa • na slici (a) imamo podijeljeni graf s procesima A, E i G na čvoru 1, procesima B, F i H na čvoru 2 i procesima C, D i I na čvoru 3 • potpun sadržaj mreže je suma lukova presjećenih isjećcima (isprekidane linije), ili 30 jedinica • na slici (b) imamo drugačiju podjelu koja ima samo 28 jedinica sadržaja mreže • uzimajući da se susreće sva memorija i ograničenja na CPU-u, ovo je bolji izbor jer zahtijeva manje komunikacije
jedan algoritam govori da kada je proces kreiran, pokreće se na čvoru koji ga kreira najmanje tako da ne bude preopterećen • metrika preopterećenosti može uključiti mnogo procesa, prevelikih za skup radnji, ili neke druge metrike • ako je preopterećen, čvor na sreću odabire drugi čvor i upita ga koliko je opterećen (koristeći istu metriku) • ako je taj utvrđena opterećenost čvora na neku prihvatljivu vrijednost, novi proces je poslat tamo, a ako ne, za probu se odabire drugi stroj • isprobajanje ne ide u nedogled • ako nije pronađen prikladno pravi račun uz N proba, algoritam završava i proces se pokreće na polazećem stroju • ideja je da se opterećeni čvorovi pokušaju osloboditi preopterećenog posla
taj je sustav sličan višestrukim računalima u u kojima svaki čvor ima svoju privatnu memoriju, bez dijeljene fizičke memorije u sustavu • distribuirani sustavi su slabije povezani nego višestruka računala • čvorovi višestrukog računala su normalno u zasebnim prostorijama pa mogu komunicirati putem predane brze mreže, za razliku od čvorova distribuiranog sustava koji mogu brzo kružiti po svijetu • svi čvorovi višestrukog računala pokreću iste operacijske sustave, dijele pojedine sustave podataka, te su pod istom administracijom, za razliku od čvorova distribuiranog sustava koji mogu pokrenuti različite operacijske sustave, od kojih svaki ima svoj sustav podataka, te mogu biti pod različitim administracijama
distribuirani sustavi su građeni na vrhu računalnih mreža • mreže dolaze u dva oblika: • LANs (Local Area Networks), koji čuvaju građu • WANs (Wide Area Networks), koji može biti raširen po gradu, državi, ili čak po svijetu • najvažniji dio LAN-a je Ethernet • za naš primjer WAN, pogledat ćemo na Internet, makar samo tehnički, Internet nije samo jedna mreža, nego skup tisuća separiranih mreža • kako god, za naše pretpostavke, dovoljno je misliti da je to sve WAN
klasični Ethernet, koji je opisan kao IEEE Standard 802.3, posjeduje uloženi kabel na koji je priključen veliki broj računala • kabel se zove Ethernet, u literaturi se može pronaći kao luminiferous ether, kroz koji prolazi elektromagnetska radijacija • Ethernet ima maksimalnu duljinu kabela i maksimalan broj računala koji su povezani • u prvoj verziji Etherneta, računalo se spajalo na kabel bušeći rupu u sredini kabela i pričvrščujući žicom • to se zvalo vampire tap(vampirski čep)
kako bi poslao paket na Ethernet, računalo prvo sluša kabel da vidi da li neko drugo računalo obavlja slanje • ako ne, odmah kreće sa slanjem paketa, koji sadrži kratko zaglavlje veličine od 0 do 1500 byteova • ako je kabel zauzet, računalo jednostavno pričeka dok se trenutno započeto slanje ne izvrši, te tada počinje sa slanjem • ako dva računala počinju sa slanjem istodobno, obje radnje se odbacuju, te moraju pričekati od 0 do T sec, te tada pokušavaju ponovo • ako je više računala u pianju, tada moraju pričekati od 0 do 2T sec, te tada pokušavaju ponovo poslati paket • taj algoritam se zove binaryexponential backoff (binarno eksponencijalno odbacivanje)
Internet je izveden iz ARPANET-a, experimentalnog paketa, uključujući mrežu, koje je pronašao U.S. Dept. Of Defense Advanced Research Projects Agency • oživio je u prosincu 1969. na tri računala u Californiji i jedanom u Utahu • dizajniran je sa tolerantnim greškama mreže koje prate kretanje vojske, čak i pri nuklearnim ekplozijama na višestrukim dijelovima mreže
ARPANET je brzo rastao 1970-ih, na tisuće računala. Zatim paket radio mreža, mreža satelita, tisuće Etherneta • Internet je postignut na dvije vrste računala, hosts (PC-i, laptopi, serveri, ...) i routers, posebna računala koja prihvaćaju pristigle pakete na jednu od mnogih pristiglih linija i šalje ih na njihov put s mnogim odlazećim linijama • routeri su povezani velikim mrežama
sve mreže imaju visoko specijalizirana pravila za to koje se poruke smiju poslati, te koji se odgovori mogu primiti • npr. u normalnim okolnostima, kada je poruka poslana na odredište, to odredište zahtijeva slanje potvrde o dospijeću poruke • u drugim okolnostima potvrda se ne očekuje • set pravila po kojima partikularna računala komuniciraju, naziva se protokol • postoje mnogi protokoli, uključujući i router-router protokol, host-host protokol, i druge • pogledajmo kako su povezani protokoli
sva je sila iz Etherneta spojena na Internet • proces korisnika generira poruku i pravi sustav poziva za slanje na prethodno izgrađenu TPC (Transmision Control Protocol) vezu • jezgra protokola upisuje zaglavlje TPC-a, a zatim i zaglavlje IP-a • tada odlazi do pokretača Etherneta, koji upisujezaglavlje Etherneta izravno u paket na router Etherneta • taj router stavlja paket u Internet
kada dva ili više korisnika dijele isti dokument, potrebno je odrediti semantike čitanja i pisanja kako bi izbjegli problem • u procesorskom sustavu semantika normalno navodi kada nakon sustava pozivanja read slijedi sustav pozivanja write, read vraća vrijednost tek pročitanog dokumenta (slika (a)) • slika (b) prikazuje pravilo: “Promjene na otvorenom dokumentu su dopuštene samo procesu koji ga je napravio. Samo kada je dokument zatvoren, dopuštene su promjene drugim procesima. ”