Konkurentno i distribuirano programiranje

drugo dopunjeno izdanje - 2018
Autor kodinović Igor, Jovanović Zoran, Radivojević Zaharije
ISBN 978-86-7466-318-9
Strana: 542 Format: B5 Povez: Mek Masa: 900 g
Ključne reči Programiranje
Cena
1.760 rsd
1.672 rsd
O knjizi

Oblast konkurentnog i distribuiranog programiranja se već duži niz godina proučava u okviru redovne nastave na Elektrotehničkom fakultetu u Beogradu na odseku za računarsku tehniku i informatiku i na odseku za softversko inženjerstvo. Proučavanjem ove oblasti prikupljen je i analiziran veći broj praktičnih problema sinhronizacije i komunikacije. Ovi problemi su jedinstveni i omogućavaju generalizaciju čestih problema u praksi Svakom od problema nosi jedinstveno ime radi lakšeg praćenja, ali u upoređivanja sa postojećim rešenjima iz ove oblasti. Neki problemi su tako koncipirani da na šaljiv način obrade dosta složene mehanizme sinhronizacije i komunikacije.

Kao polazna osnova za formiranje ove knjige poslužila je knjiga "Konkurentno programiranje: Teorijske osnove sa zbirkom rešenih zadataka" autora Igora Ikodinovića i Zorana Jovanovića. Ta knjiga je dopunjena i proširena novim problemima i oblastima, uočene greške su ispravljene, ali je način izlaganja i obrade zadataka ostao isti.

Prvi deo knjige je posvećen konkurentnom programiranju pomoću deljenih promenljivih. Drugi deo knjige obuhvata oblast distribuiranog programiranja Treći deo je posvećen modelu programiranja korišćenjem virtuelnih prostora. Četvrti deo se bavi programskim niti ma, kao koordinacionom modelu koji se danas najčešće primenjuje kod pisanja konkurentnih programa. Peri deo knjige se odnosi na mrežno programiranje,

Programske paradigme su predstavljene na Jedan od tri načina: 1) korišćenjem postojećih programskih biblioteka i jezika za konkurentno programiranje, 2) proširivanjem sekvencijalnih programskih jezika odgovaraJućim sintaksnim elementima i 3) preko formalnih programskih modela. Izbor načina na koji su određene paradigme predstavljene bazi ran je pre svega na kriterijumima njihove jednostavnosti, razumljivosti i opštosti. U slučaju da praksa zahteva primenu odgovarajućih paradigmi korišćenjem nekih drugih implementacija od onih odabranih za njihov prikaz u knjizi, u većini slučajeva je moguće izvršiti direktnu sintaksnu translaciju. Razumevanje osnovnih koncepata iz knjige će čak i u slučajevima kada direktna sintaksna translacija nije moguća taj posao znatno olakšati.

Od postojećih programskih jezika za konkurentno programiranje u okviru ove knjige su korišćeni: Ada za demonstraciju mehanizma randevua, Java za demonstraciju koncepta programskih niti, kao konkretan primer implementacije monitora, i kao primer mrežnog programiranja koristeći razmenu poruka i udaljene pozive metoda i CONIC za demonstraciju paradigme asinhronog prosleđivanja poruka sa indirektnim imenovanjem procesa pomoću portova, U drugim slučajevima su korišćena proširenja postojećih sekvencijalnih programskih jezika: prošireni Pascal za demonstraciju koncepta semafora, uslovnih kritičnih regiona i monitora i C-Linda za demonstraciju programiranja pomoću virtuelnih prostora. Od formalnih programskih modela, BSP je korišćen za demonstraciju paradigme prosleđivanja poruka putem javnog emitovanja, a CSP za demonstraciju paradigme prosleđivanja poruka sa sinhronim slanjem i prijemom.

Jedan od problema kod upoznavanja sa oblašću konkurentnog i distribuiranog programiranja je što čitalac mora značajan deo svoje pažnje da usmeri na učenje sintakse i semantike vezanih za implementacije raznih paradigmi. Da bi se taj problem ublažio, u uvodnom delu svakog poglavlja je pored pregleda karakteristika odgovarajuće paradigme, dat i opis i analiza korišćene sintakse. Nakon uvodnog dela dati su i zadaci. Zadaci koji se nalaze na početku obično su izabrani tako da demonstriraju neke od glavnih osobina paradigme i da pokažu kako se pomoću nje rešavaju tipični problemi. Oni su posebno detaljno razmotreni, kako sa teorijskog tako i sa praktičnog aspekta, jer predstavljaju osnov za razumevanje materije u okviru poglavlja. Iza njih slede zadaci koji su po prirodi nešto složeniji i čija rešenja obično zahtevaju dublju i dugotrajniju analizu, sintetišući stečeno znanje na višem nivou i dajući adekvatnu predstavu o veličini i složenosti realnih problema. Nakon pojedinih zadataka i na kraju poglavlja se mogu naći i zadaci za samostalan rad. Preporučuje se njihoso rešavanje kao najbolja vežba za proveru usvojenog znanja.

Knjiga je pisana na ćirilici, što je doprinos očuvanju našeg jezika i pisma u oblasti gde su engleski jezik i latinica često dominantni. Nije se, međutim, moglo izbeći korišćenje specifičnih stranih stručnih izraza i naziva. U tom smislu korIŠćena terminologija odražava zatečeno stanje u ovoj oblasti kod nas. Gde je to bilo svrsishodno i moguće korišćeni su termini našeg jezika, uz navođenje odgovarajućih izraza koji se koriste u stranoj literaturi. Programi i primeri su pisani sa imenima promenljivih, procedura i programskim komentarima koji se oslanjaju na reči engleskog jezika, jer je to danas već standardna praksa uvedena zbog potrebe za komunikacijom u široj stručnoj javnosti Ovo ne bi trebalo da ima uticaja na razumljivost rešenja, s obzirom da su ona praćena detaljnim objašnjenjima ...

