离散式存储管理

更新时间:2023-12-24 07:43:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

沈 阳 工 程 学 院

操作系统课程设计

设计题目: 离散式存储管理

系 别 信息学院 班级 计算机C132 学生姓名 张欢 李红 王硕 张一晗 学号 09 01 13 22 指导教师 曲乐声 吕海华 职称 讲师 讲师 起止日期: 2015 年 7月 6日起——至 2015 年 7月 10日止

沈 阳 工 程 学 院

操作系统课程设计任务书

设计题目: 离散式存储管理

系 别 班级 学生姓名 学号 09 指导教师 职称 讲师 讲师 课程设计进行地点: F606 任 务 下 达 时 间: 2015 年 7 月 3 日

起止日期:2015年7月6日起——至2015年7月10日止 系部主任 2015年 7月3日批准

一、设计目的

操作系统课程设计是在完成操作系统理论课程学习之后进行的实践性教学。通过课程设计,综合运用操作系统课程的理论,结合实际,加深对操作系统知识全面、深入地理解,进一步掌握操作系统的基本概念、原理和实现方法,能够模拟操作系统对计算机系统的管理和控制功能,培养学生分析和解决实际问题的能力,并使所学知识得到进一步巩固、深化和扩展。

二、设计的主要内容及要求

离散式存储管理

设计内容:利用离散存储管理的思想实现存储管理。 设计要求:

(1)掌握页式和段式存储管理的原理

(2)实现页式和段式存储管理方式:内存的分配和回收,地址转换等内容

三、对设计说明书撰写内容、格式、字数的要求

1.课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于3000字。

2.学生应撰写的内容为:目录、正文、参考文献等。课程设计说明书(论文)的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。

3.说明书(论文)手写或打印均可。手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。

4. 课程设计说明书(论文)装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。

四、 设计完成后应提交成果的种类、数量、质量等方面的要求

提交课程设计说明书一份。在说明书中要有设计原理、硬件电路接线图、设计的程序及必要注释等。

五、时间进度安排

序 号 1 2 3 4 5 主 要 内 容 进行设计准备,阅读资料,分析设计任务书,明确设计要求、内容和步骤 绘制程序流程图,编写相应的程序代码 上机调试 整理实验数据,撰写课程设计报告 成绩评定 合 计 学 时 0.5天 2天 1.5天 0.5天 0.5天 5天 备 注 七、主要参考文献

1.《操作系统基础》,清华大学出版社,屠立德、屠祁编著。 2.《计算机操作系统》,西安电子科技大学出版社,汤子瀛等编。 3.《计算机操作系统教程》,清华大学出版社,张学尧编。 4.《计算机操作系统》,华中理工大学出版社,庞丽萍等编。 5.《操作系统教程》,高等教育出版社,孙钟秀主编。

6.《Linux操作系统实验教程》,高等教育出版社,费翔林主编。 7.《操作系统原理与Linux》,人民邮电出版社,马季兰,冯秀芳等。 8.《操作系统习题与解析》,清华大学出版社,曾平,李春葆。

沈 阳 工 程 学 院 操作系统 课程设计成绩评定表

系(部): 信息学院 班级: 计 学生姓名:

指 导 教 师 评 审 意 见 评价 内容 具 体 要 求 权重 0.1 5 评 分 4 3 2 加权分 调研 能独立查阅文献,收集资料;能制定课程设计方案论证 和日程安排。 工作工作态度认真,遵守纪律,出勤情况是否良好,能能力 够独立完成设计工作, 态度 工作量 按期圆满完成规定的设计任务,工作量饱满,难度适宜。 0.2 5 4 3 2 0.2 5 4 3 2 说明说明书立论正确,论述充分,结论严谨合理,文字书的通顺,技术用语准确,符号统一,编号齐全,图表质量 完备,书写工整规范。 0.5 5 4 3 2 指导教师评审成绩 (加权分合计乘以12) 指 导 教 师 签 名: 分 加权分合计 年 月 日 答 辩 小 组 意 见 评价 内容 具 体 要 求 权重 0.2 0.5 评 分 加权分 报告思路清晰,语言表达准确,概念清楚,论点正确;内容 分析归纳合理;结论严谨;设计具有应用价值。 答辩 回答问题有理论根据,基本概念清楚。主要问题回答准确、深入。 5 5 5 4 4 4 3 3 3 2 2 2 说明说明书立论正确,论述充分,结论严谨合理,文字书的通顺,技术用语准确,符号统一,编号齐全,图表质量 完备,书写工整规范。 0.3 答辩小组评审成绩 (加权分合计乘以8) 评 阅 教 师 签 名: 课 程 设 计 总 评 成 绩 分 加权分合计 年 月 日 分

