15
21. Paralelizam na nivou zadataka Na nivou zadataka razlukujemo dve kategorije paralelizma. Ove kategorije se razlikuju po tome kakav odnos postoji izmedju zadataka. Odnos može biti: peer-to-peer (ravnoprvan sa ravnopravnim) klijent-server Kod paralelnih peer-to-peer sistema konkurentna aktivnost se može ostvariti koristeći: i) grubu granularnost – na nivou procesa, i ii) finu granularnost – na nivou thread-ova Kod paralelnih peer-to-peer sistema, na nivou procesa (vidi sliku 1), svaki proces ima svoji sopstveni izdvojeni adresni prostor. Da bi komunicirao sa drugim procesom, proces mora poslati poruku odredišnom procesu(ima), a ovaj mora eksplicitno da primi poruku. Za slanje poruka koristi se nekoliko tipova protokola. Poruke se mogu baferovati, biti asinhrone, i karakterisati se velikom latentnošću (dugo vreme odziva), kakav je slučaj sa Message Passing Interface (MPI). One mogu koristiti streaming protokol male-latentnosti (krakto vreme odziva). Protokol se može implementirati pomoću redova čekanja, FIFO bafera, ili pomuću valid-bit polusinhrone komunikacije. Takodje, poruke se mogu izvesti kao prenos čvrsto-sinhronizovanih nizova podataka (streams), kod kojih se kašnjenja odredjuju u trenutku kompilacije, a pre-kompajliraju se u taktno- sinhronizovane procese. Ovakav tip protokola standardno se koristi kod DSP aplikacija. Slika 1. Paralelizam na nivou procesa Šta je to konkuretnost Za dva dogadjaja kažemo da su konkurentna ako se oni izvršavaju u okviru istog vremenskog intervala. Za dva ili veći broj zadataka koji se izvršavaju u okviru istog vremenskog intervala kaže se da se izvršavaju konkurentno. U principu, konkuretnost, u strogom smislu reči, ne odnosi se samo i na egzaktno isti vremenski trenutak. Tako na primer, dva zadatka se mogu javiti konkurentno u okviru iste sekunde ali se pri tome svaki zadatak može izvršavati u okviru različitih delova sekunde. Prvi zadatak se može izvršavati u okviru prvih 100 ms, a zatim pauzirati ( idle), nakon toga drugi početi narednih 100 ms pa nakon toga i on pauzirati, i td. Pri ovome svaki zadatak može alternativno da prelazi iz stanja izvršenja u stanje pauza. Ono što je sada veoma bitno je to da

21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

21. Paralelizam na nivou zadataka Na nivou zadataka razlukujemo dve kategorije paralelizma. Ove kategorije se razlikuju po tome kakav odnos postoji izmedju zadataka. Odnos može biti:

• peer-to-peer (ravnoprvan sa ravnopravnim)

• klijent-server Kod paralelnih peer-to-peer sistema konkurentna aktivnost se može ostvariti koristeći:

i) grubu granularnost – na nivou procesa, i ii) finu granularnost – na nivou thread-ova

Kod paralelnih peer-to-peer sistema, na nivou procesa (vidi sliku 1), svaki proces ima svoji sopstveni izdvojeni adresni prostor. Da bi komunicirao sa drugim procesom, proces mora poslati poruku odredišnom procesu(ima), a ovaj mora eksplicitno da primi poruku. Za slanje poruka koristi se nekoliko tipova protokola. Poruke se mogu baferovati, biti asinhrone, i karakterisati se velikom latentnošću (dugo vreme odziva), kakav je slučaj sa Message Passing Interface (MPI). One mogu koristiti streaming protokol male-latentnosti (krakto vreme odziva). Protokol se može implementirati pomoću redova čekanja, FIFO bafera, ili pomuću valid-bit polusinhrone komunikacije. Takodje, poruke se mogu izvesti kao prenos čvrsto-sinhronizovanih nizova podataka (streams), kod kojih se kašnjenja odredjuju u trenutku kompilacije, a pre-kompajliraju se u taktno-sinhronizovane procese. Ovakav tip protokola standardno se koristi kod DSP aplikacija.

Slika 1. Paralelizam na nivou procesa

