Presentation is loading. Please wait.

Presentation is loading. Please wait.

Shared Memory David Ferry, Chris Gill

Similar presentations


Presentation on theme: "Shared Memory David Ferry, Chris Gill"— Presentation transcript:

1 Shared Memory David Ferry, Chris Gill
CSE 522S - Advanced Operating Systems Washington University in St. Louis St. Louis, MO 63130

2 CSE 522S – Advanced Operating Systems
The Common Theme So Far? What we have seen… Signals: Kernel carries/delivers event notifications Pipes/FIFOs: Intra-machine communication Many-to-many Kernel reads/writes through the pipe file system Sockets: Inter/Intra-machine communication Point-to-point Kernel reads/writes through networking system CSE 522S – Advanced Operating Systems

3 Kernel’s Involvement in IPC
Saves data into kernel address space Delivers data from kernel address space Sleeps and wakes processes that block on communications channels Delivers asynchronous notifications Useful, but incurs overhead! Multiple copies of data Event delivery timing at mercy of kernel Access requires system calls CSE 522S – Advanced Operating Systems

4 Shared Memory Concepts
Processes share a physical memory region: Communication by modifying memory values Kernel only invoked at creation & deletion No read or write overhead vs. regular memory 0x1000 Process A shm_ptr 1 2 3 5 8 13 Process B shm_ptr CSE 522S – Advanced Operating Systems

5 CSE 522S – Advanced Operating Systems
Recall - Paging All physical memory is divided into pages Pages get mapped to virtual memory Virtual addresses require translation Virtual Address Translation: Process A Process B Virtual Address Page # Offset 4KB 4KB 4KB 4KB 4KB 4KB Physical Page Phys. Addr CSE 522S – Advanced Operating Systems

6 Efficient Shared memory
Same address translation as usual (little or no overhead) Addresses map to same physical page Page must be readable/ writable by both processes Process A Virtual Address Page # Offset Process B Virtual Address Page # Offset Physical Page CSE 522S – Advanced Operating Systems

7 CSE 522S – Advanced Operating Systems
Shared Memory in Linux Three steps to use shared memory: Create a shared file descriptor - shm_create() Resize shared region - ftruncate() Map region into process - mmap() Shared regions identified by name Creator can specify user-level permissions CSE 522S – Advanced Operating Systems

8 CSE 522S – Advanced Operating Systems
Using Shared Memory Basic interface: void* pointer Programmer must impose organization on shared memory region: Structs Libraries Provides multi-threaded-like environment Concurrency libraries may or may not work when shared across processes E.g. Pthreads and PTHREAD_PROCESS_SHARED May need own concurrency code CSE 522S – Advanced Operating Systems


Download ppt "Shared Memory David Ferry, Chris Gill"

Similar presentations


Ads by Google