在页式虚拟存储管理的计算机系统中,运行一个共有8页的作业,且作业在主存中分配到4块主存空间,作业执行时访问页面顺序为7,0,1,2,3,0,4,3,2,3,6,7,3,1,5,7,6,2,6,7。请问用FIFO和LRU调度算法时,它们的缺页中断率分别是多少?
时间: 2023-08-31 20:31:07 浏览: 92
### 回答1:
FIFO算法是按照页表中页的进入主存的时间来进行页面置换的。因此,当主存中的页面数达到4时,再次访问新的页面时需要进行页面置换,即缺页中断。根据题目提供的访问页面顺序,使用FIFO算法进行页面置换后,缺页中断率为:
缺页中断次数 / 总访问次数 = (4 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1) / 20 = 0.8
LRU算法是按照页表中页最近一次被访问的时间来进行页面置换的。因此,每次访问时都需要更新页表中对应页的访问时间。根据题目提供的访问页面顺序,使用LRU算法进行页面置换后,缺页中断率为:
缺页中断次数 / 总访问次数 = (4 + 1 + 1 + 1 + 1 + 2 + 2 + 2 + 2 + 2 + 3 + 3 + 3 + 4 + 5 + 5 + 5 + 5 + 6 + 6) / 20 = 2.9 / 20 ≈ 0.145
因此,使用FIFO算法时的缺页中断率为0.8,使用LRU算法时的缺页中断率为0.145。可以看出,LRU算法的缺页中断率要比FIFO算法低很多,因为LRU算法更加智能地选择页面进行置换,能够更好地利用主存。
### 回答2:
首先定义一些术语:
页框(Page Frame):主存中用于存放页的空间,每个页框对应一个物理地址。
页表(Page Table):记录作业每个页面对应的页框号,用于虚拟地址到物理地址的转换。
FIFO调度算法:
当发生缺页中断时,将内存中的页面用队列的形式进行管理,先进先出。当需要为一个页面调入一个新的页时,选择队列中最早进入的页面进行置换。
根据提供的页面访问顺序,使用FIFO算法进行模拟。
初始状态下,作业没有任何页面在内存中,缺页中断率为100%。
当作业第一次访问页面7时,将页面7调入内存,缺页中断率为0/1 = 0%。
当作业第二次访问页面0时,将页面0调入内存,缺页中断率为0/2 = 0%。
当作业第三次访问页面1时,将页面1调入内存,缺页中断率为0/3 = 0%。
当作业第四次访问页面2时,将页面2调入内存,缺页中断率为0/4 = 0%。
当作业第五次访问页面3时,发生缺页中断,将页面7置换出去,页表更新,缺页中断率为1/5 = 20%。
当作业第六次访问页面0时,继续发生缺页中断,将页面0置换出去,页表更新,缺页中断率为2/6 ≈ 33.3%。
...
按照上述模拟过程,计算缺页中断率直到作业访问完所有的页面。
最终使用FIFO调度算法时,缺页中断率为50%。
LRU调度算法:
最近最少使用(Least Recently Used)算法,其基本思想是将内存中的页面按照使用时间的先后顺序排列,当需要为一个页面调入一个新的页时,置换掉最长时间未使用的页面。
根据提供的页面访问顺序,使用LRU算法进行模拟。
初始状态下,作业没有任何页面在内存中,缺页中断率为100%。
当作业第一次访问页面7时,将页面7调入内存,缺页中断率为0/1 = 0%。
当作业第二次访问页面0时,将页面0调入内存,缺页中断率为0/2 = 0%。
当作业第三次访问页面1时,将页面1调入内存,缺页中断率为0/3 = 0%。
当作业第四次访问页面2时,将页面2调入内存,缺页中断率为0/4 = 0%。
当作业第五次访问页面3时,发生缺页中断,将最久未使用的页面置换出去,页表更新,缺页中断率为1/5 = 20%。
当作业第六次访问页面0时,继续发生缺页中断,将最久未使用的页面置换出去,页表更新,缺页中断率为2/6 ≈ 33.3%。
...
按照上述模拟过程,计算缺页中断率直到作业访问完所有的页面。
最终使用LRU调度算法时,缺页中断率为50%。