Šta je to konkuretnost Za dva dogadjaja kažemo da su konkurentna ako se oni izvršavaju u okviru istog vremenskog intervala. Za dva ili veći broj zadataka koji se izvršavaju u okviru istog vremenskog intervala kaže se da se izvršavaju konkurentno. U principu, konkuretnost, u strogom smislu reči, ne odnosi se samo i na egzaktno isti vremenski trenutak. Tako na primer, dva zadatka se mogu javiti konkurentno u okviru iste sekunde ali se pri tome svaki zadatak može izvršavati u okviru različitih delova sekunde. Prvi zadatak se može izvršavati u okviru prvih 100 ms, a zatim pauzirati (idle), nakon toga drugi početi narednih 100 ms pa nakon toga i on pauzirati, i td. Pri ovome svaki zadatak može alternativno da prelazi iz stanja izvršenja u stanje pauza. Ono što je sada veoma bitno je to da

Page 2: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

period od 1 s korisniku može izgledati dovoljno kratak period tako da je njegov opšti utisak kao da se zadaci izvršavaju simultano (istovremeno). Paralelno i distribuirano programiranje Konkurentne programske tehnike se koriste sa ciljem da obezbede računarskom programu uslove da on može da obavi posao u okviru istog vremenskog perioda ili vremenskog intervala. Umesto da se kreira program koji će obavljati samo jedan zadatak za zadato vreme, program se deli na takav način da se neki od zadataka može izvršavati konkurentno. Paralelno programiranje kao i distribuirano programiranje su dva osnovna pristupa za ostvarivanje konkurentnosti u softveru. To su dve različite programske paradigme koje se ponekad prepliću. Paralelne programske tehnike dedeljuju posao koga treba da obavi program dvama ili većem broji procesora koji su locirani u okviru jedinstvenog fizičkog- ili jedinstvenog virtuelnog- računara. Distribuirane programske tehnike dodeljuju posao koga treba da obavi program dvama ili većem broju procesora- pri čemu procesi moraju ali i ne moraju egzistirati u okviru istog računara. To znači da se delovi distribuiranog programa često izvršavaju na različitim računarima koji su umreženi, ili se, u najmanju ruku, izvršavaju na različitim procesima. Na slici 2 prikazane su tipične arhitekture paralelnog i distribuiranog programa.

a) paralelna aplikacija

b) distribuirana aplikacija

Slika 2. Tipične arhitekture za paralelni i distribuirani program Programi koji su u cilju iskorišćenja prednosti koje nudi paralelizam korektno kreirani mogu se izvršavati brže u odnosu na sekvencijalne programe, što je sa aspekta tržišta veoma važno. Kod ovakvih situacija pojam brže se izjednačava sa pojmom bolje. Najjednostavniji metod pomoću koga se mogu ostvariti osnovni koncepti paralelnog programiranja se zaniva na PRAM (Parallel Random

Page 3: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

Access Machine) modelu. PRAM je pojednostavljeni teoretski model kod koga postoje n procesora, označenih kao P1, P2, .., Pn, pri čemu svaki procesor deli globalnu memoriju (vidi sliku 3).

. . .

Slika 3. Jednostavni PRAM

