【软件系统设计】操作系统-缺页中断

一、缺页中断简介


什么是缺页中断?

**缺页中断(Page Fault Interrupt)**是指当程序运行时,CPU试图访问的内存页面不在物理内存中,导致无法完成内存访问操作,从而触发的一种中断。

背景知识
  • 分页存储管理:

    • 现代操作系统将内存和程序的地址空间划分为固定大小的块,称为页面(Page)
    • 程序运行时,使用虚拟地址访问内存,操作系统通过**页表(Page Table)**将虚拟地址映射到物理内存地址。
  • 虚拟内存技术:

    • 当程序需要使用的内存空间大于实际物理内存容量时,操作系统会将不常用的页面暂时存放在磁盘的**交换空间(Swap Space)**中。
    • 这样,程序可以拥有比物理内存更大的地址空间。
缺页中断的触发条件
  • 访问未在物理内存中的页面:

    • 当CPU执行指令,需要访问的页面未被加载到物理内存中,此时无法完成访问。
  • 页表项无效:

    • 页表中对应页面的**有效位(Valid Bit)**为0,表示页面不在物理内存中。

缺页中断了怎么办?

当发生缺页中断时,操作系统需要进行一系列处理,以确保程序能够继续正确运行。处理流程如下:

1. 中断当前进程
  • 触发缺页中断:
    • CPU检测到无法完成内存访问,触发缺页中断,将控制权交给操作系统内核的中断处理程序。
2. 检查访问是否合法
  • 地址验证:

    • 操作系统检查请求访问的虚拟地址是否在进程的地址空间范围内。
  • 处理非法访问:

    • 如果访问的是非法地址(如未分配的内存区域),操作系统会:
      • 向进程发送异常信号(如Segmentation Fault)。
      • 终止进程,防止其执行非法操作。
3. 调度页面调入
  • 从外存加载页面:

    • 如果访问合法,但页面不在物理内存中,操作系统需要:
      • 在磁盘中找到所需页面,通常在交换空间或映像文件中。
      • 选择物理内存中的可用页框(Frame)
        • 如果内存不足,使用页面置换算法(如LRU、FIFO)选择页面换出到磁盘。
  • 读取页面数据:

    • 将所需页面从磁盘读取到选定的物理内存页框中。
4. 更新页表
  • 修改页表项:
    • 设置对应页表项的有效位为1,表示页面已在内存中。
    • 更新物理地址信息,指向新的页框。
    • 重置其他控制位(如修改位、访问位)。
<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿寻寻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值