姓名: | 学号 | 班级:计科 |
---|---|---|
课程:操作系统 | 性质:验证性实验 | 时间:2018.11.29 |
页面置换模拟程序设计
存储管理的主要功能之一是合理地分配空间,请求页式管理是一种常用的虚拟存储管理技术,本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,加深对请求页式存储管理实现原理的理解,掌握页面置接算法。
验证性实验
1、页式管理的基本原理
各进程的虚拟空间被划分成若干个长度相等的页,页长的划分和内存外存之间数据传输速度以及内存大小等有关,一般每个页长大约为1~4K,经过页划分之后,进程的虚拟地址变为页号p与页内地址w所组成。
页式管理还把内存空间按页的大小划分为片或页面,这些页面为系统中的任一进程所共享(除去操作系统区外)。从而,使用户进程在内存空间内除了在每个页面内地址连续之外,每个页面之间不再连续。第一是实现了内存中碎片的减少,因为任一碎片都会小于一个页面,第二是实现了由连续存储到非连续存储这个飞跃,为在内存中局部地、动态地存储那些反复执行或即将执行的程序和数据段打下了基础。
页式管理把页式虚地址与内存页面物理地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题,再者,页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理,即内存内只存放那些经常被执行或即将被执行的页,而那些不常被执行以及在近期内不可能被执行的页,则存放于外存中待需要时再调入
由于使用了请求调页或预调页技术,页式管理时内存页面的分配与回收已和页面淘汰技术及缺页处理技术结合起来
页式管理可以为内存提供两种方式的保护:一种是地址越界保护,另一种是通过页表控制对内存信息的存取操作方式以提供保护地址越界保护可由地址变换机构中的控制态存器的值一一页表长度和所要访问的虚地址相比较来完成。存取控制保护的实现则是在页表中增加相应的保护位即可
2、页面置换算法
(1)先进先出法FIFO:将最先进入内存的页换出内存。
(2)最佳置换法OPT将将来不再被使用或是最远的将来才被访问的页
(3)最近最少使用置换法LRU:将最近一段时间里最久没有使用过的页面换出内存
(4)最近未使用置换法CNUR):是LRU近似方法,比较容易实现,开销也比较小。
实現方法:在存储分块表的每一表项中增加一个引用位,操作系统定期地将它们置
为0.当某一页被访问时,由硬件将该位置1。需要淘汰一页时,把该位为0的页淘
汰出去,因为最近一段时间里它未被访问过。,
1.假设分给一作业的内存块数为4,每个页面中可存放10条指令
2.用C++语言设计一个程序,模拟一作业的执行过程,设该作业共有320条指令,即它的地址空间为32页,目前它的所有页面都还未调入内存。在模拟过程中,如果所访问的指令已经在内存,则显示其物理地址,并转下一条指令,如果所访问的指令尚未装入内存,则发生缺页,此时需记录缺页的次数,并将相应页调入内存。如果4个内存续中均已装入该作业的虚页面,则需进行页面置换。最后显示其物理地址,并转下一条指令,在所有320条指令执行完毕后,请计算并示作业运行过程中发生的缺页率
3.置换算法,请分别考虑OPT、FIFO和LRU算法
4.作业中指令的访问次序要求按下述原则生成
50%的指令是顺序执行的
25%的指令是均匀分布在前地址(即低地址)部分
25%的指令是均匀分布在后地址(即高地址)部分
具体的实施办法是:
①
在【0,319】之间随机选取一条起始执行指令,其序号为m
②
顺序执行下一条指令,即序号为m+1的指令
③
通过随机数,跳转到前地址部分(0,m-l)中的某条指令处,其序号为ml
④
顺序执行下一条指令,即序号为ml+1的指令
⑤
通过随机数,跳转到后地址部分(m1+2,319)中的某条指令处,其序号为m2
⑥
顺序执行下一条指令,即序号为m2+1的指令
⑦
重复“跳转到前地址部分、顺序执行、跳转到后地址部分、顺序执行真至执行完全部320条指令
通过这次实验,不仅让我了解了页面置换算法,还让我对操作系统这门课程有了更深入的了解,对很多重要的概念更加巩固和更好的掌握。在本次实验中,刚开始运行程序时,总是调试错误,自己也找不出来错误,后来积极的求教同学,仔细分析题目和实验原理,程序才如愿以偿的运行成功。收获颇多。