Svi procesori imaju pravo pristupa čitanja (read) i upisa (write) nad deljivom memorijom. Pretpostavka je da svaki procesor može paralelno da obavi različite aritmetičkre i logičke operacije. Takodje, svaki od procesora sa slike x2 može da pristupa globalnoj deljivoj memoriji u toku neke vremenske jedinice, a da pri tome njegov pristup ne bude prekidan. PRAM model je poslužio kao referenca u fazi klasifikacije računarskih sistema i ukazao je na to kako procesori mogu da pristupaju memoriji. Pojednostavljenu šemu za klasifikaciju paralelnih računarskih sistema dao je M.J. Flynn. Shodno Flynn-ovoj podeli paralelni računari se dele na SIMD i MIMD. Distribuirane programske tehnike omogućavaju softveru da manipuliše sa resursima lociranih na Internetu, nekoj mreži tipa intranet, ili na mrežama drugog tipa. Distribuirano programiranje obično uključuje mrežno-programiranje u jednoj ili drugoj formi. To znači da, program jednog računara povezan na mreži može da zahteva neki hardverski ili softverski resurs koji pripada drugom računaru priključen na istoj meži ili na nekoj udaljenoj mreži. Kod distribuiranog programiranja jedan program može da razmenjuje informaciju sa drugim programom preko proizvoljnog tipa mrežne konekcije, počev od modemske veze pa sve do satelitske veze. Ključna osobina distribuiranog programa je ta što su programi podeljeni na delove. Obično ovi delovi se implementiraju kao posebni programi. Ovakvi programi tipično se izvršavaju na zasebnim računarima, a programski delovi medjusobno komuniciraju preko mreže. Distribuirane programske tehnike obezbedjuju pristup resursima koji su geografski razudjeni. Tako na primer, distribuirani program podeljen na Web-server komponentu i Web-klijent komponentu se može izvršavati na dva izdvojena računara, pri čemu Web-server komponenta može biti locirana u Srbiji, a Web-klijent komponenta da se nalazi u Kanadi. Nivoi paralelizma – mogućnosti izvedbe Paralelno i distribuirano programiranje predstavljaju izazovi koji su tipični za nekoliko različitih oblasti aplikacija. Za uspešnu implementaciju ovih tehnika neophodno je koristiti nove pristupe u projektovanju softvera i arhitektura. Mnogo od osnovnih postavki koje važe za sekvenijalni model programiranja ne mogu se direktno i realno primeniti na paralelno i distribuirano programiranje. Četiri primarna koordinaciona problema koja, kod paralelnog i distribuiranog programiranja, treba uspešno da se reše odnose se na:

a) izvodjenje korektnih tokova podataka putem eliminacije trke-podataka (data race): ako dva ili veći broj zadataka pokuša istovremeno da promeni deljivi podatak, a da pri tome konačna vrednost podatka zavisi od toga koji je zadatak sa tim podatkom prvi manipulisao, tada kažemo da se javio uslov-trke (race condition). Kada dva ili veći broj zadataka pokuša

Page 4: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

istovremeno da ažurira isti podatak (resurs) tada se takav uslov-trke naziva trka-podataka (data-race).

b) beskonačno odlaganje (indefinite postponement): planiranje-izvršenja (scheduling) kog koga jedan ili veći broj zadataka čeka da se javi neki dogadjaj ili uslov može da stvori veliki broj problema. Vremensko čekanje da se neki dogadjaj ili uslov, desi u datom trenutku nalaže da se pažljivo predvidi (sagleda) komunikacija izmedju zadataka. Kada dva ili veći broj zadataka čeka na deo komunikacije pre nego što nastavi sa izvršenjem, a do te komunikacije nikad i ne dolazi, dodje kasnije, ili bude nekompletna, tada se ti zadaci neće nikad izvršiti. Ako jedan ili veći broj zadatak čeka na neki uslov ili dogadjaj koji se neće nikad desiti tada se ova situacija naziva beskonačno-odlaganje.

c) samrtni-zagrljaj (deadlock): pedstavlja drugi tip zamke-čekanja. Ovakva situacija se javlja kada dva, ili veći broj zadataka, čeka na podatke koje treba da preda prvi zadatak, a drugi zadatak čeka na podatke koje treba da preda prvi zadatak. Kod ovakvih situacija, za oba zadatka kažemo da su angažovani i nalaze se u samrtnom-zagrljaju (deadlock ili deadly embrace).

d) problemi sa komuniciranjem: najveći broj paralelnih i distribuiranih računarskih sistema sastoje se od heterogenih računara povezanih u nekoj mreži. Procesori koji čine sistem često imaju različite arhitekture, manipulišu sa rečima različitog obima, i koriste različite mašinske jezike. Heterogena priroda sistema unosi veći broj problema koji se pre svega ogledaju u korišćenju deljivih podataka, načina i brzine komuniciranja, i dr. Osnovni mehanizmi koji se koriste za komunikaciju izmedju procesa se baziraju na korišćenju :

n mogućnosti blokiranja i deblokiranja fajlova, n FIFO memorija, redova čekanja, bafera, n deljive memorije i slanje poruka, n soketa, i n semafora

