ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

虚拟内存抽象,进程的地址空间

2021-11-27 15:59:31  阅读:168  来源: 互联网

标签:00 rw -- anon --- 地址 抽象 虚拟内存 out


1.动态链接与静态链接区别

首先写一个main.c死循环程序

int mian() {
      while (1);
}

进入main.c所在的目录下,打开一个终端,执行动态链接

gcc main.c 

在此终端下进行静态链接

gcc -static main.c -o static.out

生成了可执行文件a.out static.out:
在这里插入图片描述比较静态链接和动态链接的时间上的区别:
在这里插入图片描述
在这里插入图片描述
动态链接花费的时间比静态链接的时间更短。

分别打开两个终端,运行a.out static.out可执行程序,进入死循环状态;新建一个终端输入:top。找到两个程序的进程号
在这里插入图片描述a.out的进程号是8175,在终端中输入pmap 8175(此时不要杀死死循环)

(base) bionic@bionic-DL:~$ pmap 8342
8342:   ./static.out
0000000000400000    728K r-x-- static.out
00000000006b6000     24K rw--- static.out
00000000006bc000      4K rw---   [ anon ]
0000000001e23000    140K rw---   [ anon ]
00007ffc0e820000    136K rw---   [ stack ]
00007ffc0e8b8000     12K r----   [ anon ]
00007ffc0e8bb000      4K r-x--   [ anon ]
ffffffffff600000      4K --x--   [ anon ]
 total             1052K


(base) bionic@bionic-DL:~$ pmap 8175
8175:   ./a.out
000055763c080000      4K r-x-- a.out
000055763c280000      4K r---- a.out
000055763c281000      4K rw--- a.out
00007fb0c3d43000   1948K r-x-- libc-2.27.so
00007fb0c3f2a000   2048K ----- libc-2.27.so
00007fb0c412a000     16K r---- libc-2.27.so
00007fb0c412e000      8K rw--- libc-2.27.so
00007fb0c4130000     16K rw---   [ anon ]
00007fb0c4134000    164K r-x-- ld-2.27.so
00007fb0c4306000      8K rw---   [ anon ]
00007fb0c435d000      4K r---- ld-2.27.so
00007fb0c435e000      4K rw--- ld-2.27.so
00007fb0c435f000      4K rw---   [ anon ]
00007ffcf307d000    136K rw---   [ stack ]
00007ffcf30b4000     12K r----   [ anon ]
00007ffcf30b7000      4K r-x--   [ anon ]
ffffffffff600000      4K --x--   [ anon ]
 total             4388K

动态链接的地址空间中比静态链接的多了不少如00007fb0c3d43000 1948K r-x-- libc-2.27.so,就是libc动态链接出来的,rx文件。动态链接后的可执行文件小了很多。

2.pmap是如何实现的呢?

strace pmap 8175
在这里插入图片描述pmap是打开map做read,打印信息
对proc作操作

(base) bionic@bionic-DL:~$ cat /proc/9169/maps
00400000-004b6000 r-xp 00000000 08:04 411558                             /home/bionic/static.out
006b6000-006bc000 rw-p 000b6000 08:04 411558                             /home/bionic/static.out
006bc000-006bd000 rw-p 00000000 00:00 0 
01a13000-01a36000 rw-p 00000000 00:00 0                                  [heap]
7ffe41024000-7ffe41046000 rw-p 00000000 00:00 0                          [stack]
7ffe41186000-7ffe41189000 r--p 00000000 00:00 0                          [vvar]
7ffe41189000-7ffe4118a000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]

标签:00,rw,--,anon,---,地址,抽象,虚拟内存,out
来源: https://blog.csdn.net/weixin_45363995/article/details/121577166

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有