2023年《操作系统》存储管理实验报告.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2023年《操作系统》存储管理实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年《操作系统》存储管理实验报告.pdf(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、_大学_学院实验报告 课程名称:计算机操作系统 实验名称:存储管理实验 实验日期:班级:姓名:学号:仪器编号:XX 实验报告要求:1.实验目的 2.实验要求 3.实验步骤 4.程序清单 5.运行情况 6.流程图 7.实验体会 1、实验目的 通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解,熟悉虚存管理的各种页面淘汰法。通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。2、实验要求 设计一个固定式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。可以假定每个作业都是批处理作业,并且不允许动态申请内存。为实现分区的分配和回收,可以设定一个分区说明表,按照表中的有关信息
2、进行分配,并根据分区的分配和回收情况修改该表。设计一个可变式分区分配的存储管理方案,并模拟实现分区的分配和回收过程。对分区的管理法可以是下面三种算法之一:首次适应算法;最坏适应算法;最佳适应算法。编写并调试一个段页式存储管理的地址转换的模拟程序。首先设计好段表、页表,然后给出若干个有一定代表性的地址,通过查找段表页表后得到转换的地址。要求打印转换前的地址,相应的段表,页表条款及转换后的地址,以便检查。3、实验步骤(1)理解实验要求,联系所学知识;(2)根据要求编写调度算法;(3)编写完整的实验代码并在 VC+6.0 环境下编译运行;(4)调试程序直至得出结果。4、程序清单#include#in
3、clude#include#include#define NUM 4#define alloMemory(type)(type*)malloc(sizeof(type)struct partiTab int no;int size;int firstAddr;char state;parTabNUM;typedef struct partiTab PARTITAB;typedef struct jcb /*定义作业控制块 JCB,部分信息省略*/char name10;/作业名 int size;/作业大小 struct jcb*link;/链指针 JCB;typedef struct JCB
4、*front,*rear;jcbQue;jcbQue*jcbReadyQue;void AllocateMemory(int size);void createTab();void checkTab();对存储管理方案的理解熟悉虚存管理的各种页面淘汰法通过编写和调试地址转换过程的模拟程序以加强对地址转换过都是批处理作业并且不允许动态申请内存为实现分区的分配和回收可以设定一个分区说明表按照表中的有关信息进行过程对分区的管理法可以是下面三种算法之一首次适应算法最坏适应算法最佳适应算法编写并调试一个段页式存储管void recycleMemory(int i);void AllocateMemory
5、(int size)int i;for(i=0;isize)parTabi.state=Y;else printf(没有空闲分区,无法分配内存!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;对存储管理方案的理解熟悉虚存管理的各种页面淘汰法通过编写和调试地址转换过程的模拟程序以加强对地址转换过都是批处理作业并且不允许动态申请内存为实现分区的分配和回收可以设定一个分区说
6、明表按照表中的有关信息进行过程对分区的管理法可以是下面三种算法之一首次适应算法最坏适应算法最佳适应算法编写并调试一个段页式存储管 void checkTab()int i;printf(分区号t 大小t 起址t 状态n);for(i=0;iNUM;i+)printf(%dt,parTabi.no);printf(%dt,parTabi.size);printf(%dt,parTabi.firstAddr);printf(%ct,parTabi.state);printf(n);void recycleMemory(int i)parTabi-1.state=N;int main(int arg
7、c,char*argv)int i;printf(nntt*ttn);printf(tttt实验一 存储管理实验n);printf(tttt固定式分区分配存储管理n);对存储管理方案的理解熟悉虚存管理的各种页面淘汰法通过编写和调试地址转换过程的模拟程序以加强对地址转换过都是批处理作业并且不允许动态申请内存为实现分区的分配和回收可以设定一个分区说明表按照表中的有关信息进行过程对分区的管理法可以是下面三种算法之一首次适应算法最坏适应算法最佳适应算法编写并调试一个段页式存储管printf(tt*ttn);createTab();checkTab();printf(请按任意键继续:n);getchar
8、();printf(每个分区装入一道作业: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;对存储管理方案
9、的理解熟悉虚存管理的各种页面淘汰法通过编写和调试地址转换过程的模拟程序以加强对地址转换过都是批处理作业并且不允许动态申请内存为实现分区的分配和回收可以设定一个分区说明表按照表中的有关信息进行过程对分区的管理法可以是下面三种算法之一首次适应算法最坏适应算法最佳适应算法编写并调试一个段页式存储管#include#include#include#include#define n 10#define m 10#define minisize 100 struct float address;float length;int flag;used_tablen;struct float address;f
10、loat 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
11、_tablek.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;else free_tablek.length=free_tablek.length-xk;ad=free_tablek.address+free_tablek.length;i=0;while(used_tablei.flag!=0&i=n)对存储管理方案的理解熟悉虚存管理的各种页面淘汰法通过编写和调
12、试地址转换过程的模拟程序以加强对地址转换过都是批处理作业并且不允许动态申请内存为实现分区的分配和回收可以设定一个分区说明表按照表中的有关信息进行过程对分区的管理法可以是下面三种算法之一首次适应算法最坏适应算法最佳适应算法编写并调试一个段页式存储管 printf(无表目填写已分分区,错误n);if(free_tablek.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_table
13、i.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=used_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
14、=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.f
15、lag=0;else/*上邻空闲区,下邻非空闲区,与上邻合并*/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_
16、tables.flag=J;return;free_tablet.address=S;对存储管理方案的理解熟悉虚存管理的各种页面淘汰法通过编写和调试地址转换过程的模拟程序以加强对地址转换过都是批处理作业并且不允许动态申请内存为实现分区的分配和回收可以设定一个分区说明表按照表中的有关信息进行过程对分区的管理法可以是下面三种算法之一首次适应算法最坏适应算法最佳适应算法编写并调试一个段页式存储管free_tablet.length=L;free_tablet.flag=1;return;/*主存回收函数结束*/int main()printf(nntt*ttn);printf(tttt实验三 存储管
17、理实验n);printf(nttt可变式分区分配(最佳适应算法)n);printf(tt*n);int i,a;float xk;char J;/*空闲分区表初始化:*/free_table0.address=10240;/*起始地址假定为 10240*/free_table0.length=10240;/*长度假定为 10240,即 10k*/free_table0.flag=1;/*初始空闲区为一个整体空闲区*/for(i=1;im;i+)free_tablei.flag=0;/*其余空闲分区表项未被使用*/*已分配表初始化:*/for(i=0;in;i+)used_tablei.flag
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 2023 存储 管理 实验 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内