- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统段表课程设计说明书
课程设计任务书
学生姓名: 朱东各 专业班级: 计算机0604
指导教师: 蔡 菁 工作单位: 计算机科学与技术学院
题 目: 模拟设计段页式虚拟存储管理中地址转换
初始条件:
1.预备内容:阅读操作系统的内存管理章节内容,理解段页式存储管理的思想及相应的分配主存的过程。
2.实践准备:掌握一种计算机高级语言的使用。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.实现段页式存储管理中逻辑地址到物理地址的转换。能够处理以下的情形:i)你认为你完成的设计哪些地方做得比较好或比较出色;
ii)什么地方做得不太好,以后如何改正;
iii)从本设计得到的收获(在编写,调试,执行过程中的经验和教训);
iv)完成本题是否有其他方法(如果有,简要说明该方法);
v)对实验题的评价和改进意见,请你推荐设计题目。
时间安排:
设计安排一周:周1、周2:完成程序分析及设计。
周2、周3:完成程序调试及测试。
周4、周5:验收、撰写课程设计报告。
(注意事项:严禁抄袭,一旦发现,一律按0分记)
指导教师签名: 年 月 日
系主任(或责任教师)签名: 年 月 日
模拟段页式虚拟存储管理中
地址转换
1需求分析
1.1段页式管理的基本思想
1.1.1基本思想
段式和页式存储管理各有优缺点,段页式存储管理系统,用分段的方法来分配和管理虚拟存储器,而用分页的方法来分配和管理主存。既有段式系统便于实现段的共享,段的保护,动态链接和段的动态增长等一系列优点,又能像页式系统那样,很好地解决内存的外碎片问题。
具体来说,把整个内存分成大小相等内存块,内存块从0开始依次编号。把用户程序分成若干段,每段有个段名。页面的大小和内存块相同,每段的各个页面都分别从0开始依次编号。虚空间的最小单位是页而不是段,内存就被分为若干个页,且每段所拥有的程序和数据在内存中可以分开存放,分段大小也不再受内存可用区的限制。
1.2段页式存储的原理
1.2.1虚地址的构成
逻辑地址有三部分构成:V=(S,P,d)即段号s,页号p和页内相对地址d,如下所示:
s p d
内存分配:
以块为单位进行内存分配,为了实现从逻辑地址到物理地址的转换,为每个作业或进程建立一张段表:段表中的段长即是页表长度,段表中的段内始址即是页表地址,每个段拥有一张页表,段内的页号映射为物理地址中的物理块号。
1.2.2段表和页表的构成
在段页式存储管理系统中,段表包含这样几个基本项:段号,状态,该段的页表长度,页表始址;页表包含的基本项是:页号,状态,块号。段页式管理中段表,页表以及内存的关系如下图:
1.2.3 动态地址变换过程
在段页式存储管理系统中,要对内存中的指令或数据进行一次存取操作至少需要访问3次内存。第一次是由段表寄存器得到段表始址去访问段表,然后取出对应段的页表地址。第二次则是访问页表得到所要访问的物理地址。只有在访问了段表和页表之后,,第三次才能访问真正要访问的物理单元。段页式存储管理系统地址变换如下所示:
2 功能设计(数据结构及模块说明)
2.1 存储结构说明
在此段页式存储管理系统中,我们采用以下数据结构来存储数据,存储结构用结构体和结构体数组来实现:
2.1.1段表
段号s 状态flag 页表长度plen 页表始址psta
//段表
typedef struct Stack
{
int num;//段号
int flag;//段状态
int plen;//页表长度
int psta;//页表始址
}Stack;
状态位(是否在内存中) 块号block
//页表
typedef struct Page
{
int num;//页号
int flag;//页状态,即是否在内存。
int block;//该页对应的块号
}Page;
//快表
typedef struct Quick
{
int qs;//快表段号
int qp;//快表页号
int qb;//快表段号
}Quick;
//段表寄存器
typedef struct Stare
{
int ssta;//段表始址
int slen;//段表长度
}Stare;
3 程序设计
3.1 本程序平台
本实验使用VC++ 6.0平台,使用基本的控制台应用程序,单文档结构,主要数据结构是结构体间的关系。打开VC++6.0建立一个空工程,然后简历C++源文件,根据数据结构编写代码。
3.2变量和函数说明
3.2.1 变量说明
Stack ss[10];//全局变量,用来存放所有进程的段,数组下
文档评论(0)