Svaki od nabrojanih inter-procesorskih komunikacionih (Inter- Process Communication – IPC) mehanizama ima svoje prednosti i nedostatke, trapove, i zamke, na koje projektanti softvera mora da obrate pažnju kada žele da ostvare efikasnu i pouzdanu komunikaciju izmedju procesa. Sa druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad nazvani lightweight processes) se lakše realizuje jer thread-ovi dele zajednički adresni prostor. To znači da svaki thread u programu može lakše, u odnosu na proces, da prenese parametre (pass parameters), dobije povratnu vrednost funkcije, i pristupi globalnim podacima. Ipak ako komunikacija nije korektno izvedena, tada efekti koji su tipični za samrtni-zagrljaj, beskonačno-odlaganje, i trka-podataka, mogu da se jave. Primena paralelizma Sagledajmo sada na koji se način paralelizam može primeniti na nivou programa jedinstvenog-računara (single computer) kao i na nivou paralelne procesosrske konfiguracije. U okviru jedinstvenog-računarskog programa moguće je identifikovati tri nivoa paralelizma (vidi sliku 4).

Page 5: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

Slika 4. Tri nivoa paralelizma koja su moguća u okviru programa koji se izvršava na jedinstvenom

(single) računaru Na slici 5 prikazano je kako se tri nivoa paralelizma kombinuju u okviru osnovnih paralelnih procesorskih konfiguracija

Page 6: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

...

... ... ...

...

Slika 5. Tri nivoa paralelizma kombinovani sa tri osnovne paralelne konfiguracije Napomena: PVM- paralelna virtuelna mašina

Šta je to proces Postoje brojne, uslovno kazano, različite definicije pojma proces koje su medjusobno ravnopravne po svom značaju. Ukazaćemo samo na neke od njih:

1. proces je jedinični posao kreiran od strane operativnog sistema,

2. program u izvršenju se često u apstraktnom smislu reči naziva proces, i

Page 7: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

3. proces je deo programa u izvršenju. Dok je program samo pasivna kolekija, proces je akcija koja izvršava te instrukcije.

Važno je napomenuti da procesi i programi nije neophodno da budu ekvivalentni. U odredjenim situacijama proces ne mora biti pridružen pojedinom programu. Procesi su jednostavne celine (delovi) operativnog sistema dok su programi delovi njihovih kreatora (programera). Operativni sistem kakav je recimo Unix u stanju je da manipuliše sa nekoliko stotina konkurentnih procesa. Kada se proces izvršava operativni sistem dodeljuje procesu procesor. Proces izvršava svoje instrukcije za odredjeni vremenski period. Izvršenje jednog procesa može biti istisnuto (preemted) od strane drugog procesa, kome se sada dodeljuje procesor. Planer-izvršenja (scheduler), predstavlja deo operativnog sistema, upravlja komutacijom izmedju koda jednog procesa, kôda korisnika, ili sistemskog kôda ka kôdu drugog procesa, pružajući na taj način šansu svakom procesu da izvršava svoje instrukcije. Postoje dva tipa procesa, korisnički (user) i sistemski (system). Procesi koji izvršavaju sistemski kod nazivamo sistemske procese.Sistemski procesi administriraju radom celog sistema. Oni obavljaju zadatke tipa dodela (alokacija) memorije, zamena stranica (page swaping) izmedju glavne i sekundarne memorije, proveravaju stanje i upravljaju radom U/I uredjaja, i dr. Korisnički procesi izvršavaju svoj opstveni kôd, pa zbog toga kazemo da se tada proces nalazi u korisničkom režimu rada (user mode). U korisničkom režimu rada proces ne može da izvršava odredjene privilegovane mašinske instrukcije. Kada korisnički proces pozove sistemsku funkciju, kakva je recimo read(),write(),open(), i dr, ona može da izvršava instrukcije priviligovanog tipa. Pri tome, izvršenje korisničkog procesa se zaustavlja dok se sistemski poziv ne kompletira. Sve dok se izvršenje sistemskog poziva ne završi upravljanje procesorom je pod nadležnošću kernela. U tom trenutku za korisnički proces kažemo da se nalazi u kernel režimu rada, i ne može biti istisnut od strane drugih korisničkih procesa. Procesi poseduju svoje karakteristike na osnovu kojih se vrši njihova identifikacija i odredjuje njihovo ponašanje u toku izvršenja. Kernel je zadužen za održavanje strukture podatak o obavljanje sistemskih funkcija koje omogućavaju korisniku da pristupi ovoj informaciji. Neka informacija se smešta u PCB (Process Control Block). Informacija smeštena u PCB-u opisuje proces za potrebe operativnog sistema. Ova informacija se koristi od strane operstivnog sistema za upravljanje procesom. Kada operativni sistem komutira izmedju procesa koji tekuće koristi CPU ka drgom procesu, on smešta tekuće stanje procesa koji se izvršava i njegov kontekst u memorijsku oblast PCB-a sa ciljem da narednog puta restartuje izvršenje procesa kada se on dodeli VCPU-u. PCB se čita i menja od strane različitih modula operativnog sistema. Moduli tipa nadgledanje-performansi operativnog sistema, planirsne izvršenja zadataka, dodela resursa, obrada prekida, i dr., mogu modifikovati PCB. PCB sadrži sledeću informaciju:

n tekuće stanje i prioritet procesa, n identifikatore procesa, roditelja i naslednika, n pokazivale na alocirane resurse, n pokazivače na proces roditelj i naslednike, n procesor koji će biti korišćen od strane procesora, n kontrolne i statusne registre, i n pokazivače magacina

Adresni prostor procesa se deli na tri logička seegmenta: text (programski kôd), data (podaci), i stack (magacin). Na slici 6 prikazan je izgled (layout) procesa.

Page 8: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

Slika 6. Adresni prostor procesa se deli na segmente text, data, i stack, što predstavlja i

logički layout procesa U toku svog izvršenja proces menja svoje stanje. Stanje procesa se odnosi na tekući uslov ili status procesa. Kod Unix okruženja proces se može naći u jedno od sledećih stanja (vidi sliku 7).

n running (izvršenje), n ready (spreman za izvršenje), n zombied (izvršen), n sleeping (blokiran), i n stoped (zaustavljen)

Slika 7. Stanja procesa i prelazi kod Unix/Linux okruženja

Page 9: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

Šta je to thread Kao što smo većnapomenuli svaki proces ima svoj adresni prostor i resurse. S obzorom da se svaki program smešta u izdvojeni adresni prostor, komunikacija izmedju rutina predstavlja jedan problem koga treba rešiti. Interprocesorske komunikacione tehnike kakve su pipe-ovi, FIFO-si, i dr., su potrebni radi ostvarivanja korektne komunikacije izmedju delova programa koji se izvršavaju kao posebne celine. Ponekad je poželjno da se u okviru jedinstvenog programa, u datom trenutku, obavi više od jedan zadatak, a da se pri tome program ne deli na veći broj programa. Kod ovakvih situacija koriste se thread-ovi. Thread-ovi omogućavaju jedinstvenom (single) programu da poseduje delove koji se mogu konkurentno izvršavati, pri čemu svaki deo ima pristup istim promenljivim, podacima, i adresnom prostoru. Thread-ovi se mogu zamisliti kao mini-programi u okviru programa, koji omogućavaju da se glavni programski tok upravljanja podeli na veći broj tokova upravljanja koji se konkuretno izvršavaju. Kod Unix ili Linux procesa thread predstavlja niz izvršivog kôda koji se planira radi izvršenja. Svi procesi imaju main ili primarni thread. Proces sa većim brojem thread-ova se naziva multithreaded (vidi sliku 8).

Slika 8. Tokovi upravljanja multithreaded procesa

Svi thread-ovi u okviru istog procesa egzistiraju u istom adresnom prostoru. Svi resursi koji pripadaju procesu deljivi su izmedju thread-ova. Thread-ovi ne poseduju bilo kakve resurse. Bili koji resursi koji poseduju proces su deljivi izmedju svih thread-ova tog procesa. Thread-ovi dele fajl-deskriptore i fajl pokazivače, ali svaki thread ima svoj sopstveni PC, skup registara, stanje, i magacin. Thread magacini su u okviru segmenta magacina procesa u kome se izvršavaju. Segment podataka procesa je deljiv sa segmentom podataka thread-a. Thread može da čita i upisuje u memorijske lokacije svog procesa, a main thread može da pristupa timpodacima. Kada main thread upiše podatke u memoriju, bilo koji od thread-ova može da pristupi tim podacima. Thread-ovi mogu, u okviru istog procesa, kreirati druge thread-ove. Svi thread-ovi u okviru jedinstvenog procesa se nazivaju peers. Thread-ovi mogu takodje suspendovati, nastaviti izvršenje, i završiti izvršenje drugih thread-ova u okviru svog procesa. Thraed-ovi su izvršne celine koje se nezavisno takmiče da koriste procesor sa drugim thread-ovima istog ili različitih procesa. Kod multiprocesorskog sistema, thread-ovi koji pripadaju istom procesu mogu se simultano izvršavati na različitim procesorima. Kada se thread-ovi, u okviru istog procesa, izvršavaju konkurentno tada je taj proces multithreaded.

