linux proc maps文件分析
来源:互联网 发布:ktv手机点歌软件 编辑:程序博客网 时间:2024/05/18 01:49
maps文件的每一列概述如下
第一列
表示该内存段的起始地址
第二列
表示该内存段对应的权限
第三列
如果内存段的信息是文件映射,该列为内存段中的信息在文件中的映射页的偏移
第四列
如果内存段的信息是文件映射,该列为文件所在的设备号
若是匿名映射,设备号为00:00
第五列
如果内存段的信息是文件映射,该列为文件的文件索引号
若是匿名隐射,文件索引号为0
第六列
如果是内存段的信息是文件映射,该列为映射的文件名
若是匿名隐射,该列信息可能是映射到的栈[stack]或者其他数据区
文件映射:信息对应到磁盘上的具体的文件上,需要open,或者read 进行文件操作的
匿名隐射:信息对应到内存中的一些堆栈内,如malloc,new,创建出来的变量
更细节可参考此帖:http://bbs.csdn.net/topics/391860037 或自行搜索
举例说明如下
运行一个getchar()程序,通过该进程的id查看该进程运行时对应的内存分布,
每一行对应的是程序中不同的内存段
第一行详解:
00400000-00401000表示的是该内存段的起始地址和结束地址;
r-xp表示的是该内存段是可读(read),可执行(excute),私有(personal);
00000000表示的是该内存段的信息映射到文件节点1326446对应的文件的偏移页为00000000对应的信息,将该页的信息拷贝到该内存段
08:04 是设备号,linux 对于每个设备都抽象成设备文件进行管理操作,每一个设备由主设备号(确定是哪一类设备)和次设备号(确定该类下具体一个设备)结合确定,可以通过cat /proc/devices 可以查看到主设备号对应的主设备类型,在我的电脑中 8 对应的设备类型为sd,是硬盘类,所有的设备文件都存放在/dev下,可以进一步的查看该设备号对应的设备,如下图,对应的为sda4,是硬盘的sda4分区
1326446 为当前可执行文件的文件索引节点号,也就是inode的索引号,可以通过该索引号,找到一个inode对象,通过该对象可以可以找改文件在磁盘上的具体位置
/home/woder/docum....../HelloWorld-getchar对应的就是映射文件名。
此例子对应的前三行分别是代码段,只读数据区,读写私有数据区,这里让我疑惑的是第一行和第二行对应的第三列,也就是代码段和只读数据区映射页偏移为什么都是00000000,有可能这两者的信息都在同一个页上吧
参考博客:
linux proc maps文件分析: http://blog.csdn.net/lijzheng/article/details/23618365
Linux中各种设备及设备号:
http://blog.csdn.net/jerry_1126/article/details/52012412- linux proc maps文件分析
- linux proc maps文件分析
- linux proc maps文件分析
- (转载) Linux下 /proc/maps 文件分析
- Linux下 /proc/maps 文件分析
- Linux下 /proc/maps 文件分析
- (转载) Linux下 /proc/maps 文件分析
- (转载) Linux下 /proc/maps 文件分析
- Linux下 /proc/maps 文件分析
- Linux下 /proc/maps 文件分析
- [转载] linux proc maps文件分析
- Linux下 /proc/maps 文件分析
- Linux下 /proc/maps 文件分析(转)
- linux /proc/pid/maps 信息分析
- linux /proc/pid/maps 信息分析
- linux /proc/pid/maps 信息分析
- linux /proc/pid/maps 信息分析
- 解读linux的/proc下的statm、maps、memmap 内存信息文件分析
- Android最详细的Alibaba-AndFix 热修复框架的使用
- Spring Boot下如何自定义Repository中的DAO方法
- Jquery设置select控件指定text的值为选中项
- MySQL5.7安装步骤
- NSNotificationCenter 的使用详解
- linux proc maps文件分析
- 学习kotlin第七天_类与继承、属性与字段
- ByteBufferMessageSet分析
- Laravel 5 程序优化技巧
- C++ 差集
- 各种导航
- 一次关于loback日志无法输出到文件的问题解决
- jquery无限加载
- react native AppState 使用详解