Programimi i Shpërndarë

Programimi I Shpërndar

Programimi I shpërndarë është një fushë e kompjuterikës që studion sistemet e shpërndara. Një sistem I shpërndarë përbëhet nga kompjutera të shumtë autonom që komunikojnë ndërmjet një rrjeti kompjuterik. Kompjuterët ndërveprojnë me njëri-tjetrin për të arritur një qëllim të përbashkët. Një program kompjuterik që shkon në një sistem të shpërndarë quhet një programim I shpërndar, procesi I shkrimit të programeve të tilla është programimi I shpërndarë.
Programimi I shpërndar gjithashtu I referohet përdorimit të sistemve të shpërndara për të zgjidhur problemet kompjuterike. Në programimin e shpërndarë një problem është I ndarë në shumë detyra, secila prej tyre zgjidhet nga një ose më shumë kompjutera.
Hyrje
Fjala shpërndarje ka terma si “Sistem I shpërndarë” , “Programim I shpërndarë” dhe “Algoritm I shpërndarë”. Në ditët e sotme këta terma përdorën për një kuptim më të gjerë, duke iu referruar proceseve autonome që kompjuterët të bashkëveprojnë me njëri tjetrin duke dërguar mesazhe.
Nuk ka ndonjë përkufizim të vetëm për sistemin e shpërndarë, vetitë e mëposhtme janë definon rekuizitat që zakonisht përdoren:
 Ka disa entitete autonome kompjuterike, secila prej tyre ka memorien e saj lokale.
 Entitetet komunikojnë me njëri tjetrin duke dërguar mesazhe.
në këtë artikull subjektet kompjuterike janë quajtur kompjuterë ose nyje. Çdo kompjuteë mundë të ketë përdoruesin e tij për nevojat individuale , dhe qëllimi I sistemit të shpërndarë është që të ofrojë shërbimet e komunikimt të përdoruesve.
Rekuizitat tjera tipike të sistemeve të shpërndara janë si në vijim:
 Sistemi duhet të tolerojë dështimet në kompjuter individual.
 Struktura e sistemit nuk është e njohur më parë , sistemi mund të përbëhet nga lloje të ndryshmë të kompjuterëve dhe rrjetave, dhe sistemi mund të ndryshoj gjatë ekzekutimit të një programi të shpërndarë.
 Çdo kompjuter ka vetëm një pamje të kufizuar, jo të plotë të sistemit. Çdo kpmpjuter mundë të dijë vetëm një pjesë të hyrave.
 Programimi I Shpërndarë dhe Paralel 
Sistemet e shpërndara jane një rrjet operimi me kompjuterë që kanë procesorë të njejtë. Termat “Programimi në grup” , “Programimi Paralel” dhe “Programimi I shpërndarë” kanë shumë të përbashkëta , dhe nuk ndonjë dallim në mes tyre. I njejti sistem mund te karakterizohet edhe si paralel edhe si I shpërndarë, Procesorë në një sistem tipik të shpërndarë bëhen njëkohësisht në mënyrë paralele. Sistemi “Shpërndar” dhe “Paralel” klasifikohen kalsifikohen duke përdorur kriteret e mëposhtme.
 Në programimim paralel, të gjithë përdoruesit kanë qasje ë një kujtesë të përbashkët. Kujtesa e përbashkët përdoret për të shkëmbyer informacione në mes përpunuesve.
 Në programimin e shpërndarë, çdo procesor ka memorien e saj private. Informacionet shkëmbehen duke dërguar mesazhe në mes përdoruesve.
	 Skeda:Distributed-parallel.svg

 Aplikimi 
