内存常识之缺页中断

什么是缺页中断:

       进程线性地址空间里的页面不必常驻内存,在执行一条指令时,如果发现他要访问的页没有在内存中(存在位为0),那么停止该指令的执行,并产生一个页不存在异常,对应的故障处理程序可通过从外存加载加载该页到内存的方法来排除故障,之后,原先引起的异常的指令就可以继续执行,而不再产生异常。

页面调度算法:

       页式虚拟存储器实现的一个难点是设计页面调度(置换)算法,即将新页面调入内存时,如果内存中所有的物理页都已经分配出去,就要按某种策略来废弃某个页面,将其所占据的物理页释放出来,好的算法,让缺页率降低。常见的有先进先出调度算法,最近最少调度算法,最近最不常用调度算法。

缺页中断的计算:

         作业本身的程序编制方法。程序编制的方法不同,对缺页中断的次数有很大影响。

例如:有一个程序要将128×128的数组置初值“0”。现假定分给这个程序的主存块数只有一块,页面的尺寸为每页128个字,数组中的元素每一行存放在一页中,开始时第一页在主存。若程序如下编制:

    Var A: array[1..128] of array [1..128] of

integer;

 

for j := 1 to 128

 

do for i := 1 to128

 

do A[i][j]:=0

则每执行一次A[i][j] :=0就要产生一次缺页中断,于是总共要产生(128×1281)次缺页中断。

如果重新编制这个程序如下:

    Var A: array[1..128] of

array[1..128] of

integer;

 

for i := 1 to128

 

do for j := 1 to128

 

do A[i][j] := 0

那么总共只产生(1281)次缺页中断。

显然,虚拟存储器的效率与程序的局部化程度密切相关。程序的局部化有两种:时间局部化和空间局部化。

 

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值