Mah*_*mam 2 operating-system ipc shared-memory linux-kernel
我从读取操作系统概念书中了解到,内存中的进程包括:文本部分,数据部分,堆栈和堆.
但我问的是,当创建此部分时,进程要求Kernel创建共享内存段?在堆?
另一个问题内核知道有关PCB格式的系统中每个进程的信息,并将此PCB保存在进程表中.
问题是:进程表双向链表是什么?
小智 7
我想你的问题是关于进程内存布局.如果是这样,Linux和Solaris进程具有以下部分:
Text
Data
BSS
Heap
MMS (memory mapping segment)
Stack
Run Code Online (Sandbox Code Playgroud)
堆和堆栈之间的存储器阵列(所谓的存储器映射段)负责共享存储器映射.而且不仅如此.共享库,打开的文件也映射到该部分内存中.
您可以通过pmap命令检查Linux上的进程内存布局,或者读取进程映射文件/ proc // maps.下面是pmap实用程序在Linux机器上检查的DB2进程内存布局的一个片段(查看堆栈和shmid,共享内存ID,条目):
0000000000400000 52K r-x-- /opt/ibm/db2/bin/db2vend
000000000060d000 4K rwx-- /opt/ibm/db2/bin/db2vend
000000000c33e000 132K rwx-- [ anon ]
0000000200000000 35520K rwxs- [ shmid=0x57a58007 ]
000000323f200000 112K r-x-- /lib64/ld-2.5.so
and more more more shared libraries
00002b55bb45b000 4K r-x-- /lib64/libnss_files-2.5.so
00002b55bb45c000 4K rwx-- /lib64/libnss_files-2.5.so
00002b55bb45d000 39252K rwxs- [ shmid=0x57a50006 ]
00002b55bdab2000 1152K rwx-- [ anon ]
00007ffffaf35000 84K rwx-- [ stack ]
ffffffffff600000 8192K ----- [ anon ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1084 次 |
| 最近记录: |