Perché il DSM per la memoria non strutturata non viene eseguito oggi?

7

Modifica: i commenti suggerivano che il DSM si attenuava semplicemente non essendo usato di recente. Quali sono stati i motivi per questo, quali sono gli svantaggi del DSM? La letteratura elenca molti aspetti positivi come programmi facili da portare a, no marshalling e quindi più veloce e così via, ma anche aspetti negativi come solo utilizzabili in ambienti omogenei a causa di problemi di endessia e dimensione delle parole. Quindi, perché la sincronizzazione dei dati viene eseguita da database e non da DSM? C'è stato un confronto o uno studio storico al tempo in cui entrambi i modi esistevano contemporaneamente?

Vecchio testo:

Da un po 'di tempo a questa parte, Djikstra ha inventato l'IPC tramite mutex che in qualche modo ha portato alla memoria condivisa (SHM) in multics (che afaik aveva prima necessario l'mmap). Poi sono sorte le reti di computer e DSM (SHM distribuito) è stato inventato per IPC tra computer. Quindi il DSM è fondamentalmente una regione di memoria non precostruita (come un SHM) che magicamente viene sincronizzato tra i computer senza che il programmatore di applicazioni agisca. Le implementazioni includono Treadmarks (non ufficialmente morto ora) e CRL .

Ma poi qualcuno ha pensato che questo non fosse il modo giusto per farlo e ha inventato Linda & tuplespaces. Le attuali implementazioni includono JavaSpaces e GigaSpaces. Qui, devi strutturare i tuoi dati in tuple. Altri modi per ottenere effetti simili possono essere l'uso di un database relazionale o di un archivio di valori-chiave come RIAK. Sebbene qualcuno possa obiettare, non li considero come DSM poiché non esiste una regione di memoria coerente in cui sia possibile inserire strutture di dati come preferisci, ma devono strutturare i dati che possono essere difficili se sono continui e l'amministrazione come il blocco non può essere fatto per parti hard coded (= tuple, ...).

Perché oggi non esiste un'implementazione DSM o non riesco a trovarne uno?

    
posta sinned 19.12.2012 - 13:59
fonte

3 risposte

4

DSM (Distributed Shared Memory) è un argomento di Computer Architecture piuttosto che di sviluppo software; tuttavia, ho la risposta:

Sommario

Il DSM non ha mai smesso di essere utilizzato. C'è una evidenza con sufficienti informazioni aggiuntive per dimostrare l'uso del DSM oggi e una ricerca attiva in quell'area.

Numeri

Solo per l'anno 2012 ci sono 173 nuovi documenti unici su IEEE Explore che descrivono varie applicazioni del DSM.

Risorse aggiuntive

Molti altri articoli recenti possono essere trovati in ACM Digital Biblioteca.

Documenti di esempio e implementazioni DSM

La memoria condivisa distribuita dal software e le sue varie implementazioni possono essere trovate qui , ovvero questo paper descrive una particolare implementazione SW DSM.

Un altro esempio di DSM paper .

    
risposta data 31.12.2012 - 23:25
fonte
1

Se capisco la tua domanda, è perché gli sviluppatori non usano DSM per creare applicazioni, preferendo altre astrazioni? Penso che sia a causa della complessità.

Penso davvero che la memoria condivisa, in generale, sia un'astrazione apparentemente semplice. Sembra facile da capire ma i particolari lo rendono complesso. Altre astrazioni, come il passaggio dei messaggi, sono in realtà più semplici da scrivere e distribuire. Quando ricevevo il mio Master, Linda era ancora di uso comune, ma la maggior parte delle persone che sviluppavano sistemi distribuiti utilizzavano una variazione del messaggio che passa o RPC.

Anche all'interno di un server, dove è disponibile memoria condivisa, gli sviluppatori spesso usano socket (socket Unix o loopback) per comunicare tra processi. Usando il passaggio dei messaggi, gli sviluppatori non devono preoccuparsi dell'accesso simultaneo, ottenere blocchi, cosa fare se un processo che blocca un blocco fallisce, ecc. Portare il messaggio che passa da una singola macchina a più macchine è abbastanza semplice. Tuttavia, come puoi vedere dal numero di documenti, non è così chiaro con DSM.

Ad un altro livello, il clustering che coinvolge risorse condivise è caduto in disgrazia. Ad esempio, il clustering di immagini a sistema singolo non è più un argomento caldo. La maggior parte dei sistemi operativi moderni ha adottato un approccio "condiviso-niente e stiamo bene con quello". Ci sono alcuni toolkit di cluster disponibili come componenti aggiuntivi per Linux, ma non è "mainstream". (Un sacco di componenti aggiuntivi per il clustering sono in realtà cluster di failover e non clustering in senso OpenVMS).

Il DSM non è abbandonato, morto o sepolto. Non sto dicendo che i problemi intorno al DSM siano insormontabili, o che sia troppo complesso da usare in ogni circostanza o che non sarà mai conveniente quanto il passaggio dei messaggi. Alcuni prodotti utilizzano il DSM per gestire il clustering. Penso che il server delle app WebLogic di Oracle possa utilizzare alcune aree di memoria condivisa per facilitare il loro clustering, ad esempio. Per lo meno, sembra che sia ancora terreno fertile per la ricerca se si decide di andare per un dottorato di ricerca.

    
risposta data 19.03.2013 - 03:27
fonte
0

È sufficiente rivedere il problema dei "Dining Philosophers" per comprendere le difficoltà incontrate con l'accesso distribuito alle risorse condivise. Come si sincronizza l'accesso simmetrico a una risorsa condivisa senza un orologio comune? Il motivo per cui l'architettura client / server è così popolare nei sistemi distribuiti è perché l'architettura introduce un nodo asimmetrico che fornisce accesso sincronizzato a una o più risorse condivise; quindi, evitando le condizioni di gara.

    
risposta data 18.03.2013 - 22:44
fonte

Leggi altre domande sui tag