沈 阳 工 程 学 院 操作系统 课程设计成绩评定表

系(部): 信息学院 班级: 学生姓名:

指 导 教 师 评 审 意 见 评价 内容 具 体 要 求 权重 0.1 5 评 分 4 3 2 加权分 调研 能独立查阅文献,收集资料;能制定课程设计方案论证 和日程安排。 工作工作态度认真,遵守纪律,出勤情况是否良好,能能力 够独立完成设计工作, 态度 工作量 按期圆满完成规定的设计任务,工作量饱满,难度适宜。 0.2 5 4 3 2 0.2 5 4 3 2 说明说明书立论正确,论述充分,结论严谨合理,文字书的通顺,技术用语准确,符号统一,编号齐全,图表质量 完备,书写工整规范。 0.5 5 4 3 2 指导教师评审成绩 (加权分合计乘以12) 指 导 教 师 签 名: 分 加权分合计 年 月 日 答 辩 小 组 意 见 评价 内容 具 体 要 求 权重 0.2 0.5 评 分 加权分 报告思路清晰,语言表达准确,概念清楚,论点正确;内容 分析归纳合理;结论严谨;设计具有应用价值。 答辩 回答问题有理论根据,基本概念清楚。主要问题回答准确、深入。 5 5 5 4 4 4 3 3 3 2 2 2 说明说明书立论正确,论述充分,结论严谨合理,文字书的通顺,技术用语准确,符号统一,编号齐全,图表质量 完备,书写工整规范。 0.3 答辩小组评审成绩 (加权分合计乘以8) 评 阅 教 师 签 名: 课 程 设 计 总 评 成 绩 分 加权分合计 年 月 日 分

沈 阳 工 程 学 院 操作系统 课程设计成绩评定表

系(部): 信息学院 班级: 学生姓名:

指 导 教 师 评 审 意 见 评价 内容 具 体 要 求 权重 0.1 5 评 分 4 3 2 加权分 调研 能独立查阅文献,收集资料;能制定课程设计方案论证 和日程安排。 工作工作态度认真,遵守纪律,出勤情况是否良好,能能力 够独立完成设计工作, 态度 工作量 按期圆满完成规定的设计任务,工作量饱满,难度适宜。 0.2 5 4 3 2 0.2 5 4 3 2 说明说明书立论正确,论述充分,结论严谨合理,文字书的通顺,技术用语准确,符号统一,编号齐全,图表质量 完备,书写工整规范。 0.5 5 4 3 2 指导教师评审成绩 (加权分合计乘以12) 指 导 教 师 签 名: 分 加权分合计 年 月 日 答 辩 小 组 意 见 评价 内容 具 体 要 求 权重 0.2 0.5 评 分 加权分 报告思路清晰,语言表达准确,概念清楚,论点正确;内容 分析归纳合理;结论严谨;设计具有应用价值。 答辩 回答问题有理论根据,基本概念清楚。主要问题回答准确、深入。 5 5 5 4 4 4 3 3 3 2 2 2 说明说明书立论正确,论述充分,结论严谨合理,文字书的通顺,技术用语准确,符号统一,编号齐全,图表质量 完备,书写工整规范。 0.3 答辩小组评审成绩 (加权分合计乘以8) 评 阅 教 师 签 名: 课 程 设 计 总 评 成 绩 分 加权分合计 年 月 日 分

沈 阳 工 程 学 院 操作系统 课程设计成绩评定表

系(部): 信息学院 班级: 学生姓名:

指 导 教 师 评 审 意 见 评价 内容 具 体 要 求 权重 0.1 5 评 分 4 3 2 加权分 调研 能独立查阅文献,收集资料;能制定课程设计方案论证 和日程安排。 工作工作态度认真,遵守纪律,出勤情况是否良好,能能力 够独立完成设计工作, 态度 工作量 按期圆满完成规定的设计任务,工作量饱满,难度适宜。 0.2 5 4 3 2 0.2 5 4 3 2 说明说明书立论正确,论述充分,结论严谨合理,文字书的通顺,技术用语准确,符号统一,编号齐全,图表质量 完备,书写工整规范。 0.5 5 4 3 2 指导教师评审成绩 (加权分合计乘以12) 指 导 教 师 签 名: 分 加权分合计 年 月 日 答 辩 小 组 意 见 评价 内容 具 体 要 求 权重 0.2 0.5 评 分 加权分 报告思路清晰,语言表达准确,概念清楚,论点正确;内容 分析归纳合理;结论严谨;设计具有应用价值。 答辩 回答问题有理论根据,基本概念清楚。主要问题回答准确、深入。 5 5 5 4 4 4 3 3 3 2 2 2 说明说明书立论正确,论述充分,结论严谨合理,文字书的通顺,技术用语准确,符号统一,编号齐全,图表质量 完备,书写工整规范。 0.3 答辩小组评审成绩 (加权分合计乘以8) 评 阅 教 师 签 名: 课 程 设 计 总 评 成 绩 分 加权分合计 年 月 日 分

操作系统课程设计分工表

姓名(学号) 完成任务 备注 () 组长 组员 () 组员 () 组员

沈阳工程学院信息学院操作系统课程设计 摘 要

摘 要

在离散式存储管理中,可分为三大部分:页式存储管理、段式存储管理和段页式存储管理。

将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内页的划分存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。

段式管理(segmentation),是指把一个程序分成若干个段(segment)进行存储,每个段都是一个逻辑实体(logical entity),程序员需要知道并使用它。它的产生是与程序的模块化直接有关的。段式管理是通过段表进行的,它包括段号或段名、段起点、装入位、段的长度等。此外还需要主存占用区域表、主存可用区域表。

分配算法:首先,请求表给出进程或作业要求的页面数。然后,由存储页面表检查是否有足够的空闲页面,如果没有,则本次无法分配。如果有则首先分配设置页表,并请求表中的相应表项后,按一定的查找算法搜索出所要求的空闲页面,并将对应的页好填入页表中。

地址变换:首先,需要有一个装置页表始址和页表长度用的控制寄存器。系统所调度执行的进程页表始址和长度从请求表中取出送入控制寄存器中。然后,由控制寄存器页表始址可以找到页表所在位置。

静态页式管理解决了分区管理时的碎片问题。但是,由于静态页式管理要求进程或作业在执行前全部装入内存,如果可用页面数小于用户要求时,该作业或进程只好等待。而且作业和进程的大小仍受内存可用页面数的限制。

关键词 离散式存储管理,段式,页式,地址转换。

I

沈阳工程学院信息学院操作系统课程设计 目 录

目 录

摘 要 .............................................................................................................................................. I 第1章 绪 论 .......................................................................................................................... - 1 - 第2章 程序分析 ...................................................................................................................... - 2 - 2.1 分页存储的原理 ............................................................................................................. - 2 - 2.1.1 存储步骤 ................................................................................................................... - 2 - 2.1.2 地址结构 ................................................................................................................... - 2 - 2.1.3 地址映射 ................................................................................................................... - 2 - 2.1.4 地址变换原理及步骤 ............................................................................................... - 3 - 2.2 分段存储的原理 ............................................................................................................. - 5 - 2.2.1 存储步骤 ................................................................................................................... - 5 - 2.2.2 地址结构 ................................................................................................................... - 5 - 2.2.3 地址映射 ................................................................................................................... - 5 - 2.2.4 地址变换原理及步骤 ............................................................................................... - 6 - 第3章 程序设计及结果分析 ................................................................................................ - 8 - 3.1 页式地址换算 ................................................................................................................. - 8 - 3.1.1 程序流程图 ............................................................................................................... - 8 - 3.1.2 程序源代码 ............................................................................................................... - 8 - 3.1.3 运行结果 ................................................................................................................. - 12 - 3.2 段式地址换算 ............................................................................................................... - 14 - 3.2.1 程序流程图 ............................................................................................................. - 14 - 3.2.2 程序源代码 ............................................................................................................. - 14 - 3.2.3 运行结果 ................................................................................................................. - 15 - 3.3 段页式地址换算 ........................................................................................................... - 17 - 3.3.1 程序流程图 ............................................................................................................. - 17 - 3.3.2 程序源代码 ............................................................................................................. - 17 - 3.3.3 运行结果 ................................................................................................................. - 18 - 结 论 ...................................................................................................................................... - 21 -

