Shared memory
From Free net encyclopedia
←Older revision | Newer revision→
In computer hardware, shared memory refers to a (typically) large block of random access memory that can be accessed by several different central processing units (CPUs) in a multiple-processor computer system. The issue with shared memory systems is that the many CPUs need fast access to memory and will likely cache memory. Whenever one cache is updated with information that may be used by other processors, the change needs to be reflected to the other processors, otherwise the different processors will be working with incoherent data (see cache coherence and memory coherence). Such coherence protocols can when they work well provide extremely high performance access to shared information between multiple processors. On the other hand they can sometimes become overloaded and become a bottleneck to performance.
The alternatives to shared memory are distributed memory and distributed shared memory, with another, similar set of issues. See also Non-Uniform Memory Access.
In software
In software the term shared memory refers to memory that is accessible by more than one process, where a process is a running instance of a program. In this context, shared memory is used to facilitate inter-process communication. See the entry for thread for more information about processes and threads.
External links
- Shared Memory Allocation
- Shared Memory Interface
- Shared Memory Library FAQ by Márcio Serolli Pinho
- Shared Memory Block FIFO Pipe Implementation Library
- Article "IPC:Shared Memory" by Dave Marshall
- shared memory facility from the Single UNIX® Specification
- shm_open - POSIX
- shmop - documentation from SunOS 5.9
- CreateSharedMemory function from Win32-SDK
- Functions in PHP-API
- Paper "A C++ Pooled, Shared Memory Allocator For The Standard Template Library" by Marc Ronell
- Citations from CiteSeer