gpt4 book ai didi

linux-kernel - 进程地址空间中的共享内存?

转载 作者:行者123 更新时间:2023-12-03 07:47:02 25 4
gpt4 key购买 nike

通过阅读操作系统概念书,我知道内存中的进程由:文本部分、数据部分、堆栈和堆组成。

但是我想问的是,当创建此部分时,进程会要求内核创建共享内存段吗?在堆中?

<小时/>

另一个问题内核以PCB格式了解系统中每个进程的信息,并将该PCB保存在进程表中。

问题是:进程表是双向链表吗?

最佳答案

我想你的问题是关于进程内存布局的。如果是这样,Linux 和 Solaris 进程具有以下部分:

Text
Data
BSS
Heap
MMS (memory mapping segment)
Stack

堆和栈之间的内存数组,称为内存映射段,负责共享内存映射。而且不仅如此。共享库、打开的文件也会映射到该段内存中。

您可以通过pmap命令或读取进程映射文件/proc//maps来检查Linux上的进程内存布局。下面是 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 ]

关于linux-kernel - 进程地址空间中的共享内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24713565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com