沈阳工程学院信息学院操作系统课程设计 第1章 绪论

第1章 绪 论

说到离散式存储,我们就有必要了解以下基本的存储分配方式。那么“基本的存储分配方式”都是哪几类如图1.1所示: 连续 动态分区 固定分区 单一连续 基本的分配方式可重定位分区 紧凑功能 页式 离散 段式 段页式 由上图我们可以看到,基本的存储分配方式有哪些。其中最早的分配方式是以连续的分配方式。但连续的分配方式会形成许多内存碎片,虽可通过“紧凑”功能将碎片合并,但会付出很大开销。于是出现离散分配方式:将一个进程直接分散地装入到许多不相邻的内存分区中。从而减少了内存的浪费和开销。 图1.1 基本的存储分配方式 - 1 -

沈阳工程学院信息学院操作系统课程设 第3章 程序设计及结果分析

第2章 程序分析

2.1 分页存储的原理

2.1.1 存储步骤

逻辑空间等分为页;并从0开始编号。内存空间等分为块,与页面大小相同;从0开始编号。分配内存时,以块为单位将进程中的若干个页分别装入到多个可以不相邻接的物理块中。

2.1.2 地址结构

页式存储的地址结构分两部分:页号、位移量(页内地址)。页内地址的位数可以决定页的大小。逻辑地址=页号&位移量(&号是连接符号,是将页号作为逻辑地址的最高位)。

2.1.3 地址映射 地址映射是解决逻辑地址与物理地址之间的问题,如下图2.1所示:(物理地址=块号&块内地址) 图2.1 地址映射 逻辑地址 物理地址 页号&页内位移量 块号&块内位移量 因为块的大小=页的大小,所以块内位移量=页内位移量,所以只需求出块号即可。如何求块号呢,就需要页表的帮助来实现,页表如图2.2所示。

- 2 -

沈阳工程学院信息学院操作系统课程设 第3章 程序设计及结果分析

功能:页号 物理块号

图2.2 页表

给定一个逻辑地址和页面大小,如何计算物理地址。 1) 根据页面大小可计算出页内地址的位数。

2) 页内地址位数结合逻辑地址计算出页内地址(即,块内地址)和页号。 3) 页号结合页表,即可得出块号。 4) 块号&块内地址即可得出物理地址。

2.1.4 地址变换原理及步骤

采用分页式存储,它的地址变换原理,如图2.3所示:

图2.3 地址变换原理

- 3 -

沈阳工程学院信息学院操作系统课程设 第3章 程序设计及结果分析

页式存储的地址变换步骤如下:

1) 在被调进程的PCB中取出页表始址和页表大小,装入页表寄存器。

2) 页号与页表寄存器的页表长度比较,若页号大于等于页表长度,发生地址越界中断,停止调用,否则继续。

3) 由页号结合页表始址求出块号。 4) 块号&页内地址,即得物理地址。

- 4 -

沈阳工程学院信息学院操作系统课程设 第3章 程序设计及结果分析

2.2 分段存储的原理

2.2.1 存储步骤

逻辑空间分为若干个段,每个段定义了一组有完整逻辑意义的信息,如图2.4所示:

图2.4 段的信息

要注重理解,完整的逻辑意义信息,就是说将程序分页时,页的大小是固定的,只根据页面大小死生将程序切割开;而分段时比较灵活,只有一段程序有了完整的意义才将这一段切割开。

