计算机操作系统实验_源码_模拟请求分页虚拟存储管理中的硬件地址变换过程_第1页
计算机操作系统实验_源码_模拟请求分页虚拟存储管理中的硬件地址变换过程_第2页
计算机操作系统实验_源码_模拟请求分页虚拟存储管理中的硬件地址变换过程_第3页
计算机操作系统实验_源码_模拟请求分页虚拟存储管理中的硬件地址变换过程_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实实 验验 报报 告告 模拟请求分页虚拟存储管理中的硬件地址变换过程模拟请求分页虚拟存储管理中的硬件地址变换过程 实验目的 1 通过实验加深对请求分页虚拟存储器管理中的地址变换加深理解 2 熟练使用所学知识完成地址转换过程 实验原理 1 请求分页虚拟存储管理技术是把作业地址空间的全部信息存放在磁盘上 当 作业被选中运行时 先把作业的开始几页装入主存并启动运行 为此在为作业建 立页表时 应说明哪些页已在主存 哪些页不在主存 页表的格式如表 1 1 所示 其 中 标志 表示对应页是否已经装入主存 1 表示对应页已经装入主存 0 表示对应页未装入主存 主存快号 表示该页对应的主存快号 修改位 指示该页调入主存后是否修改过的标志 外存地址 指示该页所在的外存地址 自己设计一个主存分块表 2 作业业执行时 指令中的逻辑地址指出参加运算的操作数 或指令 地址中的页 号和页内偏移量 硬件地址转换机构按页号查页表 若该页的标志为 1 则表示该页已在主存 从而找到该页对应的主存块号 根据关系式 绝对地址 块号 块的长度 页内偏移量 计算出欲访问的主存地址 由于页号为 2 的整次幂 所以只要将块号与页内偏移 量相拼接 放入主存地址寄存器即可 按照该地址取指令或取操作数 完成指定的 操作 3 设计一个 地址变换 程序 模拟硬件地址变化过程 当访问的页在主存时 则 形成绝对地址后 不去模拟指令的执行 而是输出被转换的地址 当访问的页不在 主存时 输出 该页不在主存 产生缺页中断 以表示产生一次缺页中断 4 进行缺页中断处理 中断返回后 重新执行该指令 假定主存的每块长度为 64 个字节 现有一个具有 8 页的作业 系统为其分配了 4 个主存块 即 m 4 且最多分 4 块 其中第 0 页至第 3 页已经装入主存 该作 业的页表如表 10 2 所示 地址变换算法框图如图 10 1 所示 运行设计的地址变换程序 显示或打印运行结果 因为只是模拟地址变换 并不 模拟指令的执行 故不考虑上述指令的操作结果 页号标志主存号修改位外存地址 表 10 1 页表 页号标志主存号外存地址修改位 0150111 1180121 2190130 31100150 40017 50025 60212 70213 表 10 2 页表 1 实验源码 include using namespace std struct Page int pno 页号 int flag 标志位 int cno 主存号 int modf 修改位 int addr 外存地址 Page void changeaddr struct Page p int logaddr 地址变换 int j logaddr 64 对应的块号 int k logaddr 64 对应的偏移量 int flag 0 int addr for int i 0 i 8 i if p i pno j 找到对应的页号 if p i flag 1 页面标志为 1 addr p i cno 64 k cout 物理地址为 addr endl cout 详细信息 t 页面号 p i pno t 主存号 p i cno t 偏移量 k endl flag 1 break if flag 0 cout 该页不在主存 产生缺页中断 endl void main int menu int ins 指令逻辑地址 struct Page p 8 p 0 pno 0 p 0 flag 1 p 0 cno 5 p 0 modf 1 p 0 addr 011 p 1 pno 1 p 1 flag 1 p 1 cno 8 p 1 modf 1 p 1 addr 012 p 2 pno 2 p 2 flag 1 p 2 cno 9 p 2 modf 0 p 2 addr 013 p 3 pno 3 p 3 flag 1 p 3 cno 10 p 3 modf 0 p 3 addr 015 p 4 pno 4 p 4 flag 0 p 4 addr 017 p 5 pno 5 p 5 flag 0 p 5 addr 025 p 6 pno 6 p 6 flag 0 p 6 addr 212 p 7 pno 7 p 7 flag 0 p 7 addr 213 cout 欢迎使用分页虚拟存储器硬件地址变换算法 endl cout t t1 输入指令 t t endl cout t t2 退出程序 t t endl cout 欢迎使用分页虚拟存储器硬件地址变换算法 endl cout endl menu while menu switch menu case 1 cout ins changeaddr p ins break case 2 cout 谢谢使用 下次再见 endl exit 0 break default cout 输入有误 请重新输入 endl break cout endl menu 实验截图 实验小结 1 通过对实验要求的解读 能够理解题目提出的要求 并能够按照要求进行页 表的初始化以及相关主存的分配工作 2 实验中使用的地址变换机构可通过逻辑地址与主存块长度作取整运算获得逻 辑地址对应的页面号 再通过求余运算获得页内偏移地址 3 实验的不足与可改进之处 当逻辑地址对应的页面在主存中时 地址变换完 全正确 符合要求 当页面不在主存中时 仅输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论