内存换入-换出--OS

内存换入-请求调页

用换入、换出实现“大内存”

我们设置虚拟内存大小位4G,但是实际内存只有1G,所以虚拟内存没办法完整的映射到实际内存中,那么如何才能让用户觉得虚拟内存就是实际的内存呢?换入换出可以实现这一点,当用户使用虚拟内存的(0G-1G)时,就将这一段的虚拟内存映射到物理内存上,当用户使用(3G-4G)处的虚拟内存时,就将虚拟内存(3G-4G)映射到物理内存上,这样就相当于4G的虚拟内存都可以使用了

请求的时候才映射

请求调页

当MMU进行重定位时,发现虚拟内存没有映射,就会发起中断,同时不让PC+1,然后从磁盘中查找对应的页,再从内存中申请一段内存,将磁盘中读到的页放入内存中,再建立映射,最后中断返回,MMU重新计算,然后重新执行中断时的那一条指令。

一个实际系统的请求调页

请求调页,当然从缺页中断开始
中断号      名称                说明
12      Segment not present    描述符所指的段不存在
14      Page fault             页不在内存
void trap_init(void)
{
    set_trap_gate(14, &page_fault);
}
#define set_trap_gate(n,addr) \
    _set_gate(&idt[n], 15, 0, addr);

//在linux/mm/page.s
.globl _page_fault
    xchgl %eax,(%esp)  //错误码esp被压入栈中
    ...
    movl $0x10, %edx
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值