基于python完成页面置换算法模拟系统-第二天

157 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情

前言

本来今天要继续写epoll的,因为高考报志愿选学校耽搁了,只能先总结之前操作系统里的页面置换算法模拟系统的开发吧。

2主要任务

2.1项目概述

基于课程所学内容设计一个程序,采用多道程序的思想,模拟页式存储管理中FIFO、LRU、LFU、OPT四种页面置换算法的运行过程。当输入一个逻辑页面访问序列或随机产生逻辑页面访问序列时,可以由四个线程同时完成每个算法;能够设定驻留内存页面的个数、内存的存取时间、缺页中断的时间、快表的时间,并提供合理省缺值,可以暂停和继续系统的执行;可以随机输入存取、随机产生存取的逻辑页面的页号序列;可以设定页号序列中逻辑页面个数和范围以及有无快表的运行模式。该程序具有良好的图形界面,可同时展示四个算法的运行结果,并且将输入数据和结果存储,下次运行可查询。

 

2.2需求分析

2.2.1需求概述

随着时代发展,我们需要的内存容量越来越大,为提高内存利用率,解决内存供不应求的问题,更加合理的使用内存,人们创造了分页式内存抽象。同时有一个虚拟内存的概念,是指将内存中暂时不需要的部分写入硬盘,看上去硬盘扩展了内存的容量,所以叫做“虚拟”内存。

使用虚拟内存,应用程序可以使用比实际物理内存更大的内存空间。可以认为这个更大的内存空间就在硬盘上,只有将某一部分需要被用到时,才被写入真实内存;当它暂时不再被用到时,又被写回硬盘。分页式内存管理将物理内存分为等大的小块,每块大小通常为1K、2K、4K等,称为页帧;逻辑内存(使用虚拟内存技术扩大的内存,可认为其位于硬盘上)也被分为等大的小块,称为页;且页和页帧的大小一定是一样的,它是写入真实内存和写回硬盘最小单位。在虚拟内存中页面置换算法是其关键技术之一。

该程序可以测试比较常用四种页面置换算法的优劣,对于不同的需求,可以根据缺页率、内存开销、所需要的存取时间等方面来选择适合某一程序页面置换算法,成为设计人员的工具之一。

2.2.2 需求分析

(1) 系统开发功能

  1. 输入一个逻辑页面访问序列和随机产生逻辑页面访问序列,四个线程同时完成每个算法;
  2. 能够设定驻留内存页面的个数、内存的存取时间、缺页中断的时间、快表的时间,并提供合理省缺值,可以暂停和继续系统的执行;
  3. 能够随机输入存取的逻辑页面的页号序列;
  4. 能够随机产生存取的逻辑页面的页号序列;
  5. 能够设定页号序列中逻辑页面个数和范围;
  6. 能够设定有快表和没有快表的运行模式;
  7. 提供良好图形界面,同时能够展示四个算法运行的结果;
  8. 给出每种页面置换算法每个页面的存取时间;
  9. 能够将每次的实验输入和实验结果存储起来,下次运行时或以后可查询;

(2) 系统项目优点

  1. 四个线程可同时完成每个算法,将结果同时展示,方便比较。

  2. 分为有无快表两种模式,方便用户模拟测试。

  3. 能够设定内存页面个数、内存的存取时间等所需数值,模拟实际环境。

  4. 可以将实验结果保存到数据库,可查询历史记录,方便统计。

2.2.2 算法简洁

百度一搜一大堆,就不详细介绍了。

FIFO算法: 它总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。

LRU算法: 即当需要置换一页时,选择在最近一段时间里最久没有使用过的页面予以置换。

LFU算法: 即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。

OPT算法: 即最佳页面替换算法,这是一种理想情况下的页面置换算法,但实际上是不可能实现的。