- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)