Linux查看进程地址空间
时间:2020-01-09 10:42:27 来源:igfitidea点击:
如何在Linux操作系统下查看进程地址空间?在Linux(和类似Unix的)操作系统下,每个用户模式进程都有其自己的单独的线性地址范围。此外,每个工艺衬里地址都划分为虚拟内存(也称为区域)区域。
Linux内核可以为每个区域分配不同的net访问权限,例如:
- 只读区域
- 只写区域
- 仅执行区域
- 仅共享区域
这对于性能以及节省内存空间(RAM)很有用。
例如,在本地大学100多岁的Linux Shell服务器上,用户可以运行pine电子邮件客户端来阅读其电子邮件。
对于每个用户/进程,必须在内存中保留电子邮件客户端的单独副本将非常困难。
因此,借助虚拟内存,Linux内核可以将包含可执行代码的内存区域映射到每个进程的地址空间中。
每个进程都包含以下域:
- 代码
- 数据
- 堆
- 栈
- 参数与环境
查看进程地址空间的命令
首先,找出给定进程(例如firefox)的pid:
$ ps aux | grep [f]irefox
输出示例(节点PID 3901):
Hyman 3901 4.5 4.2 1226760 343880 ? Sl Oct31 27:17 /opt/firefox/firefox
要查看Firefox进程地址空间,请执行:
$ cat /proc/3901/status
您也可以使用pmap命令获取进程的详细内存映射:
$ pmap PID $ pmap 3901 | less $ pmap -x 3901 | less