34、内存管理全解析:从原理到实践

内存管理全解析:从原理到实践

1. 页面错误与内存映射

在程序环境初始化后,会遇到一定数量的小页面错误。例如,初始化后遇到 172 个小页面错误,调用 getrusage(2) 时又会有 14 个。当向内存填充数据时,页面错误数量会增加,如 442 - 186 = 256,这与缓冲区大小有关,1 MiB 的缓冲区正好是 256 页。第二次调用 memset(3) 没有影响,因为所有页面都已映射。

页面错误分为小错误和大错误:
- 小页面错误 :内核只需找到一个物理内存页面并将其映射到进程地址空间。
- 大页面错误 :当虚拟内存映射到文件时会发生,如使用 mmap(2) 。此时,内核不仅要找到内存页面并映射,还要从文件中读取数据填充,因此在时间和系统资源上成本更高。

通过 /proc 文件系统可以查看进程的内存映射。以下是 init 进程(PID 为 1)的内存映射示例:

00008000-0000e000 r-xp 00000000 00:0b 23281745   /sbin/init
00016000-00017000 rwxp 00006000 00:0b 23281745   /sbin/init
00017000-00038000 rwxp 00000000 00:00 0          [heap]
b6ded000-b6f1d000 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值