Page 10: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

Multithread procesi Kod tradicionalnog operativnog sistema svaki proces se nezavisno izvršava koristeći jedinstveni adresni prostor i jedinstvenu nit upravljanja za svaki poces. Kod distribuiranih i paralelnih okruženja procesima dozvoljeno je da se istovremeno izvršava veći broj thread-ova. (Thread-ove ponekad nazivamo lightweight procese). Svaki thread se karakteriše po tome što ima svoji sopstveni brojač i magacin, ali i po tome što deli adresni prostor i globalne promenljive sa srodnim (bratskim) thread-ovima (vidi sliku 9).

magacin

thread 1

deljiva memorija

CPU globalne

promenljive

PC

magacin

thread 2

PC

magacin

thread 3

PC

magacin

thread 4

PC

proces

Slika 9. Multithread procesi

Kod ne-paralelnih kao i kod paralelnih okruženja koja nemaju implementiranu deljivu memoriju thread-ovi dele isti CPU. Ne postoji zaštitna barijera kod deljivog adresnog prostora koja se koristi za razdvajanje thread-ova koji pripadaju istom procesu tipa roditelj. Svakom thread-u koji se nalazi u fazi izvršenja dozvoljno je da se izvršava kvazi-pralelno, čime se povećava propusnost u radu sistema kaoi iskorišćenost dostupnih resursa. Kao i procesi, tako i thread-ovi mogu da kreiraju thread-ove tipa naslednik. Postoje nekoliko standardnih pristupa koji se koriste za struktuiranje thread-ova koji pripadaju istom procesu tipa roditelj (vidi sliku 10), a to su:

• specijalist paradigma: svi thread-ovi su jednaki i mogu da implementiraju svoje sopstvene servise u odnosu na proces roditelj. Drugim rečima, svi thread-ovi mogu, ali nisu potrebni da bi se obavio jedinstveni specijalozovani servis. Zahtevin za opsluživanje svakog thread-a potiću od procesa roditelj.

• klijent-server paradigma: kod klijent-server paradigme klijent prihvata sve zahteve od procesa roditelj ili thread roditelj, a zatim predaje zahtev odgovarajućem thread serveru. Ova struktura se zasniva na klijent-server paradigmi koja se koristi kod distribuiranih sistema.

Page 11: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

• paradigma linija-za-asembliranje: u ovom slučaju, izlaz jednog thread procesa pedstavlja ulaz za naredni thread proces. Ulaz u inicijalni thread je ulaz u proces dok je izlaz konačnog thread-a predstavlja izlaz procesa. Ova struktura se bazira na asemblerskoj liniji kod paralelne softverske paradigme.

a) specijalist paradigma

b) klijent/server paradigma

c) paradigma linija za asembliranje

Slika 10. Multithread paradigme

Page 12: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

Razlike i sličnosti između thread-ova i procesa U Tabeli 1 prikazane su osnovne razlike i sličnosti između thread-ova i procesa. sličnosti razlike oba imaju id, skup registara, stanje, prioritet, i politiku planiranja izvršenja

thread-ovi dele adresni prostor procesa koji ih je kreirao; procesi imaju svoju sopstvenu adresu

oba imaju atribute koji opisuju entitete koji se odnose na OS

thread-ovi imaju direktni pristup segmentu podataka svog procesa; procesi imaju svoj sopstveni segment podataka od procesa roditelji

oba imaju informacioni blok thread-ovi mogu direktno komunicirati sa drugim thread-ovima; procesi mora da koriste interprocesorske komunikacije kako bi mogli da komuniciraju sa srodnim (bratskim) procesima

oba dele resurse sa procesom roditelja

thread-ovi skoro da nemaju režijsko vreme (overhead) pri komutaciji; režijsko vreme procesa je veliko

oba funkcionišu kao nezavisni entiteti u odnosu na proces roditelj

novi thread-ovi se lako kreiraju; novi procesi zahtevaju dupliciranje procesa roditelja

