Shared Memory
Dalam ilmu komputer , shared memory adalah memori yang
dapat secara bersamaan diakses oleh beberapa program dengan maksud untuk
menyediakan komunikasi antara mereka atau menghindari salinan berlebihan. Memori
bersama adalah cara yang efisien lewat data antara program. Tergantung
pada konteks, program dapat berjalan pada prosesor tunggal atau beberapa
prosesor yang terpisah.
Menggunakan memori untuk komunikasi di dalam satu program, misalnya
di antara beberapa threadnya, juga disebut sebagai memori bersama.
Pada Hardware
Dalam perangkat keras komputer, memori bersama mengacu
pada blok (biasanya besar) dari random access memory (RAM) yang dapat
diakses oleh beberapa yang berbeda unit central processing (CPU)
dalam sistem multiprosesor komputer .
Sistem memori bersama dapat menggunakan:
- Uniform
Memory Access (UMA): semua prosesor berbagi memori fisik secara merata.
- Non-uniform
Memory Access (NUMA): Memori waktu akses tergantung pada lokasi memori
relatif terhadap prosesor.
- Cache-only
Memory Architecture (COMA): Lokal memori untuk prosesor di setiap node
digunakan sebagai cache bukan sebagai memori utama yang sebenarnya.
Sebuah sistem Shared Memory relatif mudah diprogram karena
semua prosesor berbagi satu tampilan data dan komunikasi antar prosesor dapat
secepat memori akses ke lokasi yang sama. Masalah dengan sistem Shared
Memory adalah bahwa banyak CPU membutuhkan akses cepat untuk memori dan
kemungkinan akan menjadi memori cache , yang memiliki dua komplikasi:
Akses degradasi waktu: ketika beberapa prosesor mencoba
untuk mengakses lokasi memori yang sama menyebabkan pertengkaran.komputer shared
memory tidak bisa terukur dengan baik. Sebagian besar dari mereka memiliki
sepuluh atau lebih sedikit prosesor.
kurangnya koherensi Data:
setiap kali satu cache diperbarui
dengan informasi yang dapat digunakan oleh prosesor lainnya, perubahan perlu sesuai
dengan prosesor lainnya, jika prosesor yang berbeda akan bekerja dengan data
koheren. Seperti koherensi cache protokol, ketika mereka bekerja
dengan baik, memberikan sangat akses kinerja tinggi untuk informasi dibagi
antara beberapa prosesor. Di sisi lain, mereka kadang-kadang bisa menjadi
kelebihan beban dan menjadi hambatan kinerja.
Teknologi seperti Crossbar Switches , Omega
Network, HyperTransport atau front-side bus dapat digunakan
untuk meredam Bottle-neck.
Dalam kasus heterogen Sistem Arsitektur (arsitektur
prosesor yang mengintegrasikan berbagai jenis prosesor, seperti CPU dan GPU ,
dengan shared memory), yang Management Memory Unit (MMU) dari CPU dan Input-Output
Management Memory Unit (IOMMU) dari GPU harus berbagi karakteristik
tertentu, seperti lokasi bersama.
Alternatif untuk shared memory yang didistribusikan
memori dan didistribusikan memori bersama , masing-masing
memiliki satu set sama masalah.
Dalam perangkat lunak
komputer, shared memory adalah baik
metode inter-process communication (IPC),
yaitu cara bertukar data antara program yang berjalan pada waktu yang sama. Salah
satu proses akan membuat area di RAM yang proses lainnya
dapat mengakses;
metode melestarikan ruang
memori dengan mengarahkan akses ke apa yang biasanya akan menjadi salinan dari
sepotong data ke satu contoh sebaliknya, dengan menggunakan virtual memory pemetaan
atau dengan dukungan eksplisit dari program tersebut. Hal ini paling
sering digunakan untuk shared library dan XIP .
Karena kedua proses dapat
mengakses daerah memori bersama seperti memori kerja biasa, ini adalah cara
yang sangat cepat komunikasi (sebagai lawan mekanisme lain dari IPC seperti named
pipes , Unix Domain Socket atau CORBA ). Di sisi
lain, kurang terukur, seperti misalnya proses berkomunikasi harus berjalan pada
mesin yang sama (metode IPC lainnya, hanya domain Internet soket-tidak Unix
soket-bisa domain menggunakan jaringan komputer ), dan perawatan
harus diambil untuk menghindari masalah jika proses shared memory berjalan pada
CPU yang terpisah dan arsitektur yang mendasari tidak melakukan cache koheren .
IPC oleh memori bersama
yang digunakan misalnya untuk mentransfer gambar antara aplikasi dan the X
server pada sistem Unix, atau di dalam objek IStream dikembalikan oleh
CoMarshalInterThreadInterfaceInStream di library COM dalam Windows .
Dynamic Libraries umumnya
diadakan di memori sekali dan dipetakan ke beberapa proses, dan hanya dalam halaman
yang harus disesuaikan untuk proses individu (karena simbol diatasi secara
berbeda) yang digandakan, biasanya dengan mekanisme yang dikenal sebagai copy-on-write yang
transparan salinan halaman ketika menulis sebuah dicoba, dan kemudian
memungkinkan menulis berhasil di copy pribadi.
Sistem Berbagi Memori atau
yang disebut juga sebagai Shared Memory System merupakan salah satu cara
komunikasi antar proses dengan cara mengalokasikan suatu alamat memori untuk
dipakai berkomunikasi antar proses. Alamat dan besar alokasi memori yang
digunakan biasanya ditentukan oleh pembuat program. Pada metode ini, sistem
akan mengatur proses mana yang akan memakai memori pada waktu tertentu sehingga
pekerjaan dapat dilakukan secara efektif.