首页 > 编程知识 正文

fifo页面置换算法计算缺页率,中断代码

时间:2023-05-03 09:48:52 阅读:163077 作者:2960

1 .缺页中断请求分页系统中,可以通过查询页表的状态位来确定内存中是否存在要访问的页。 每次尝试访问的页面不在内存中时,都会发生页面错误,操作系统会根据页面表的外部地址从外部存储器中查找缺少的页面,然后将其装入内存。

缺页本身是一种中断,与常规中断一样,需要经过四个处理步骤。

1.CPU现场保护

2 .中断原因分析

3 .转移到缺页中断处理程序进行处理

4 .恢复CPU现场,继续执行

但是,缺页的情况下,在要访问的页面上不存在内存的情况下,由于存在硬件引起的特殊中断,因此会出现通常的中断和区别

1 .命令执行过程中产生缺页中断信号并进行处理

2 .在执行一个指令的过程中,可能会发生多次缺页

3 .缺页中断返回时,执行发生中断的命令,正常中断返回时,执行以下命令

2 .如果在页面替换算法过程中发生缺页,内存中是否有可用的物理块,系统是否需要从内存中选择页面并调用到磁盘交换空间,才能将缺少的页面加载到内存中但是,此时要更改该页面,必须基于一定的http://www.Sina.com/(pagereplacementalgorithm )进行决定。

2.1最佳替换(Optimal,OPT )2.1.1基本思想替换后不再访问,或者将来较晚返回访问的页面时,缺页中断率最低。 但是,该算法需要取决于今后各行业的使用情况,如果某个进程还没有运行,很难估计今后将不再使用哪些页面,或者最长时间后将使用哪些页面。 所以页面置换算法但该算法仍然很有意义,成为阐明其他算法优劣的一个标准。

2.1.2算例采用固定分配局部置换的策略,嘉定系统为某个进程向内存分配3个物理块,页面访问顺序为2、3、2、1、5、2、4、5、3、2、5、2。 假设系统不采用该算法是不能实现的,也就是说,您没有事先填写任何页面。 在进程运行过程中,将2、3、1三个页面一次调入内存,发生了三次缺页中断。 第一次访问页面5时,发生第四次缺页中断,根据OPT算法,页面1将被丢弃,因为以后不再使用; 第五次缺页被中断时,页面2被丢弃。 因为这是5、3、2这3个页面中,将来最晚访问页面的页面。 这样类推:

注:第四次中断会排除最后不访问的1,并将最后访问的3放在底部的内存块中。 在以后的安排中,最后不访问的页面或最后访问的页面总是放在底部的内存块中。 内存块按从上到下的顺序存储第一个访问的页面。

中断次数为6,缺页中断率为6/12*100%=50%。

p :232152453252 m=32222553522这里是文章图片愚人节35335335335425132443444 f=5yyyyyy 2.2先进先出置换算法(First In First Out, FIFO )2.2.1基本思想置换最初进入内存的页面,即按照进入内存置换的顺序与预调页策略排列,从队伍的末尾进入,从队伍的开头删除。 但是,该算法淘汰了频繁访问的页面,不能适应进程实际运行的规律,目前已有队列

2.2.2算例仍以OPT算例为例。

中断次数为9,缺页中断率为9/12*100%=75%。

p :232152453252 m=32331524433522231522443244324435231552243 f=9yyyyyyy2.2.3be lady异常通常,分配给进程的物理块越多,运行时页面就越多使用FIFO时,情况可能相反

例如,进程访问顺序为0、2、1、3、0、2、4、0、2、1、3、4。

如果M=3,缺页将被中断9次。 缺页中断率9/12*100%=75%。

如果p :021302402134 m=3021302130244133021302130224110213000244 f=9yyyyyyyy ym=4,则缺失页中断10次。 缺页中断率10/12*100%=83.3%。

p :021302402134 m=402133402134021340213402134021134021340213402 f=10 yyyyyyyy 2.3最近最老的未使用替换算法(Least Recently Used,least 长期未被访问的页面最近可能不会被访问。

LRU算法一般适用于各种类型的程序,但由于系统必须经常记录和更新各个页面的访问历史,开销过大,LRU算法需要硬件支持。

2.3.2算例仍以OPT算例为例。

中断次数为7,缺页中断率为7/12*100%=58.3%。

p :232152453252 m=323215245245325223221524533 f=7yyyyyy http://www.Sina.com /实现LRU :

使用特殊堆栈存储内存中每页的页码。 每次访问一页时进行调整。 也就是说,从堆栈中删除被访问的页面的页码,并将其推入堆栈的顶部。 因此,堆栈的顶部始终是最新访问的页面的页码,而堆栈的底部始终是最近未访问的页码。 发生页面错误时,总是会丢弃与堆栈底部的页码相对应的页面。

参考轻薄,计算机操作系统原理,武汉大学出版社

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。