Linux内存管理——请页机制

Linux采用请页机制来节约物理内存,仅加载当前使用的用户空间页。当访问的虚拟内存页不在物理内存时,会发生页故障。页故障通常由编程错误、缺页异常或写保护错误引起。缺页异常处理程序会根据错误类型进行响应,如从交换文件加载页或采用写时复制技术。请求调页技术延迟页面分配,直到实际需要,提高了内存利用率,但也可能带来额外的处理开销。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当一个进程运行时,CPU访问的地址是用户空间的虚拟地址。Linux采用请页机制来节约物理内存,仅把当前要使用的用户空间中的少量页载入物理内存。当访问的虚拟内存页面没有载入物理内存时,处理器向Linux报告一个页故障以及对应的故障原因。页故障的产生有以下三种原因:

(1)程序出现错误

(2)虚拟地址有效,但其对应的页当前不在物理内存中,产生缺页异常,操作系统必须从磁盘或交换文件(此页被换出)中将其载入物理内存。

(3)要访问的虚拟地址被写保护,即保护错误,操作系统必须判断:如果是某个用户进程正在写当前进程的地址空间,则发送一个信号并终止进程的运行;如果错误发生在一旧的共享页上时,要对这一共享页进行复制,这就是写时复制技术。

1、缺页异常处理程序

当一个进程执行时,如果CPU访问到一个有效的虚地址,但这个地址对应的页在内存中没有,则CPU产生一个缺页异常,同时将这个虚地址存入CR2寄存器,然后调用缺页异常处理程序。Linux缺页异常处理程序必须对产生缺页的原因进行区分:是由编程错误引起的异常,还是由访问进程用户空间的页尚未分配物理页面引起的异常。

SIGSEGV(段违例)是当一个进程执行一个无效的内存引用,或发生段错误时发送给它的信号。

缺页异常处理程序的总体方案:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值