Detaljan opis

Uvod, 1
Programiranje pomoću deljenih promenljivih, 7
Semafori, 8

Problem kritične sekcije, 10
Proizvođač i potrošač: uslovna sinhronizacija procesa, 12
Proizvođači i potrošači: komunikacija pomoću kružnog bafera, 15
Filozofi za ručkom, 30
Čitaoci i pisci, 45
Nedeljivo emitovanje, 53
LJudožderi za ručkom, 60
Medved i pčele, 63
Odgajanje ptića, 65
Briga o deci, 68
Vožnja toboganom, 72
Izgradnja molekula vode, 74
Problem prelaska reke, 80
Studektska žurka, 83

Uslovni kritični regioni, 85
Problem kritičnne sekcije, 87
Proizvođač i potrošač sinhronizacija procesa, 89
Most koji ima samo jednu kolovoznu traku, 92
Filozofi za ručkom, 97
Analiza različitih varijanti rešenja problema čitalaca i pisaca, 101
Pretraga-umetanje-brisanje, 105
Deljeni račun, 109
Nervozni pušači, 113
Problem izbora, 118

Monitori, 121
Ulazak u avion, 124
Ulazak u školu, 125
Čitaoci i pisci, 126
Tajmer, 132
Kružni FIFO bafer, 134
Sakupljanje gajbica, 135
Pranje veša, 137
Filozofi za ručkom, 141
Nedeljiva emitovanje, 143
Alokacija resursa, 148

Distribuirano programiranje, 150
Uvod u programiranje prosleđivanjem poruka, 152

Sinhrona, asinhrona i uslovna komunikacija, 153
Javko emitovanje, 155
Otkrivanje topologije, 158
Filozofi za ručkom, 160
Vožnja toboganom, 164
Igra života, 166
Dvoelemektni bafer, 169
Komunikacija sa pouzdanim vezama, 171

Sinhrono prosleđivanje poruka (CSP), 173
Realizacija semafora, 177
Reformatiranje teksta (Conay-ov problem), 178
Prijem, obrada i slanje niza znakova, 179
Potprogrami: Ostatak pri deljenju, 181
Rekurzija: Faktorijel, 182
Epatoctenovo sito, 183
Množenje matrica, 185
Filozofi za ručkom, 187
Bikarko stablo, 190
Skupovi, 195
Izračukavanje integrala, 207
Izgradnja molekula vode, 209
Čitaoci i pisci, 211
Deljeni račun, 212

Javno emitovanje (BSP), 215
Stek, 218
Skup, 219
Filozofi za ručkom, 223
Radio taksi, 225
Goniometarski sistem, 227

Asinhrono prosleđivanje poruka (CONIC), 229
Bafer razdelnik, 232
Proizvođači i potrošači: komunikacija pomoću kružnog bafera, 233
Promena konfiguracije: zvezda u prsten, 234
Bidirekcioki prsten tipa FDDI, 235
Klijenti i setveri, 237
Obrada podataka, 242
Filozofi za ručkom, 244
Čitaoci i pisci, 246

Randevu (Ada), 248
Selektivna naredba, 253
Timeout opcija kod selektivne naredbe, 255
Realizacija randevua pomoću primitiva za slanje i prijem poruka, 256
Jednoelementni bafer _ problem korektnog završetka procesa, 259
Monitor, 261
Kružni FIFO bafer, 266
Proizvođači i potrošači: komukikacija pomoću kružnog bafera, 268
Čitaoci i pisci, 271
Filozofi za ručkom, 274
Nervozni pušači, 276

Virtuelni prostori, 280
Prostor torki (S.Linda), 281

Filozofi za ručkom, 283
Klijenti i serveri _ obrada zahteva po FIFO principu (slučaj sa jednim cepvepom), 284
Klijenti i serveri - obrada zahteva po FIFO principu (slučaj sa više servera), 286
Klijenti i serveri - selekcija servera po round robin redosledu, 288
Nervozni pušači, 291
Čitaoci i pisci, 295
Problem izbora, 297
Problem liftova, 298
Zajednički toalet, 301
Problem pijanih filozofa, zoz
Izračunavanje integrala, 305
Problem tela u gravitacionom polju, 307

Programske niti, 311
Java, 313

Semafor, 315
Proizvođač i potrošač: uslovna sinhronizacija procesa, 316
Proizvođač i potrošač, 320
Filozofi za ručkom, 322
Most koji ima samo jednu kolovoznu traku, 327
Čitaoci i pisci, 333
Berberin koji spava, 339
Vožnja toboganom, 342
Vožnje autobusom, 345
Briga o deci, 348
Javni toalet, 351
Deda Mraz, 355

Mrežno programiranje, 361
Java - Net, 362

Ćaskanje, 365
Klijent server, 368
Java - RMI, Z83
Deljeni račun, 387
Igra života, 391

Literatura, 395

Iz iste oblasti

Naučite programiranje
Steven Foote
korice/k000112d2b.jpg
Cena: 1.169 rsd
Testiranje softvera u praksi
Jovan Popović
korice/k000219d2b.jpg
Cena: 884 rsd
Digitalna obrada slike
Miodrag Popović
korice/k000222d2b.jpg
Cena: 1.254 rsd

NASLOV ...

Naslov
Autor
Cena: 12.356 rsd


USPEŠNO DODATO U KORPU


 
KORPA:
- Artikala: 0
- Iznos: 0 rsd