Skip to main content

Cos'è la programmazione distribuita?

La programmazione distribuita è una forma di programmazione parallela o calcolo parallelo.La programmazione parallela prevede computer e unità di elaborazione all'interno dei computer che lavorano contemporaneamente su un problema particolare, come la previsione del tempo di Tomorrows.Le unità di elaborazione possono essere posizionate e coordinate o possono essere posizionate a parte.Quando le unità di elaborazione sono separate, si chiama programmazione distribuita.In tale scenario, molto spesso le unità di elaborazione differiscono l'una dall'altra e anche il sistema operativo e la configurazione della rete differiscono, rendendo particolarmente impegnativa la programmazione dell'attività di calcolo.

Quando si risolvono un problema in modo distribuito, il programma deve esseredivisi in modo che parti del programma possano eseguire sulle diverse unità di elaborazione;Queste parti sono spesso chiamate processi.I processi vengono eseguiti contemporaneamente ma devono comunicare input e risultati reciproci.Se i processi sono in esecuzione su hardware diverso, come una parte in esecuzione su Intel e un'altra in esecuzione sul sole, i programmi devono essere compilati e ottimizzati in modo diverso.

Un modo per risolvere un problema sufficientemente difficile è rompere le parti di input, e fare in modo che le diverse unità di elaborazione funzionino sulle diverse parti utilizzando lo stesso algoritmo, l'insieme di regole o passaggi per la risoluzione dei problemi.Ad esempio, per rompere un genoma di 10.000 coppie, le prime 1.000 coppie potrebbero essere assegnate alla prima unità di elaborazione, la seconda 1.000 coppie assegnate alla seconda unità di elaborazione e così via, tutte utilizzando lo stesso algoritmo.Con la programmazione distribuita, un vantaggio è che le diverse unità di elaborazione potrebbero eseguire diversi algoritmi per risolvere lo stesso problema, portando così a una soluzione significativamente migliore.Questo è simile alla risoluzione di un puzzle con alcune persone che mettono insieme il bordo mentre altri mettono insieme pezzi di un colore particolare. Il coordinamento dei processi di elaborazione distribuita può essere un compito particolarmente difficile.Alcune unità di elaborazione potrebbero fallire o possono essere interrotte per gestire altri lavori.I messaggi contenenti gli input o i risultati del calcolo potrebbero non raggiungere le loro destinazioni.Se i programmi sono scritti in un modo na #239, allora la perdita di un'unità di elaborazione o alcuni messaggi possono causare il blocco dell'intero set di computer.

Nella programmazione distribuita, un processo potrebbe essere il processo di controllo, essenzialmente ottenendoIl lavoro svolto dagli altri processi o, tutti i processi potrebbero funzionare in modo peer-to-peer senza alcun processo essendo il master.Alcuni esempi di problemi tentati con la programmazione distribuita includono l'analisi dei dati geologici per risorse come il petrolio, la modellizzazione di proteine e molecole biologiche, il cracking dei messaggi codificati e le simulazioni militari.Il progetto SETI per cercare una vita extra-terrestre intelligente dai messaggi radio ricevuti dalla Terra è forse uno degli esempi più noti.