kreator može da obavi neko upravljanje nad thread-om ili procesom

thread-ovi mogu da ostvare značajnu kontrolu nad thread-ovima istog procesa; procesi mogu da imaju kontrolu samo nad procesima koji su naslednici tog procesa

oba mogu menjati svoje atribute promene usmerene ka main thread-u (poništavanje, promene prioriteta itd.) imaju uticaj na ponašanje drugih thread-ova tog procesa; promene kod procesa roditelj nemaju uticaj (efekat) na procese naslednike

oba mogu da kreiraju nove resurse

nijedan ne može da pristupi resursima drugog procesa

Prednosti thread-ova su sledeće:

• manji broj sistemskih resursa je potreban da se obavi kontekst komutacija • povećava se propusnost aplikacije • za ostvarivanje komunikacionog mehanizma između zadataka nije potreban specijalan

mehanizam • pojednostavljuju programsku strukturu

Nedostaci thread-ova su sledeći:

• thread-ovi mogu lako da "zagade" adresni prostor procesa • thread-ovi zahtevaju sinhronizaciju kod realizacije konkurentnog pristupa memoriji radi

čitanja/upisa • jedan thread može da uništi (ukine) ceo proces ili program • thread-ovi mogu egzistirati samo u okviru jedinstvenog (single) procesa i kao takvi nisu

reusable.

Page 13: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

Klijent-server paralelni model Kod klijent-server paralelnog modela klijent može da:

a) zahteva opsluživanje od strane servera; ili b) klijent može da zahteva od servera da klijent bude taj koji će obavljati posao.

Kod prvog slučaja, prikazanog na levoj strani slike 11, računarski resurs je centralizovan na strani servera, dok kod drugog, desna strana slike 11, klijenti su ti koji obavljaju zadatke tipa intenzivno izračunavanje, a server uglavnom se koristi kao mesto-skladištenja u kome se čuvaju (pamte) opisi zadataka.

Slika 11. Klijent-server model

Rekonfigurabilna logika može da odigra veliku ulogu kod obavljanja paralelnih aktivnosti velike granularnosti. Tako na primer, kod procesiranja tipa peer-to-peer uobičajeno je da hardverski procesi kkomuniciraju sa softverskim procesima. Ovakav scenario posebno je tipičan za embedded procesiranje, gde hardver može manipulisati sa akvizicijom podataka i front-end procesiranjem, dok softver vrši analizu podataka i donosi odluke. U najvećem broju slučajeva, hardversko-softverske komunikacije, se ostvaruju preko memorijskih bafera ili preko komunikacioninh-prenosnih puteva, nazvanih stream communications, (vidi sliku 12).

Page 14: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

Slika 12. Stream communication

U konkretnom slučaju, hardverski procesi Process 1 i Process 2 komuniciraju preko hardversko-hardverske veze (stream). Process 2 komunicira sa Process 3 preko hardversko-softverske veze, dok Process 3 komunicira sa Process 4 preko softversko-hardverske veze. Za potrebe komuniciranja, rekonfigurabilni sistemi uglavnom koriste statičke, aplikaciono specifične kanale, a ne dinamičke veze (streams). Razlog za ovo je taj što su statičko definisani komunikacioni putevi veoma efikasni kada se implementiraju na FPGA čipove. Rekonfigurabilni računari nalaze široku primenu i kod procesiranja tipa klijent-server. Računarsko rekonfigurabilni čvorovi mogu manipulisati podacima, obavljati računski intenzivne

Page 15: 21. Paralelizam na nivou zadatakaes.elfak.ni.ac.rs/es/Materijal/Pog.21-Paralelizam-na-nivou-zadataka.pdf · druge strane, komunikacija izmedju dva ilivećeg broja thread-ova (ponekad

zadatke, i drugo. Tipično ovakve aplikacije srećemo u kriptografiji, bio-informatici, ili sigurnosnom radu mreže. Rekonfigurabilni čvorovi se izvode kao čvorovi kod sistema za akviziciju podataka (vidi sliku 13). Kod ovakvog scenarija, veći broj izvora podataka napaja (snabdeva podacima) rekonfigurabilne logičke čvorove koji preprocesiraju podatke i snabdevaju druge računarske čvorove u mreži.

Slika 13. Akvizicija podataka