2.2.2 地址结构

段式存储的地址结构分两部分:段号、位移量(段内地址)如图2.5所示。

图2.5 地址结构

段内地址的位数可以决定段的大小,逻辑地址=段号&段内地址(&号是连接符号,是将段号作为逻辑地址的最高位)。

2.2.3 地址映射

(逻辑地址--->物理地址),如图2.6所示:(物理地址=基址+段内地址)(注意为+号,而不是&号)

- 5 -

沈阳工程学院信息学院操作系统课程设 第3章 程序设计及结果分析

逻辑地址 物理地址 段号&段内地址 基址+段内地址 图2.6 地址映射 由上图可知若想求物理地址,只需求出基址即可。 如何求基址呢,就需要段表来帮助实现。段表如图2.7所示。 功能:段号 基址

图2.7 段表

求基址的过程与页式存储中求块号的过程原理相同,这里需要注意的是,物理地址是基址+段内地址,而不是基址&段内地址,由逻辑地址得到段号、段内地址,再根据段号和段表求出基址,再由基址+段内地址即可得物理地址。

2.2.4 地址变换原理及步骤

采用分段式存储,它的地址变换原理,如图2.8所示。

- 6 -

沈阳工程学院信息学院操作系统课程设 第3章 程序设计及结果分析

图2.8 地址变换原理 段式存储的地址变换步骤如下: 1) 在被调进程的PCB中取出段表始址和段表长度,装入控制寄存器。 2) 段号与控制寄存器的页表长度比较,若页号大于等于段表长度,发生地址越界中断,停止调用,否则继续。 3) 由段号结合段表始址求出基址。 4) 基址+段内地址,即得物理地址。 以上即为段式存储的原理及整个过程。 分页和分段的主要区别如表1.1所示: 表1.1 段页的区别 分页 分段 信息的物理单位 信息的逻辑单位 大小一样,由系统固定 大小不等,由用户确定 地址空间是一维的 地址空间是二维的 - 7 -

沈阳工程学院信息学院操作系统课程设 第3章 程序设计及结果分析

第3章 程序设计及结果分析

3.1 页式地址换算

3.1.1 程序流程图

3.1.2 程序源代码

#include #include

int page(int A,int L);

int Segment(int sn,int sl);

- 8 -

沈阳工程学院信息学院操作系统课程设 第3章 程序设计及结果分析

int SegPagt(int sn,int pn,int pd); typedef struct segtable {

int segf[256]; int segl[256]; }

segtable;

struct segtable st; typedef struct segpagt {

int segf[256]; int segl[256]; int ptl[256]; int pt[256]; int pf[256]; int pl; }

segpagt;

struct segpagt sp;

