欢迎来到天天文库
浏览记录
ID:12539664
大小:106.50 KB
页数:10页
时间:2018-07-17
《模拟段页式存储管理地址变换》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计算机科学与技术学院2007-2008学年第一学期《操作系统》课程设计题目:模拟段页式存储管理地址变换教师:班级:050341D班学号:050341404姓名:成绩:1.题目分析1.1设计目的l了解内存管理机制,掌握段页式虚拟存储技术;l理解内存分配原理,特别是以页面为单位的虚拟内存分配方法;l用可视化界面来掌握操作系统的知识。1.2设计内容l根据逻辑地址中的段号进行查找,先查找快表。如果找到,则形成物理地址,否则进行后续步骤;l通过段表始址寄存器,查找段表在内存中的始址;l通过段表并根据段号,查找页表所在位置;l访问页表,根据逻辑页号查找该页所在
2、的物理块号;l将物理块号和逻辑地址中的页内地址拼接,形成访问内存单元的物理地址。1.3相关知识概述l段页式存储管理的主要内容是:l(1)用页式方法来分配和管理内存空间,即:把内存分为若干大小相等的页面;l(2)用段式方法对用户程序按照其内在的逻辑关系划分成若干段;l(3)再按照划分的内存页面的大小,把每一段内划分成若干大小相等的页面;l(4)用户程序的逻辑地址由三部分组成:段号(s),页号(p),页内地址(d);l(5)内存是以页为基本单位分配给每个用户程序的,在逻辑上相邻的页面在内存不一定相邻。1.4基本设计思路l(1)建立段表l系统为每个用户程
3、序建立一张段表,用于记录各段的页表始址和页表长度。l(2)建立页表l系统为用户程序的每一段各建立一张页表,用于记录该段中各逻辑页号与物理块号之间的对应关系。l段表、页表和内存的关系如图所示。段表地址寄存器段表起始地址段号页表长度页表始址页号块号0段页表页号块号1段页表内存空间如图段表、页表和内存的关系段表l(3)建立内存空闲页面表l整个系统建立一张内存空闲页面表,用于记录并管理内存空闲页面。l(4)硬件支持l为加快地址映射速度,硬件需要提供如下2个寄存器:①段表始址寄存器;②段表长度寄存器;l(5)地址映射过程l在段页式存储管理中,要访问内存的单元
4、,则要经过如下地址转换步骤,才能得到最终的物理地址。l根据逻辑地址中的段号查找快表。如果找到,则形成物理地址,否则进行后续步骤;l通过段表始址寄存器,查找段表在内存中的始址;l通过段表并根据段号,查找页表所在位置;l访问页表,根据逻辑页号查找该页所在的物理块号;l将物理块号和逻辑地址中的页内地址拼接,形成访问内存单元的物理地址;2.概要设计2.1功能模块逻辑地址(段号、页号、页内地址)段越界段号<段表长度NY段号—>(段表始址寄存器)段号SY页越界页号<页表长度N页号—>(页表始址寄存器)页号P页内地址物理块号物理地址返回2.2主要数据结构描述逻辑
5、地址l对段表与页表中的数据的存储如下:………段号:0段号:1002121页号:43436565878799段表和页表的存储以由低到高的优先级顺序进行编排,在进行程序分段分析的时候用到了堆栈和队列,以便对程序的语句进行逐个分析。3.详细设计3.1主要算法描述主要代码:voidCScannerDlg::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;m2
6、2=10;m23=10;m26=0;m24=10;m25=10;m28=6;UpdateData(false);m_result+="----(段0)关键字段----";m_result+="r";CVocabularybu;intn1=0;for(inti=1;i<39;i++){if(PrimaryKey[i]==1){m_result+=bu.Vocabulary[i];n1+=1;m_result+="r";}}m1=n1;UpdateData(false);m_result+="----(段1)符号段----";m_resul
7、t+="r";intn2=0;for(i=51;i<86;i++){if(Symbol[i-50]==1){m_result+=bu.Vocabulary[i];n2+=1;m_result+="r";}}m2=n2;UpdateData(false);m_result+="----(段2)标识段-----";m_result+="r";intn3=0;for(i=0;i<50;i++){if(Identifier[i]!=""){m_result+=Identifier[i];n3+=1;m_result+="r";}}m
8、3=n3;UpdateData(false);m_result+="-----(段3)常数段----";m_result+
此文档下载收益归作者所有