没有合适的资源?快使用搜索试试~ 我知道了~
实习五虚拟存储器实验报告.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 144 浏览量
2023-08-28
18:33:39
上传
评论
收藏 403KB PDF 举报
温馨提示
试读
14页
实习五虚拟存储器实验报告.pdf
资源推荐
资源详情
资源评论
实习五虚拟存储器
一、实习内容
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断, 页中
断。
二、实习目的
在计算机系统中,为了提高主存利用率,往往把辅助存储器 (如磁盘)作为主存储器的
扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。 用这种办
法扩充的主存储器称为虚拟存储器。通过本实习帮助同学理解在分页式存储管理中怎样实现 虚拟存储
器。
三、实习题目
本实习有三个题,其中第一题必做,第二、第三题中可任选一个。
第一题:模拟分页式存储管理中硬件的地址转换和产生缺页中断。
[
提示
]
:
(1)
分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当
作业被选中时,可把作 业的开始几页先装入主存且启动执行。 为此,在为作业建立页表时,应说明
哪些页已在主存,
哪些页尚未装入主存,页表的格式为:
页号
标志
主存块号
在磁盘上的位置
其中,标志 用来表示对应页是否已经装入主存,标志位
=1
,则表示该页已经在主存,
标志位
=0
,则表示该页尚未装入主存。
主存块号一一用来表示已经装入主存的页所占的块号。
在磁盘上的位置一一用来指出作业副本的每一页被存放在磁盘上的位置。
(2)
作业执行时,指令中的逻辑地址指出了参加运算的操作数存放的页号和单元号,硬
件的地址转换机构按页号查页表,若该页对应标志为件的地址转换机构按页号查页表,若该页对应标志为
1
”,则表示该页已在主存,这时根
据关系式:
绝对地址
=
块号块长
+
单元号
计算出欲访问的主存单元地址。 如果块长为
2
的幕次,则可把块号作为高地址部分, 把
单元号作为低地址部分,两者拼接而成绝对地址。按计算出的绝对地址可以取到操作数, 完
成一条指令的执行。若访问的页对应标志为成一条指令的执行。若访问的页对应标志为
0 0
,则表示该页不在主存,这时硬件发,则表示该页不在主存,这时硬件发 缺
页中断”信号,由操作系统按该页在磁盘上的位置, 把该页信息从磁盘读出装入主存后再重
新执行这条指令。
(3)
设计一个“地址转换”程序来模拟硬件的地址转换工作。当访问的页在主存时,则
形成绝对地址,但不去模拟指令的执行, 而用输出转换后的地址来代替一条指令的执行。 当
访问的页不在主存时,则输出“
*
该页页号”,表示产生了一次缺页中断。该模拟程序的算 法如图
5-
1
。
⑷
假定主存的每块长度为
128
个字节;现有一个共七页的作业,其中第
0
页至第
3
页 已经装入主
存,其余三页尚未装入主存;该作业的页表为:
0 1
5
011
1 1 8 012
2 1
9 013
3
1 1 021
4
0
022
5 0
023
6 0
121
如果作业依次执行的指令序列为:
以及选择页面调度算法处理缺
操作 页号 单元号 操作 页号 单元号
+ 0 070
移位
4 053
+ 1 050 + 5 023
2
015
存
1
037
存
3
021
取
2
078
取
0
056 + 4
001
-
6
040
存
6
084
运行设计的地址转换程序, 显示或打印运行结果。因仅模拟地址转换,并不模拟指令的执行,
故可不考虑上述指令序列中的操作。
第二题:用先进先出(
FIFO
)页面调度算法处理缺页中断。
[
提示
]
:
(1)
在分页式虚拟存储系统中,当硬件发出“缺页中断”后,引出操作系统来处理这个
中断事件。如果主存中已经没有空闲块,则可用
FIFO
页面调度算法把该作业中最先进入主 存的一页
调出,存放到磁盘上。然后再把当前要访问的页装入该块。 调出和装入后都要修改
页表中对应页的标志。
(2) FIFO
页面调度算法总是淘汰该作业中最先进入主存的那一页, 因此可以用一个数组
来表示该作业已在主存的页面。假定作业被选中时,把开始的
m
个页面装入主存,则数组
的元素可定为
m
个。例如:
P[0]
,
P[1]
…,
P[m-1]
其中每一个
P[i](l=0, 1,
…
,m-1)
表示一个在主存中的页面号。它们的初值
为:
P[0]
:
=0, P[1]
:
=1,
…
,P[m-1]
:
=m-1
用一指针
K
指示当要装入新页时,应淘汰的页在数组中的位置,
K
的初值为“
0
”。
当产生缺页中断后,操作系统选择
P[k]
所指出的页面调出,然后执行:
P[k]
:
=
要装入页的页号
k
:
= (k+1) mod m
再由装入程序把要访问的一页信息装入到主存中。重新启动刚才那条指令执行。
(3)
编制一个
FIFO
页面调度程序,为了提高系统效率,如果应淘汰的页在执行中没有
修改过,则可不必把该页调出(因在磁盘上已有副本)而直接装入一个新页将其覆盖。 因此
在页表中增加是否修改过的标志,为“
1
”表示修改过,为“
0
”表示未修改过,格式为:
页号 标志 主存块号 修改标志 在磁盘上的位置
由于是模拟调度算法, 所以,不实际地启动调出一页和装入一页的程序, 而用输出调出的页
号和装入的页号来代替一次调出和装入的过程。
把第一题中程序稍作改动,与本题结合起来,
FIFO
页面调度模拟算法如图
5-2
。
(4)
如果一个作业的副本已在磁盘上, 在磁盘上的存放地
址以及已装入主存的页和作业
依次执行的指令序列都同第一题中(
4
)所示。于是增加了“修改标志”后的初始页表为:
页号 标志 主存块号 修改标志 在磁盘上的位置
0 1
5
0 011
1 1 8 0 012
2 1
9
0
013
3
1 1 0 021
4
0
0 022
5
0
0
023
6 0
0 121
按依次执行的指令序列,运行你所设计的程序,显示或打印每次调出和装入的页号, 以及执
行了最后一条指令后的数组
P
的值。
(5)
为了检查程序的正确性,可再任意确定一组指令序列,运行设计的程序,核对执 行的结果。
第三题:用最近最少用(
LRU
)页面调度算法处理缺页中断。
[
提示
]
:
(1)
在分页式虚拟存储系统中,当硬件发出“缺页中断”后,引出操作系统来处理这个
中断事件。如果主存中已经没有空闲块,则可用
LRU
页面调度算法把该作业中距现在最久
没有被访问过的一页调出, 存放到磁盘上。然后再把当前要访问的页装入该块。 调出和装入
后都要修改页表中对应页的标志。
(2) LRU
页面调度算法总是淘汰该作业中距现在最久没被访问过的那页, 因此可以用一
个数组来表示该作业已在主存的页面。 数组中的第一个元素总是指出当前刚访问的页号, 因
此最久没被访问过的页总是由最后一个元素指出。 如果主存只有四块空闲块且执行第一题中
提示(
4
)假设的指令序列,采用
LRU
页面调度算法,那么在主存中的页面变化情况如下:
(3)
编制一个
LRU
页面调度程序,为了提高系统效
率,如果淘汰的页在执行中没有修 改过,则可不必把该页调出。参看第二题中提示(
3
)。模拟调度算
法不实际地启动调出
页和装入一页的程序而用输出调出的页号和装入的页号来代替。把第一题中程序稍作改动, 与本题结
合起来,
LRU
页面调度模拟算法如图
5-3
。
(4)
按第一题中提示(
4
)的要求,建立一张初始页表,页表中为每一页增加“修改标 志”位(参考
第二题中提示(
4
))。然后按依次执行的指令序列,运行设计的程序,显示 或打印每次调出和装入的
页号,以及执行了最后一条指令后数组中的值。
(5)
为了检查程序的正确性,可再任意确定一组指令序列,运行设计的程序,核对执行 的结果。
四源程序
(1)
程序中使用的数据结构及符号说明
typedef struct //
作业
{
char name[10];
〃 作业名称
int pageNum;//
页号
int offset;//
单元号
,
偏移位移
}Job;
typedef struct //
页表
剩余13页未读,继续阅读
资源评论
hhappy0123456789
- 粉丝: 64
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功