模拟段页式存储管理地址变换.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模拟段页式存储管理地址变换 模拟段页式存储管理地址变换 PAGE 模拟段页式存储管理地址变换 计算机科学与技术学院 2007-2008 学年第一学期 《 操作系统》课程设计 题目: 模拟段页式存储管理地址变换 教师: 冯霞 班级: 050341D班 学号: 0 姓名: 陈玉虎 成绩: 1. 题目分析 设计目的 了解内存管理机制,掌握段页式虚拟存储技术; 理解内存分配原理,特别是以页面为单位的虚拟内存分配方法; 用可视化界面来掌握操作系统的知识。 设计内容 根据逻辑地址中的段号进行查找,先查找快表。如果找到,则形成物理地址,否则进行后续步骤; 通过段表始址寄存器,查找段表在内存中的始址; 通过段表并根据段号,查找页表所在位置; 访问页表,根据逻辑页号查找该页所在的物理块号; 将物理块号和逻辑地址中的页内地址拼接,形成访问内存单元的物理地址。 相关知识概述 段页式存储管理的主要内容是: (1)用页式方法来分配和管理内存空间,即:把内存分为若干大小相等的页面; (2)用段式方法对用户程序按照其内在的逻辑关系划分成若干段; (3)再按照划分的内存页面的大小,把每一段内划分成若干大小相等的页面; (4)用户程序的逻辑地址由三部分组成:段号(s),页号(p),页内地址(d); (5)内存是以页为基本单位分配给每个用户程序的,在逻辑上相邻的页面在内存不一定相邻。 基本设计思路 (1)建立段表 系统为每个用户程序建立一张段表,用于记录各段的页表始址和页表长度。 (2)建立页表 系统为用户程序的每一段各建立一张页表,用于记录该段中各逻辑页号与物理块号之间的对应关系。 段表、页表和内存的关系如图所示。 段表地址寄存器 段表地址寄存器 段表起始地址 段号 页表长度 页表始址 页号 块号 0段页表 页号 块号 1段页表 内存空间 如图 段表、页表和内存的关系 段表 (3)建立内存空闲页面表 整个系统建立一张内存空闲页面表,用于记录并管理内存空闲页面。 (4)硬件支持 为加快地址映射速度,硬件需要提供如下2个寄存器: ① 段表始址寄存器; ② 段表长度寄存器; (5)地址映射过程 在段页式存储管理中,要访问内存的单元,则要经过如下地址转换步骤,才能得到最终的物理地址。 根据逻辑地址中的段号查找快表。如果找到,则形成物理地址,否则进行后续步骤; 通过段表始址寄存器,查找段表在内存中的始址; 通过段表并根据段号,查找页表所在位置; 访问页表,根据逻辑页号查找该页所在的物理块号; 将物理块号和逻辑地址中的页内地址拼接,形成访问内存单元的物理地址; 2. 概要设计 功能模块 逻辑地址(段号、页号、页内地址) 逻辑地址(段号、页号、页内地址) 段越界段号段表长度 N 段越界 段号段表长度 Y 段号— 段号—(段表始址寄存器)段号S Y 页越界页号页表长度 N 页越界 页号页表长度 页号 页号—(页表始址寄存器)页号P 页内地址物理块号 页内地址 物理块号 物理地址 物理地址 返回 返回 主要数据结构描述 逻辑地址对段表与页表中的数据的存储如下: 逻辑地址 ………段号:0 段号: ……… 段号:0 段号:1 00 0 0 2121页号: 2 1 2 1 4343 4 3 4 3 6565 6 5 6 5 8787 8 7 8 7 99 9 9 段表和页表的存储以由低到高的优先级顺序进行编排,在进行程序分段分析的时候用到了堆栈和队列,以便对程序的语句进行逐个分析。 3. 详细设计 主要算法描述 主要代码:void CScannerDlg::ShowOut() { m33=0; m10=1A; 编码实现 开发工具简介 Visual C++ 实现过程总结 对于分析器的设计只设计了四个段,整个程序都是在围绕四个程序段进行存取。这是一个段页式地址转换的过程,其实,数据的存取对于此程序是个

文档评论(0)

认真对待的苹果 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档