Ka dy arsye për përdorimin e sistemeve të shpërndara. Së pari natyra e kërkesës mund të kërkojë përdorimin e një rrjeti të komunikimit që lidh disa kompjutera.
Së dyti, ka shumë raste në të cilat përdorimi I një kompjuteri të vetëm do të jetë I mundur në parim, por përdorimi I një sistemi të shpërndarë është I dobishëm për arsye praktike.
Shembuj të sistemeve të shpërndara dhe aplikimi në informatikë:
 Telekomunikacion 
 Rrjete telefonike dhe rrejete celular
 Rrjetet kompjuteriek si Interneti
 Rrjetet Wireless
 Algortime
 Aplikimi ne Rrjete 
 WWW dhe rrjetat peer-to-peer
 Lojra online multiplayer dhe komunitete virtual
 Shpërndarjen e bazaës të dhënave dhe sistemet e menaxhimit të bazës së të dhënave të shpërndara
 File System Netëork
 Shpërndarjen dhe përpunimin e informacioneve si sistemet bankare dhe sisteme te rezervimit ajror.
 Kontrolli në kohë reale 
 Sistemet e kontrollit Avioneve
 Sistemeve të kontrollit industrial
 Njëhsimi paralel 
 Shkenca kompjuterike, duke përfshirë punën në grupe dhe rrjete
 Pasqyrimin e shpërndarë në grafikë kompjuterike

 Modelet 

 Algoritmet paralele në memorien e përbashkët 
 Të gjithë kompjuterat të kenë qasje në një kujtesë të përbashkët.
 Një model teorik është në makinat paralele(PRAM). Modeli klasik PRAM merr akses asinkron në kujtesën e përbashkët.
 Një model që është më afër Botës reale makinat multiprocesorike makina e tillë është (CAS)

 Algoritmet paralele message-passing 
 Dizajnuesit e Algoritmeve zgjedhin strukturën e rrjetit, si dhe programimin e ekzekutuar nga çdo kompjuter.
 Modele të qarqeve logjike dhe klasifikim e rrjetave. Një qark logjikë mundë të shihet si një rrjet kompjuterike, secila portë është një kompjuter që drejton një program I thjesht kompjuterik.
 Algoritmet shpërndarëse ne message-passing 
 Dizajnuesit e Algoritmeve zgjedhin programin kompjuterik. Të gjitha programet egzekutohen nga një kompjuter. Sistemi duhet të punojë në rregull pa marrë parasysh strykturën e rrjetit.
 Një model i përdorur zakonisht është një grafik menjë makinë të fundme-shtet në nyje Në rastin e algoritmeve të shpërndara, problemet kompjuterikë janë të lidhura në mënyrë tipike për grafikët.
 Algoritmet e Centralizuara 
 Grafika G është është I enkoduar si një string, dhe stringu I jepet si një input në një kompjuter.

 Algoritmi Paralel 
 Përsëri G grafika është enkoduar si një string. Çdo kompjuter mund të përqendrohet në një pjesë të kompjuterit për të ngjyrosur atë pjesë.
 Fokusi kryesorë është për një performancë te lartë të llogaritjeve që shfrytëzon fuqinë e kompjuterave të shumtë në menyrë paralele.
 Algoritmi I Shpërndarë 
 Grafika G është një strukturë e rrjetave kompjuterike është një kompjuter për çdo nyje G dhe një link komunikimi për secilin skaj G. fillimisht çdo kompjuter di vetëm për fqinjin e saj , kompjuterat duhet të shkëmbejn mesazhe me njëri-tjetrin për të zbuluar më shumë rreth strukturë së G. Secili kompjuter duhet të prodhojë ngjyrën e vet të prodhimit. Fokusi kryesor është në koordinimin e funksioneve e një sistemi arbitrar shpërndarë.

 Referimet 

Librat
 Andrews, Gregory R. (2000), Foundations of Multithreaded, Parallel, and Distributed Programming,"Addison-Wesley", ISBN 0-201-35752-6.

 "Arora, Sanjeev"; Barak, Boaz (2009), Computational Complexity – A Modern Approach, "Cambridge", ISBN 978-0-521-42426-4.
 "Cormen, Thomas H."; "Leiserson, Charles E."; "Rivest, Ronald L. (1990)", "Introduction to Algorithms" (1st ed.),"MIT Press", ISBN 0-262-03141-8.
 "Dolev", Shlomi (2000), Self-Stabilization, "MIT Press", ISBN 0-262-04178-2.
 Elmasri, Ramez; "Navathe, Shamkant B." (2000), Fundamentals of Database Systems (3rd ed.), "Addison–Wesley", ISBN 0-201-54263-3.
 Ghosh, Sukumar (2007), Distributed Systems – An Algorithmic Approach, Chapman & Hall/CRC, ISBN 978-1-58488-564-1.
 "Lynch", Nancy A. (1996), Distributed Algorithms, "Morgan Kaufmann", ISBN 1-55860-348-4.
 "Herlihy, Maurice P."; "Shavit, Nir N." (2008), The Art of Multiprocessor Programming, "Morgan Kaufmann", ISBN 0-12-370591-6.
 "Papadimitriou, Christos H." (1994), Computational Complexity, "Addison–Wesley", ISBN 0-201-53082-1.
 "Peleg, David" (2000), Distributed Computing: A Locality-Sensitive Approach, SIAM, ISBN 0-89871-464-8.
Artikujt
 Cole, Richard; "Vishkin, Uzi" (1986), "Deterministic coin tossing with applications to optimal parallel list ranking", Information and Control 70 (1): 32–53, doi:10.1016/S0019-9958(86)80023-7.
 Keidar, Idit (2008), "Distributed computing column 32 – The year in review", ACM SIGACT News 39 (4): 53–54, doi:10.1145/1466390.1466402.
 "Linial, Nathan" (1992), "Locality in distributed graph algorithms", SIAM Journal on Computing 21 (1): 193–201, doi:10.1137/0221015.
 "Naor, Moni"; "Stockmeyer, Larry" (1995), "What can be computed locally?", SIAM Journal on Computing 24 (6): 1259–1277, doi:10.1137/S0097539793254571.
Website
 Godfrey, Bill (2002). "A primer on distributed computing".
 Peter, Ian (2004). "Ian Peter's History of the Internet". Retrieved 2009-08-04.