最新《操作系统》存储管理实验报告要点.doc
《最新《操作系统》存储管理实验报告要点.doc》由会员分享,可在线阅读,更多相关《最新《操作系统》存储管理实验报告要点.doc(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date操作系统存储管理实验报告要点acer_大学_学院实验报告课程名称: 计算机操作系统 实验名称: 存储管理实验 实验日期: 班级: 姓名: 学号: 仪器编号: XX 实验报告要求:1.实验目的 2.实验要求 3.实验步骤 4.程序清单 5.运行情况 6.流程图 7.实验体会1、 实验目的 通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解,熟悉虚存管理的各种页面
2、淘汰法。 通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。2、 实验要求设计一个固定式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。可以假定每个作业都是批处理作业,并且不允许动态申请内存。为实现分区的分配和回收,可以设定一个分区说明表,按照表中的有关信息进行分配,并根据分区的分配和回收情况修改该表。设计一个可变式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。 对分区的管理法可以是下面三种算法之一:首次适应算法;最坏适应算法;最佳适应算法。编写并调试一个段页式存储管理的地址转换的模拟程序。首先设计好段表、页表,然后给出若干个有一定代表性的地址,通过查找段表页表
3、后得到转换的地址。要求打印转换前的地址,相应的段表,页表条款及转换后的地址,以便检查。3、 实验步骤(1) 理解实验要求,联系所学知识; (2)根据要求编写调度算法; (3)编写完整的实验代码并在VC+ 6.0环境下编译运行; (4)调试程序直至得出结果。4、 程序清单#include #include #include#include#define NUM 4#define alloMemory(type) (type*)malloc(sizeof(type)struct partiTabint no;int size;int firstAddr;char state;parTabNUM;t
4、ypedef struct partiTab PARTITAB;typedef struct jcb /*定义作业控制块JCB ,部分信息省略*/char name10; /作业名int size;/作业大小struct jcb* link; /链指针JCB;typedef structJCB *front,*rear;jcbQue;jcbQue *jcbReadyQue;void AllocateMemory(int size);void createTab();void checkTab();void recycleMemory(int i);void AllocateMemory(int
5、 size)int i;for(i=0;isize)parTabi.state=Y;elseprintf(没有空闲分区,无法分配内存!n);void createTab()int i;for( i=1;i=NUM;i+)/getPartiTab(PARTITAB);parTabi-1.no=i;parTabi-1.size=20;parTabi-1.firstAddr=21;parTabi-1.state=N;void checkTab() int i; printf(分区号t大小t起址t状态n);for(i=0;iNUM;i+)printf(%dt,parTabi.no);printf(%d
6、t,parTabi.size);printf(%dt,parTabi.firstAddr);printf(%ct,parTabi.state);printf(n);void recycleMemory(int i)parTabi-1.state=N;int main(int argc, char* argv)int i;printf(nntt*ttn);printf(tttt实验一 存储管理实验n);printf(tttt固定式分区分配存储管理n);printf(tt*ttn);createTab();checkTab();printf(请按任意键继续:n);getchar();printf(
7、每个分区装入一道作业:n);for(i=0;iNUM;i+)AllocateMemory(i+1)*3);checkTab();printf(请按任意键继续:n);getchar();printf(假如一段时间后,其中一个作业结束,回收给它分配的分区(假如该作业在第2分区)n);recycleMemory(2);checkTab();printf(请按任意键继续:n);getchar();printf(接着,从外存后备作业队列中选择一个作业装入该分区(假如该作业大小为10)n);AllocateMemory(10);checkTab();return 0;#include#include #i
8、nclude#include#define n 10 #define m 10 #define minisize 100 structfloat address; float length; int flag; used_tablen; structfloat address; float length; int flag; free_tablem;void allocate(char J,float xk) int i,k;float ad;k=-1;for(i=0; i=xk&free_tablei.flag=1)if(k=-1|free_tablei.lengthfree_tablek.
9、length)k=i;if(k=-1) printf(无可用空闲区n);return;if(free_tablek.length-xk=minisize)free_tablek.flag=0;ad=free_tablek.address;xk=free_tablek.length;elsefree_tablek.length=free_tablek.length-xk;ad=free_tablek.address+free_tablek.length;i=0;while(used_tablei.flag!=0&i=n) printf(无表目填写已分分区,错误n);if(free_tablek.
10、flag=0)free_tablek.flag=1;else free_tablek.length=free_tablek.length+xk;return;else used_tablei.address=ad;used_tablei.length=xk;used_tablei.flag=J;return;void reclaim(char J) int i,k,j,s,t;float S,L;s=0;while(used_tables.flag!=J|used_tables.flag=0)&s=n) printf(找不到该作业n);return;used_tables.flag=0;S=u
11、sed_tables.address;L=used_tables.length;j=-1;k=-1;i=0;while(im&(j=-1|k=-1)if(free_tablei.flag=1)if(free_tablei.address+free_tablei.length=S)k=i;if(free_tablei.address=S+L)j=i;i+;if(k!=-1)if(j!=-1) /* 上邻空闲区,下邻空闲区,三项合并*/free_tablek.length=free_tablej.length+free_tablek.length+L;free_tablej.flag=0;else
12、/*上邻空闲区,下邻非空闲区,与上邻合并*/free_tablek.length=free_tablek.length+L;else if(j!=-1) /*上邻非空闲区,下邻为空闲区,与下邻合并*/free_tablej.address=S;free_tablej.length=free_tablej.length+L;else /*上下邻均为非空闲区,回收区域直接填入*/*在空闲区表中寻找空栏目*/t=0;while(free_tablet.flag=1&t=m) /*空闲区表满,回收空间失败,将已分配表复原*/printf(主存空闲表没有空间,回收空间失败n);used_tables.f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 最新 存储 管理 实验 报告 要点
限制150内