操作系统-分区内存管理.doc

操作系统-分区内存管理.doc

ID:52184438

大小:114.04 KB

页数:11页

时间:2020-03-24

操作系统-分区内存管理.doc_第1页
操作系统-分区内存管理.doc_第2页
操作系统-分区内存管理.doc_第3页
操作系统-分区内存管理.doc_第4页
操作系统-分区内存管理.doc_第5页
资源描述:

《操作系统-分区内存管理.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、洛阳理工学院实验报告系别计算机系班级学号姓名课程名称计算机操作系统实验日期2015/10/26实验名称分区内存管理成绩实验目的:过本次实验,加深对进程概念的理解,进一步掌握进程状态的转变及进程调度策略。实验条件:计算机一台,软件vc++6.0一、实验目的通过这次实验,加深对内存管理的认识,进一步掌握内存的分配、回收算法的思想。二、实验原理设计程序模拟内存的动态分区内存管理方法。内存分区使用分区(说明)表进行管理,采用最先适应算法从分区表中寻找空闲区进行分配,内存回收时不考虑与相邻空闲区的合并。假定系统的内存共640K,初始状态为操作系统本身占用40K。t1时刻

2、,为作业A、B、C分配80K、60K、100K、的内存空间;t2时刻作业B完成;t3时刻为作业D分配50K的内存空间;t4时刻作业C、A完成;t5时刻作业D完成。要求编程序分别输出t1、t2、t3、t4、t5时刻内存的空闲分区。三、实验内容#include#include#include#include#definemaxPCB10#definemaxPart10#defineTRUE1#defineFALSE0typedefstructPCB_type11/11{charname;/

3、/进程名intaddress,len,valid;//进程所占分区起止、长度、该PCB有效标识(1有效,0无效)}PCB;typedefstructseqlist{PCBPCBelem[maxPCB];//maxPCB为系统中允许的最多进程数inttotal;//系统中实际的进程数}PCBseql;typedefstructPartition{intaddress,len,valid;//分区起址、长度、有效标识(1空闲,0已分配)}Part;typedefstructPartlist{PartPartelem[maxPart];//maxPart为系统中可能

4、的最多分区数intsum;//系统中实际的分区数}Partseql;intlength=640;//系统有640的空闲PCBseql*pcbl;Partseql*partl;voidinitpcb(PCBseql*vpcbl,intadr);//初始化进程表vpcblvoidgetprint();voidinitpart();//初始化分区表vpartlvoidrequest(charname,intlen);//进程name请求len大小的内存voidrelease(charname);//回收name进程所占内存空间voidprint();//输出内存空闲

5、分区/*voidprintp()11/11{inti;for(i=0;i<(pcbl->total);i++){printf("%c",pcbl->PCBelem[i].name);}}*/voidinitpcb(PCBseql*vpcbl,intadr)//初始化进程表vpcbl{inti=1;PCB*pcbelem;inttel;charc;pcbelem=vpcbl->PCBelem;while(TRUE){printf("请输入第%d进程名称",i++);vpcbl->total++;scanf("%c",&(pcbelem->name));pri

6、ntf("请输入进程所需内存");scanf("%d",&tel);pcbelem->len=tel;pcbelem->address=adr+tel;pcbelem->valid=1;pcbelem++;printf("是否要继续输入进程(Enter-是Esc-否)");fflush(stdin);c=getch();fflush(stdin);if(c==27)11/11{break;}}}voidinitpart(){charc,name;intlen;printf("请输入你的操作R.请求内存;P.输出空闲分区;S.强制进程结束;(N/n).退出

7、n");fflush(stdin);c=getchar();fflush(stdin);while(c!='N'

8、

9、c!='n'){if(c=='R'

10、

11、c=='r'){fflush(stdin);//做输入的时候要清空缓冲区printf("请输入请求内存进程的名称,长度");scanf("%c,%d",&name,&len);request(name,len);//进程请求内存}elseif(c=='P'

12、

13、c=='p'){printf("t*****VIEWbegin*****");getprint();printf("t*****VIEWend*

14、****");}elseif(c=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。