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

  1. 1、本文档共10页,可阅读全部内容。
  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文档。上传文档
查看更多
[模拟段页式存储管理地址变换

计算机科学与技术学院 2007-2008 学年第一学期 《 操作系统》课程设计 题目: 模拟段页式存储管理地址变换 教师: 冯霞 班级: 050341D班 学号: 050341404 姓名: 陈玉虎 成绩: 1. 题目分析 1.1 设计目的 ? 了解内存管理机制,掌握段页式虚拟存储技术; ? 理解内存分配原理,特别是以页面为单位的虚拟内存分配方法; ? 用可视化界面来掌握操作系统的知识。 1.2 设计内容 ? 根据逻辑地址中的段号进行查找,先查找快表。如果找到,则形成物理地址,否则进行后续步骤; ? 通过段表始址寄存器,查找段表在内存中的始址; ? 通过段表并根据段号,查找页表所在位置; ? 访问页表,根据逻辑页号查找该页所在的物理块号; ? 将物理块号和逻辑地址中的页内地址拼接,形成访问内存单元的物理地址。 1.3 相关知识概述 ? 段页式存储管理的主要内容是: ? (1)用页式方法来分配和管理内存空间,即:把内存分为若干大小相等的页面; ? (2)用段式方法对用户程序按照其内在的逻辑关系划分成若干段; ? (3)再按照划分的内存页面的大小,把每一段内划分成若干大小相等的页面; ? (4)用户程序的逻辑地址由三部分组成:段号(s),页号(p),页内地址(d); ? (5)内存是以页为基本单位分配给每个用户程序的,在逻辑上相邻的页面在内存不一定相邻。 1.4 基本设计思路 ? (1)建立段表 ? 系统为每个用户程序建立一张段表,用于记录各段的页表始址和页表长度。 ? (2)建立页表 ? 系统为用户程序的每一段各建立一张页表,用于记录该段中各逻辑页号与物理块号之间的对应关系。 ? 段表、页表和内存的关系如图所示。 ? (3)建立内存空闲页面表 ? 整个系统建立一张内存空闲页面表,用于记录并管理内存空闲页面。 ? (4)硬件支持 ? 为加快地址映射速度,硬件需要提供如下2个寄存器: ① 段表始址寄存器; ② 段表长度寄存器; ? (5)地址映射过程 ? 在段页式存储管理中,要访问内存的单元,则要经过如下地址转换步骤,才能得到最终的物理地址。 ? 根据逻辑地址中的段号查找快表。如果找到,则形成物理地址,否则进行后续步骤; ? 通过段表始址寄存器,查找段表在内存中的始址; ? 通过段表并根据段号,查找页表所在位置; ? 访问页表,根据逻辑页号查找该页所在的物理块号; ? 将物理块号和逻辑地址中的页内地址拼接,形成访问内存单元的物理地址; 2. 概要设计 2.1 功能模块 N Y Y N 2.2 主要数据结构描述 ? 对段表与页表中的数据的存储如下: 页号: 段表和页表的存储以由低到高的优先级顺序进行编排,在进行程序分段分析的时候用到了堆栈和队列,以便对程序的语句进行逐个分析。 3. 详细设计 3.1 主要算法描述 主要代码:void CScannerDlg::ShowOut() { m33=0; m10="1A"; //初始化常数 m7=1; m11="14"; m8=2; m12="B3"; m9=3; m13="4C"; m18=0; m14=0; m19=1; m15=10; m20=2; m16=20; m21=3; m17=30; m22=10; m23=10; m26=0; m24=10; m25=10; m28=6; UpdateData(false); m_result+="----(段0)关键字段----"; m_result+="\r\n"; CVocabulary bu; int n1=0; for(int i=1;i<39;i++) { if(PrimaryKey[i]==1) { m

文档评论(0)

guojiahao8 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档