49、Linux 内存管理与使用全解析

Linux 内存管理与使用全解析

1. 内存测量难题

测量内核空间内存使用情况十分复杂。由于存在无记录的底层分配,我们难以准确统计内核空间的内存使用。当累加已知的内核和用户空间分配时,会出现内存缺失的情况。 /proc/meminfo 中的信息有限,而 /proc/slabinfo /proc/vmallocinfo 提供的额外信息又难以解读。相比之下,用户空间通过进程内存映射能更好地了解内存使用情况。

2. 用户空间内存布局

2.1 延迟分配策略

Linux 对用户空间采用延迟分配策略,仅在程序访问时才映射物理内存页。例如,使用 malloc(3) 分配 1 MiB 的缓冲区时,仅返回内存地址块的指针,而不分配实际的物理内存。页表项会设置标志,使任何读写访问都会被内核捕获,这就是页错误。只有此时,内核才会尝试寻找物理内存页并将其添加到进程的页表映射中。

以下是一个简单的示例程序,用于演示页错误:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <sys/resource.h>
#define BUFFER_SIZE (1024 * 1024)
void print_pgfaults(void)
{
     int ret;
     struct rusage usage;
     ret = ge
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值