《操作系统》
课程设计报告。
课程名称操作系统。
题目名称可变分区存储管理的
内存分配与**
专业班级 10计本(2)班。
学号 36 45 56 54 57
学生姓名魏华明俞临曲赵天择
张永鹏周田
指导教师黄孝。
目录。一、课程设计目的和意义page3
二、设计题目和要求page3
三、设计内容page3
3.1预备知识page4
3.2课程设计分析page4
3.2.1课程设计思想的说明page4
3.2.2关键数据结构说明page5
3.2.3流程图page9
四、程序测试运行及结果分析page12
4.1 测试数据说明page12
4.2 运行结果分析page12
五、设计总结page16
五、附录(源**page17
一、课程设计目的和意义。
通过课程设计,综合运用所学知识,通过综合实验环节,加深我们对操作系统基本原理与工作过程的理解,提高我们分析问题、解决问题的能力,增强我们的动手能力与协作能力。
使我们深入了解采用可变分区存储管理方式的内存分配**的实现。
2、设计题目和要求。
设计题目:可变分区存储管理的内存分配与**。
设计要求:1)内存分配采用首次适应算法与最佳适应算法分别完成。
2)动态输入构造空闲区表,并显示构造好的空闲区表。(提示:在两种不同的内存分配算法中,空闲区在空闲区表中的登记顺序是不一样的)
3)键盘接收内存申请尺寸大小。
4)根据申请,实施内存分配,并返回分配所得内存首址。
5)分配完后,调整空闲区表(即扣除分配部分),并显示调整后的空闲区表。
6)若分配失败,返回分配失败信息。
7)内存**。
根据空闲区表,按内存**的四种情况从键盘接收**区域的内存首址与大小;
**区域,调整空闲区表(与前面空闲区相连,与后面空闲区相连,与前后空闲区相连则。
合并,与前后空闲区都不相连则插入该项),并显示调整后的空闲区表。
三、设计内容。
3.1预备知识。
需掌握扎实的c语言编程能力及可变分区存储管理方式的内在分配与**的基本知识。
3.2课程设计分析。
3.2.1课程设计思想的说明。
对于可变分区存储管理的内存分配与**,主要为设计以下几个部分:
1、设计动态输入空闲分区表的程序。
2、设计内存分配的程序。
3、设计内存**的程序。
对于其他的,比如显示构造好的空闲区表显示调整后的空闲区表、显示作业分配情况等等都比较容易些。
为了便于对内存的分配和**,建立两张表记录内存的使用情况。一张为记录作业占用分区的“内存分配表”,内容应包括分区起始地址、长度、作业名;一张为记录空闲区的“空闲分区表”,内容包括分区起始地址、长度、标志(0表空栏目,1表未分配)。两张表都采用顺序表形式。
根据题目要求,内存分配的算法需设计两种:首次适应算法和最佳适应算法。
对于首次适应算法,要求空闲分区链以地址递增的次序链接。在分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止;然后再按照作业的大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲链中。若从链首直至链尾都不能找到一个能满足要求的分区,则此次内存分配失败,返回。
对于最佳适应算法,要求将所有的空闲分区按其容量已从小到大的顺序形成一空闲分区链。这样,第一次找到的能满足要求的空闲区,必然是最佳的。
根据两种算法的定义可知,若要设计最佳适应算法,只需在首次适应算法的基础上,把空闲区表按长度大小从小到大排序即可。所以只需在首次适应算法的基础上插入一个排序的程序(注:在内存分配的过程中,可能会产生存储空间“较小”的空间分区,这样的小分区很小,很难再分配给一个新的进程。
因此,对于这样的分区,应划分给最后一个申请分区的作业。)。
接着就是设计内存**的问题。
当进程运行完毕释放内存时,系统根据**区的首址,从空闲区链(表)中找到相应的插入点,此时可能出现以下四种情况之一:
1)**区与插入点的前一个空闲分区相邻接。此时应将**区与插入点的前一个分区合并形成新的空闲分区。用前一空闲分区的首址作为新空闲区的首址,长度为两者之和。
2)**分区与插入点的后一空闲分区相邻接。此时将两分区合并,形成新的空闲分区。用**区的首址作为新空闲区的首址,长度为两者之和。
3)**区同时与插入点的前、后两个分区邻接。此时将三个分区合并,使用前一空闲区的首址作为新空闲区首址,长度为三者之和。
4)**区既不与上邻空闲区又没有下邻空闲区。这时只须将此区**,,**区的首址为新空闲区的首址,长度为**区的长度。
根据这四种情况编写**内存的程序。
3.2.2关键数据结构说明。
1)全局变量。
#define m 9 /*假定系统允许的空闲区表最大为m,假定模拟实验中m值为10*/#define n 15 /*假定系统允许的最大作业为n,假定模拟实验中n值为10*/
#define minisize 10/*假定系统允许的最小空闲分区表的长度*/
2)空闲分区表的定义。
struct
if(fflag==0) printf("没有满足条件的空闲区!!!n");
else6)对空闲区排序(按长度从小到大)
for(i=0;i
b[i][0]=free_table[i].address;
b[i][1]=free_table[i].length;
b[i][2]=free_table[i].flag;
for(i=0;ifor(j=0;j
if(b[j][1]>b[j+1][1])
t=b[j][0];
b[j][0]=b[j+1][0];
b[j+1][0]=t;
t=b[j][1];
b[j][1]=b[j+1][1];
b[j+1][1]=t;
t=b[j][2];
b[j][2]=b[j+1][2];
b[j+1][2]=t;
for(i=0;i
free_table[i].address=b[i][0];
free_table[i].length=b[i][1];
操作系统课程设计
课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 6 月 24 日。设备管理 2 2.1设计任务2 2.2设计要求...
操作系统课程设计
银行家算法模拟。系别 班级 组员 银行家算法模拟。1.课程设计目的。通过本次课程设计,加深对最经典的避免死锁的银行家算法的理解,掌握死锁形成必要条件 安全状态等概念的理解,通过用c语言编程模拟该算法,并在windows平台上实现,更好地掌握操作系统的原理及实现方法。2.任务及要求。设n为系统进程的个...
操作系统课程设计
学生实习实训报告。实习类型 操作系统课程设计 学号 0901110005 学生姓名 田兴杰 指导教师 曹春梅 专业班级 信息安全技术0901班 院 部 电子信息系 2011年 1 月 7日。实习实训成绩评定表。目录。目录3 摘要4关键字4 1.1虚拟机简介5 1.1.1 一般意义的虚拟机5 1.1....