持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情
摘要
本程序利用多道程序思想设计,模拟页式存储管理中FIFO、LRU、LFU、OPT四种页面置换算法运行的过程。其中,系统可手动输入或随机产生逻辑页面访问序列,可自行设定驻留内存页面个数及其他页面处理时间参数,并提供合理的省缺值。提供四个算法运行结果的展示,可将输入与实验结果进行储存,方便以后查询使用。通过输入数据和输出结果构造特征对应标签,转化为有监督学习问题,找到不同置换算法所适应的情况。
1前言
1.1项目背景
在科技发展迅速的当下,我们的计算机所需的内存容量越来越大,而虚拟内存很好的解决了这一问题。地址映射是其中非常关键的环节,该过程中,若发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。而算法的不同,也决定了操作系统的速度。所以选择一个合适的算法是尤为重要的。
1.2 目的意义
(1)通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点。
(2)通过创建线程以及初始化线程来掌握实现几个线程同时进行某种操作的方法。
(3)重点掌握当请求页面不在内存而内存块已经全部被占用时的替换算法,熟悉常见替换算法(如FIFO算法、LRU算法、LFU算法、0PT算法)的原理和实现过程,观察对比这四种算法的优缺点。
(4)掌握页面置换时缺页中断与不缺页中断时每个页面进行存取时的时间的计算方法,包括一个页面序列进行存取的总时间与存取每个页面的平均时间。
(5) 熟悉掌握进行有界面的编程的方法。
遇到的问题
我们遇到的问题主要是对算法的深层次理解与实现时技术中出现的问题。
问题一:对算法的理解局限于理论
做设计时,我们对算法进行了更深入的学习。但我们学习算法时更偏向于理论,对于其中的具体实现,把握并非十分牢固。在本项目中,我们通过更加深入的自主学习与小组激烈讨论,对于四个页面置换算法的具体理解更深一步,让我们对于这使我们受益匪浅。
问题二:对前端开发的知识储备不够
实现时,我们则是打算使用了Python Web技术,其中出现的问题大多存在于前端。样式表的使用、表单的制作、页面的设计以及图形的绘制等等,不过通过我们在网络上查找资料,我们学习了更多的技术与方法,吸取了一些较好前端设计网页的长处,从而对我们的项目进行设计。这也使我们的技术有了提升。