操作系统段表课程设计说明书.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

2017ll + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档