Вы находитесь на странице: 1из 6

Distributed Shared Memory

DSM adalah sekumpulan komputer yang saling terhubung dan masing-masing memiliki
memory sendiri, namun tampak punya satu memori tunggal.

Membuat memori utama dari sekumpulan komputer yang seolah-olah terlihat sebagai memori
tunggal dengan satu ruang alamat tunggal.

1. DSM
Memerlukan mekanisme untuk mengirim data ke processor tapi mekanisme ini
disembunyikan dari programmer.

Keuntungan DSM :
a. Sistemnya scalable : dapat dikembangkan
b. Menyembunyikan message passing : tidak secara eksplisit mengirim pesan antar proses
c. Dapat menggunakan ekstensi sederhana untuk pemrograman sekuensial
d. Dapat menangani database yang kompleks dan besar tanpa replikasi atau mengirim data
ke proses.

Kekurangan DSM :

a. Mungkin terjadi masalah pada kinerja/ lebih lambat dalam mengaksesnya.


b. Perlu menyediakan perlindungan terhadap penggunakan data bersama (kunci, dll)
c. Memerlukan programmer untuk mengontrol sehingga menambah beban programmer
d. Kinerja masalah yang tidak teratur mungkin menyulitkan.

2. Implementasi DSM
a. Hardware
Special network interfaces dan cache coherence circuits ditambahkan untuk membuat
referensi memori ke lokasi remote seperti ke lokasi memori lokal. Contoh: Mesin SMP.
b. Software
Memodifikasi kernel sistem operasi. Menambahkan software layer diantara OS dan
aplikasi.
1) Software DSM Systems
Ada tiga cara untuk menerapkan perangkat lunak yang menggunakan memori
bersama secara terdistribusi:
Page based : menggunakan sistem memori virtual
Processor tidak bisa mengakses memori processor lain sehingga membutuhkan
virtual memori. Virtual memori digunakan untuk merujuk data di antara komputer
ketika page yang direferensi tidak disimpan di lokal. Yang ditransfer seluruh page.

Shared variable approach : menggunakan routines untuk mengakses shared


variable. Hanya variable yang dapat dibagi yang bisa ditransfer.
Object based : shared data dalam konsep berorientasi objek. Shared data diakses
melalui metode dari objek tersebut.

Software dalam Sistem DSM


Trademarks : contoh dari page based DSM system.
JIAJIA : contoh dari shared variable
Adsmith : contoh dari object based dengan C++

c. Mengelola Shared Data

Ada beberapa cara yang digunakan untuk membuat processor mengakses shared data :
1) Central server
Central server bertanggung jawab membaca dan menulis semua routine.
Masalah yang ditimbulkan : bottleneck (beban server terlalu banyak bisa
menyebabkan overload)
Solusi : multiple server
2) Penggandaan data
Memungkinkan akses bersama dari processor yang berbeda.
Masalah yang ditimbulkan : pengelolaan data bersama membutuhkan kebijakan
3) Multiple Reader/ Single Writer
Ketika writer mengubah data, terdapat dua pilihan :
a) Update policy : diberikan informasi mengenai perubahan tersebut. Kerugian :
meningkatkan beban kerja
b) Invalidate policy : diberikan informasi bahwa data tidak valid
4) Multiple Reader/ Multiple Writer
d. Multiple Reader/ Single Writer Policy in a Page-Based System
Suatu halaman menyimpan lebih dari satu lokasi variable. A dan B dapat mengubah hal
yang berbeda pada halaman yang sama. Masalah : konsistensi.
3. Achieving Consistent Memory in a DSM System
a. Consistency Models
1) Strict consistency : processor harus tau kalau ada perubahan.

2) Sequential consistency : eksukusi pada waktu yang sama dianggap sebagai


interleaving dari program tunggal.
3) Relaxed consistency : write ditunda untuk terlihat untuk prosessor lain untuk
mengurangi jumlah pesan. Jenis relaxed consistency :
a) Weak consistency : programmer harus menggunakan operasi synchonization
ketika diperlukan.
b) Release consistency : programmer harus menggunakan operasi synchronization
yang spesifik, seperti acquire dan release. Acquire : digunakan sebelum shared
variable dibaca (lock operation). Release : digunakan setelah shared variable
telah ditulis/ubah (unlock operation).

c) Lazy release consistency : melakukan update ketika diminta.


4. Distributed Shared Memory Programming Primitives
4 primitive dasar :
a. Pembuatan proses/ thread (dan terminasi)
dsm_spawn(filename, num_process); //untuk memulai proses baru
dsm_wait(); //meminta proses menunggu child processes
b. Pembuatan data bersama
dsm_malloc(); //membuat ruang memori
dsm_free(); //ruang memori dibebaskan
c. Mutual-exclusion synchronization (mengontrol akses ke data bersama)
dsm_lock(lock1); //variabel lock
dsm_refresh(sum); //mendapatkan nilai sum
sum++;
dms_flush(sum); //mengupdate nilai sum yang baru
dsm_unlock(lock1);
d. Proses/thread dan event synchronization.
Dua tipe yang harus disediakan : global synchronization dan process-pair synchronization
dsm_barrier(identifier); //untuk memberikan identifier pada barrier

Feature to Improve Performance


Overlapping computation with communication
dsm_prefetch(sum);
Memberi tahu sistem untuk mengambil variable karena akan segera dibutuhkan.
Sama dengan speculative loads yang digunakan di processor/ algoritma cache.
Reducing the number of messanges
dsm_aquire(sum);
*sum++;
dsm_release(sum);
Old way
dsm_lock(lock1);
dsm_refresh(sum);
*sum++;
dms_flush(sum);
5. Pemrograman DSM
Menggunakan konsep yang sama dengan pemrograman shared memory.
Message passing disembunyikan dari pengguna dan perimbangan inefisien tambahan.
Harus mengubah kode pada variable yang diminta sebelum menggunakannya.
6. Implementasi Sistem DSM Sederhana
a. User Interface Menggunakan Class dan Metode
Menggunakan metode OO dengan Bahasa CC++ terdapat class wrapper, sebagai berikut:
SharedInteger sum = new SharedInteger(); //kelas ini dapat memg-extend dari class
Integer untuk menyediakan beberapa metode dibawah ini.
sum.lock()
sum.refresh()
sum++
sum.flush()
sum.unlock()
b. Implementasi Basic Shared-Variable
a. Centralized Server

b. Multiple Server

c. Multiple Readers/ Single Writer


d. Migrating the Owner

Вам также может понравиться