共享内存属于哪里?这意味着它由每个单独的进程拥有,如栈和堆。所以,其他程序不能 能够访问一些其他程序的堆栈。或者它是任何数量的进程都使用的常见内存段。下图 以图解方式显示了我的问题。操作系统中的共享内存段
图1:
----------------- ----------------- -----------------
| stack | | stack | | stack |
| | | | | |
| Shared m/y | --->| Shared m/y |<--- | Shared m/y |
| | | | | | | |
| heap | | | Heap | | | Heap |
| | | | | | | |
| Data segment | | | Data segment | | | Data segment |
| | | | | | | |
| text |___| | text | |___| text |
----------------- ----------------- -----------------
Process 1 Process 2 Process 3
(OR)
图2:
-----------------------------------------
| |
| |
| Shared Memory |<--
------->| | |
| | | |
| ----------------------------------------- |
| ^ |
| | |
----------------- ----------------- -----------------
| stack | | stack | | stack |
| | | | | |
| heap | | Heap | | Heap |
| | | | | |
| Data segment | | Data segment | | Data segment |
| | | | | |
| text | | text | | text |
----------------- ----------------- -----------------
Process 1 Process 2 Process 3
在图1中,每个过程有一个进程的地址空间内的共享存储器的段。在进程2的共享内存中,进程1和进程3访问共享内存。在图2中,共享内存 是被所有进程访问的一段内存。所以,在以上两种情况下,共享内存使用的是 段。