int main() {

int code;

int pl,pa,sn,sd,pd,pn,pc; //const int ptl; int temp; do{

printf(\地 址 换 算 过 程-------------\\n\\n\printf(\本程序由计算机c132班设计--2015年7月8日*****\\n\printf(\分页式地址换算\\n\

printf(\分段式地址换算\\n\printf(\段页式地址换算\\n\printf(\结束运行\\n\\n\

printf(\printf(\请输入1-4:\scanf(\switch(temp) {

- 9 -

沈阳工程学院信息学院操作系统课程设 第3章 程序设计及结果分析

case 1:

printf(\预设页表长度为256\\n\page(pl,pa); break; case 2: int pl,pa;

printf(\预设段表长度为256\\n\printf(\请输入您的逻辑地址段号:\scanf(\

printf(\请输入您的页内地址:\

scanf(\if(pl>256)

printf(\段号%d大于段表长度256,越界中断\\n\else{

if(pa>256)

printf(\段内地址%d大于段长度256,越界中断\\n\else {

Segment(pl,pa); }

}

break; case 3:

printf(\预设段表长度为256,页面大小为256\\n\printf(\请输入您的逻辑地址段号:\scanf(\

printf(\请输入您的页号:\scanf(\

printf(\请输入您的页内地址:\scanf(\

if(pl>256)

printf(\段号%d大于页表长度256,越界中断\\n\else{

if(pa>256)

printf(\页号长度%d大于页表长度256,越界中断\\n\else {

if(pc>256)

- 10 -

沈阳工程学院信息学院操作系统课程设 第3章 程序设计及结果分析

printf(\页内地址%d大于页面长度256,越界中断\\n\else

SegPagt(pl,pa,pc); } }

break; }

}while(temp !=4); return 0; }

//分页式地址换算部分: int page(int A,int L) {

int pl,pa;

printf(\请输入您的逻辑地址:\scanf(\

printf(\请输入您的页面大小:\scanf(\if(pl>256)

printf(\页号%d大于页表长度256,越界中断\\n\else{

int d,P,kd,i; int WD;

int PT[256];

for(i=0;i<256;i++) {

PT[i]=rand()Q2;//定义随机产生的快号在1到512之间 }

P=A/L; //页号等于逻辑地址/页面大小

d=A%L;//页内地址=逻辑地址%页面大小

if(P>=256)printf(\页号大于页表长度,越界中断\\n\\n\如果页号大于页表长度,输出越界中断 else{

printf(\页号=逻辑地址/页面大小=%d,页内地址=逻辑地址%页面大小=%d\\n\输出页号和页内地址

kd=PT[P];//根据页号随机产生块号

- 11 -

沈阳工程学院信息学院操作系统课程设 第3章 程序设计及结果分析

printf(\根据页号%d得到块号%d\\n\WD=kd*L+d;//计算物理地址的公式

printf(\物理地址=块号*页面大小+页内地址\\n\

printf(\物理地址=%d*%d+%d\\n\输出物理地址=块号*页面大小+页内地址 printf(\逻辑地址%d换算后的物理地址=%d\\n\\n\输出物理地址的结果 return(0); } } }

3.1.3 运行结果

分页式地址换算结果如图3.1所示:

图3.1 运行结果图

分页式地址越界中断如图3.2所示:

- 12 -

沈阳工程学院信息学院操作系统课程设 第3章 程序设计及结果分析

图3.2 运行结果图

- 13 -

沈阳工程学院信息学院操作系统课程设 第3章 功能实现

3.2 段式地址换算

3.2.1 程序流程图

3.2.2 程序源代码

//分段式地址换算部分: int Segment(int sn,int sd) {

int i,wd;

for(i=0;i<256;i++) {

st.segf[i]=rand()%5;//定义随机产生段首地址为1到255之间

- 14 -

沈阳工程学院信息学院操作系统课程设 第3章 功能实现

st.segl[i]=rand() 48;//定义随机产生段长度为1到2048之间 }

if(sn>256)printf(\段号%d大于段表长度256,越界中断\\n\\n\如果段号大于段表长度,输出越界中断

else if(sd>st.segl[sn]) printf(\段内地址%d大于段长度%d,越界中断\\n\\n\如果段内地址大于段长度,输出越界中断 else{

printf(\根据段号找到段首地址%d\\n\printf(\物理地址=段首地址+段内地址\\n\wd=st.segf[sn]+sd;//计算物理地址的算法

printf(\换算得到的物理地址=%d\\n\\n\输出物理地址 }

return(0); }

3.2.3 运行结果

分段式地址转换结果如图3.3所示:

图3.3 运行结果图

- 15 -

沈阳工程学院信息学院操作系统课程设 第3章 功能实现

分段式地址段号越界中断如图3.4所示:

图3.4 运行结果图

分段式地址段内越界中断如图3.5所示:

图3.5 运行结果图

- 16 -

沈阳工程学院信息学院操作系统课程设 第3章 功能实现

3.3 段页式地址换算

3.3.1 程序流程图

逻辑地址(段号、

页号、页内地址)

段号<段表长度 N Y 段越界

段号—>(段表始址

寄存器)段号S

Y

页号<页表长度

N

页号—>(页表始址寄存器)页号P

物理块号

物理地址

返回

3.3.2 程序源代码

//段页式地址换算部分:

int SegPagt(int sn,int pn,int pd) {

int i,wd;

- 17 -

页越界 页内地址 沈阳工程学院信息学院操作系统课程设 第3章 功能实现

sp.pl=256;

for(i=0;i<255;i++) {

sp.pf[i]=sp.segf[i]=rand()&624;//定义随机产生的数在1到26624之间 sp.ptl[i]=sp.segl[i]=rand()Q2;//定义随机产生的数在1到512之间 sp.pt[i]=rand()%6;//定义随机产生的数在1到256之间 }

if(sn>=256)

printf(\段号%d大于段表长度256,越界中断\\n\\n\如果段号大于段表长度256,输出越界中断

else

if(pn>=256)

printf(\页号%d大于页表长度256,越界中断\\n\\n\如果页号大于页表长度,输出越界中断 else

if(pd>sp.pl)

printf(\页内地址%d大于页面长度%d,中断\\n\\n\如果页内地址大于页面长度,输出中断 else{

printf(\通过段号%d找到页表首地址%d\\n通过页号%d找到块号%d\\n\输出页表首地址和块号 printf(\物理地址=页表首地址+块号*页面长度+页内地址\\n\

printf(\物理地址=%d+%d*%d+%d\\n\输出物理地址=页表首地址+块号*页面长度+页内地址

wd=sp.pf[sn]+sp.pt[pn]*sp.pl+pd;//计算物理地址的公式 printf(\物理地址为:%d\\n\\n\输出物理地址的最好结果 }

return (0); }

3.3.3 运行结果

段页式地址转换结果如图3.6所示:

- 18 -

沈阳工程学院信息学院操作系统课程设 第3章 功能实现

图3.6 运行结果图

段页式地址转换段号越界中断如图3.7所示:

图3.7运行结果图

- 19 -

沈阳工程学院信息学院操作系统课程设 第3章 功能实现

段页式地址转换页号越界中断如图3.8所示:

图3.8 运行结果图

段页式地址转换段内地址越界中断如图3.9所示:

图3.9结束

- 20 -

沈阳工程学院信息学院操作系统课程设 结 论

结 论

经过本次课程设计,让我们对离散式存储管理有了更进一步的了解。

离散式存储管理分为三部分:段式存储管理、页式存储管理和段页式存储管理页式管理。页式管理的基本原理将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理,它分为静态页式管理和动态页式管理。它的优点是没有外碎片,每个内碎片不超过页大小。一个程序不必连续存放。便于改变程序占用空间的大小。唯一的缺点是程序需要全部装入内存。

段页式管理的实现原理由虚地址的构成,一个进程中所包含的具有独立逻辑功能的程序或数据仍被划分为段,并有各自的段号s。这反映相继承了段式管理的特征。其次,对于段s中的程序或数据,则按照一定的大小将其划分为不同的页。和页式系统一样,最后不足一页的部分仍占一页。这反映了段页式管理中的页式特征。从而,段页式管理时的进程的虚拟地址空间中的虚拟地址由三部分组成:即段号s,页号P和页内相对地址d。虚拟空间的最小单位是页而不是段,从而内存可用区也就被划分成为着干个大小相等的页面,且每段所拥有的程序和数据在内存中可以分开存放。分段的大小也不再受内存可用区的限制。

为了实现段页式管理,系统必须为每个作业或进程建立一张段表以管理内存分配与释放、缺段处理、存储保护相地址变换等。另外,由于一个段又被划分成了若干页,每个段又必须建立一张页表以把段中的虚页变换成内存中的实际页面。显然,与页式管理时相同,页表中也要有相应的实现缺页中断处理和页面保护等功能的表项。另外,由于在段页式管理中,页表不再是属于进程而是属于某个段,因此,段表中应有专项指出该段所对应页表的页表始址和页表长度。

总之,因为段页式管理是段式管理的页式管理方案结合而成的,所以具有它们二者的优点。但反过来说,由于管理软件的增加,复杂性和开销也就随之增加了。另外,需要的硬件以及占用的内存也有所增加。更重要的是,如果不采用联想寄存器的方式提高CPU的访内速度,将会使得执行速度大大下降。

- 21 -

本文来源:https://www.bwwdw.com/article/2e35.html

Top