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?