实验三存储管理实验

上传人:cn****1 文档编号:562456520 上传时间:2023-02-05 格式:DOCX 页数:12 大小:130.73KB
返回 下载 相关 举报
实验三存储管理实验_第1页
第1页 / 共12页
实验三存储管理实验_第2页
第2页 / 共12页
实验三存储管理实验_第3页
第3页 / 共12页
实验三存储管理实验_第4页
第4页 / 共12页
实验三存储管理实验_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《实验三存储管理实验》由会员分享,可在线阅读,更多相关《实验三存储管理实验(12页珍藏版)》请在金锄头文库上搜索。

1、存 储 管 理 实 验.?目的要求:?1、通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。熟悉虚存管理的 各种页面淘汰算法。?2、通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解】实验内容:1、设计一个固定式分区分配的存储管理方案,并模拟实现分区的分配和回收过程可以假定每个作业都是批处理作业,并且不允许动态申请内存。为实现分区的分配 和回收,可以设定一个分区说明表,按照表中的有关信息进行分配,并根据分区的分配 和回收情况修改该表。算法描述:本算法将内存的用户区分成大小相等的四个的分区,设一张分区说明表用来记录分 区,其中分区的表项有分区的大小、起始地址和分区的状态,当

2、系统为某个作业分配主 存空间时,根据所需要的内存容量,在分区表中找到一个足够大的空闲分区分配给它, 然后将此作业装入内存。如果找不到足够大的空闲分区,则这个作业暂时无法分配内存 空间,系统将调度另一个作业。当一个作业运行结束时,系统将回收改作业所占据的分 区并将该分区改为空闲。算法原程序#i nclude #i nclude #in elude #in elude #define PCB_NUM 5 行程序.);printf (ntttO. 退岀程序.);sea nf(%d, &m);switch (mcase 1:break ;case 0:system (cls);menu ();brea

3、k ;default :system (cls);break ;void paixu (struct Memlnf* ComMemint n)int i , j , t;for (j =0; j n-1; j +)for (i =0; i ComMefri +1. size )t=ComMehi. size ;ComMem i . size =ComMeri +1. size ;ComMem i +1. size =t;void paixu2 ()int i , j , t;for (j =0; j 4; j +)for (i =0; i pcbList i +1. size )t=pcbLi

4、st i . size ;pcbList i . size =pcbList i +1. size ;pcbList i +1 . size =t;void main ()DDmenu ();char ch ;int i , j , n, a=0;struct Memlnf * ComMemsystem (cls);printf(你要分多少个分区呢,请输入数值吧:);sca nf(%d, &n);ComMem =( struct Memlnf *) malloc ( n* sizeof ( struct Memlnf);printf(请划分内存固定大小分区:n ); ize );if (i =

5、0) ComMerjni . addr =40; ddr =ComMefri - 1. addr+ ComMe(ii - 1. size ; tate =0; ize +a;if (a=INT)printf(超岀规定内存范围”);ch=getchar ();ch=getchar ();goto DD;paixufor (j =0; jtate =0= pcbList j . size )tate= pcbList j . pcbID ;pcbListj . Run State =1; unTime=pcbListj. TolTime) tate=pcbList j . pcblD)ComMem

6、unState=2; unState =1 &pcbList i . Run Time pcbListcbID , pcbList i .pri ntfsize , pcbList(分区for (i =0; i n; i +)i . state = 0;i . TolTime ) unTime +;i . Run State , pcbList i . TolTime , pcbList i . Ru nTime);IDt 分区大小t 状态n);cbID =1;pcbList0.Run State =0pcbList0.Run Time =0;pcbList0.TolTime =5;pcbLi

7、st1.pcbID =2;pcbList1.Run State =0pcbList1.size =15;pcbList1.Run Time =0;pcbList1.TolTime =6;pcbList2.pcbID =3;pcbList2.Run State =0pcbList2.size =50;pcbList2.Run Time =0;pcbList2.TolTime =3;pcbList3.pcbID =4;pcbList3.Run State =0pcbList3.size =120;pcbList3.Run Time =0;pcbList3.TolTime =4;pcbList4.p

8、cbID =5;pcbList4.Run State =0pcbList4.size =125;pcbList4.Run Time =0;pcbList4.TolTime =9;(ComMemO;ize =30;ch =getchar ();ch =getchar ();while ( pcbList PCB_NUMI1. Run Time pcbList PCB_NUM1. TolTime )printfprintf(%dt %dtt %dn, i , ComMefri . size , ComMem . state );(按回车键继续.n);getchar freesstrcpyoccup

9、ysoccupysstrcpyi . start =- 1;i . length =0;(occupys i. tag ,);III!free_qua ntityoccupy_qua ntityvoid writedata=0;=0;tart);printf sca nf()(输入第%d个分区的长度:n , j );(%d, & frees i . le ngth );();tart =-1;i . length =0;(frees i . tag , free);if (fwrite printf fclose (fp); voidreaddata () ttart=j ;=frees t

10、. start )freesfree_qua ntity .start =frees i . start ;freesfree_qua ntity .len gth = freesi . lengthfreesi.start =freest . start ;freesi.len gth =freest. length ;freest.start =freesfree_qua ntity.start ;freest.len gth =freesfree_quantity.length voidview(),frees i . length , frees i . tag );已分配分区表显示如

11、下:n);tart(nn(起始地址t长度t占用作业名n);printfprintffor (j =0; j =joblength )f=1;printf(n当前没有能满足你申请长度的空闲内存,请稍候再试ngetchar ();elseen gth=joble ngth )t=1;j +;j -;occupys occupy_quantity. start =frees j . start ; agoccupys occupy_quantity. length =joblength ;);,job name);occupy_qua ntity+;if (frees j . length joblength )freesj . start +=joblength ;freesj . length -= joblength ;elsefor (i =j ; i =joble ngth )

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号