




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
动态分区分配模拟项目源代码#include#include#define Free 0 #define Busy 1 #define OK 1 #define ERROR 0#define MAX_length 1280 typedef int Status;typedef struct freearea int ID; long size; long address; int state; ElemType; typedef struct DuLNode /double linked list ElemType data; struct DuLNode *prior; struct DuLNode *next; DuLNode,*DuLinkList;DuLinkList block_first; DuLinkList block_last; Status alloc(int);Status free(int); Status First_fit(int,int);Status Best_fit(int,int); void show();Status Initblock();Status Initblock() block_first=(DuLinkList)malloc(sizeof(DuLNode); block_last=(DuLinkList)malloc(sizeof(DuLNode); block_first-prior=NULL; block_first-next=block_last; block_last-prior=block_first; block_last-next=NULL; block_last-data.address=0; block_last-data.size=MAX_length; block_last-data.ID=0; block_last-data.state=Free; return OK; Status alloc(int ch) int ID,request; coutID; coutrequest; if(request0 |request=0) cout分配大小不合适,请重试!endl; return ERROR; if(ch=2) /选择最佳适应算法 if(Best_fit(ID,request)=OK) cout分配成功!endl; else cout内存不足,分配失败!endl; return OK; else /默认首次适应算法 if(First_fit(ID,request)=OK) cout分配成功!endl; else cout内存不足,分配失败!data.ID=ID; temp-data.size=request; temp-data.state=Busy; DuLNode *p=block_first-next; while(p) if(p-data.state=Free & p-data.size=request) p-data.state=Busy; p-data.ID=ID; return OK; break; if(p-data.state=Free & p-data.sizerequest) temp-prior=p-prior; temp-next=p; temp-data.address=p-data.address; p-prior-next=temp; p-prior=temp; p-data.address=temp-data.address+temp-data.size; p-data.size-=request; return OK; break; p=p-next; return ERROR;Status Best_fit(int ID,int request) int ch; DuLinkList temp=(DuLinkList)malloc(sizeof(DuLNode); temp-data.ID=ID; temp-data.size=request; temp-data.state=Busy; DuLNode *p=block_first-next; DuLNode *q=NULL; while(p) if(p-data.state=Free & (p-data.sizerequest | p-data.size=request) ) q=p; ch=p-data.size-request; break; p=p-next; while(p) if(p-data.state=Free & p-data.size=request) p-data.ID=ID; p-data.state=Busy; return OK; break; if(p-data.state=Free & p-data.sizerequest) if(p-data.size-requestdata.size-request; q=p; p=p-next; if(q=NULL) return ERROR;/没有找到空闲块 else temp-prior=q-prior; temp-next=q; temp-data.address=q-data.address; q-prior-next=temp; q-prior=temp; q-data.address+=request; q-data.size=ch; return OK; Status free(int ID) DuLNode *p=block_first; while(p) if(p-data.ID=ID) p-data.state=Free; p-data.ID=Free; if(p-prior-data.state=Free) p-prior-data.size+=p-data.size; p-prior-next=p-next; p-next-prior=p-prior; if(p-next-data.state=Free) p-data.size+=p-next-data.size; p-next-next-prior=p; p-next=p-next-next; break; p=p-next; return OK;void show() cout+n; cout+ 主 存 分 配 情 况 +n; coutnext; while(p) coutdata.ID=Free) coutFreeendl; else coutdata.IDendl; cout起始地址:data.addressendl; cout分区大小:data.size KBendl; coutdata.state=Free) cout空 闲endl; else cout已分配endl; coutnext; /- 主 函 数-void main() int ch; cout 动态分区分配方式的模拟 n; cout*n; cout* 1)首次适应算法 2)最佳适应算法 *n; cout*n; coutch; Initblock(); int choice; while(1) cout*n; cout* 1: 分配内存 2: 回收内存 *n; cout* 3: 查看分配 0: 退 出 *n; cout*n; coutchoice; if(choice=1) alloc(ch); / 分配内存 else if(choice=2) / 内存回收 int ID; coutID; free(ID); else if(choice=3) show();/显示主存 else if(choice=0) break; /退出 else cout输入有误,请重试!endl; continue; 页面置换算法模拟项目#include #include#include#include#define Bsize 4 typedef struct BLOCK int pagenum; int accessed; BLOCK; int pc; int n; static int temp320; BLOCK blockBsize; void init( ); int findExist(int curpage); int findSpace( ); int findReplace( ); void display ( ); void suijishu( );void pagestring( );void OPT( );void LRU( ); void FIFO( ); void init( ) for(int i=0;iBsize;i+) blocki.pagenum=-1; blocki.accessed=0; pc=n=0; int findExist(int curpage) for(int i=0; iBsize; i+) if(blocki.pagenum = curpage ) return i return -1;int findSpace( ) for(int i=0; iBsize; i+) if(blocki.pagenum = -1) return i; return -1;int findReplace( ) int pos = 0; for(int i=0; iblockpos.accessed) pos = i; return pos;void display( ) for(int i=0; iBsize; i+) if(blocki.pagenum != -1) printf( %02d,blocki.pagenum); coutpc; cout*按照要求产生的320个随机数:*endl; for(int i=0;i320;i+) tempi=pc; if(flag%2=0) pc=+pc%320; if(flag=1) pc=rand( )% (pc-1); if(flag=3) pc=pc+1+(rand( )%(320-(pc+1); flag=+flag%4; printf( %03d,tempi); if(i+1)%10=0) coutendl; void pagestring( ) for(int i=0;i320;i+) printf( %02d,tempi/10); if(i+1)%10=0) coutendl; void OPT( ) int exist,space,position ; int curpage; for(int i=0;i320;i+) if(i%100=0) getch( ); pc=tempi; curpage=pc/10; exist = findExist(curpage); if(exist=-1) space = findSpace ( ); if(space != -1) blockspace.pagenum = curpage; display( ); n=n+1; else for(int k=0;kBsize;k+) for(int j=i;j320;j+) if(blockk.pagenum!= tempj/10) blockk.accessed = 1000; else blockk.accessed = j; break; position = findReplace( ); blockposition.pagenum = curpage; display( ); n+; cout缺页次数:nendl; cout缺页率:(n/320.0)*100%endl;/- void LRU( ) int exist,space,position ; int curpage; for(int i=0;i320;i+) if(i%100=0) getch( ); pc=tempi; curpage=pc/10; exist = findExist(curpage); if(exist=-1) space = findSpace( ); if(space != -1) blockspace.pagenum = curpage; display( ); n=n+1; else position = findReplace( ); blockposition.pagenum = curpage; display( ); n+; else blockexist.accessed = -1; for(int j=0; j4; j+) blockj.accessed+; cout缺页次数:nendl; cout缺页率:(n/320.0)*100%endl;/-void FIFO( ) int exist,space,position ; int curpage; for(int i=0;i320;i+) if(i%100=0) getch( ); pc=tempi; curpage=pc/10; exist = findExist(curpage); if(exist=-1) space = findSpace( ); if(space != -1) blockspace.pagenum = curpa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 销售目标达成情况表-销售目标达成统计
- 劳动能力与收入状况确认书(5篇)
- 文化创意产业文化产品分类表
- 第6课《个性化网页设计》课件 2024-2025学年岭南美版初中美术九年级下册
- 2025年北京东城区九年级中考二模数学试卷试题(含答案详解)
- 玫红青扁平风网络安全教育模板
- 预测分析与数据科学提升商业决策的准确性
- 音乐节目的舞台灯光色彩设计与观众互动
- 非物质文化遗产在小学生心中的价值与意义
- 防灾科技在灾害应对中的应用
- 2024年全国能源行业供热技能竞赛考试题库大全-中(判断题)
- 沥青混凝土路面安全技术交底
- 梨园助手:全年病虫害防治历
- JBT 8473-2014 仪表阀组标准规范
- 【编制说明】电力电缆通道用防火隔板及槽盒技术规范
- 分布式光伏经济评价规范
- 振动力学期末试卷-06.07.08期末-上海交大
- MOOC 大学物理(上)-西北工业大学 中国大学慕课答案
- 伊朗钢结构包装专项方案
- 小升初数学知识点总结(小考复习精编专项讲义)六年级数学小升初复习系列:数与式知识点梳理大全
- E+H-压力变送器培训
评论
0/150
提交评论