ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:81.53KB ,
资源ID:16200700      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16200700.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统首次适应算法实验报告记录Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统首次适应算法实验报告记录Word下载.docx

1、start(5)结束位置:end(6)进程名称:name(7)进程大小:capactity(8)分区使用标记flag 设计思路:(1) 程序首先定义了进程数目number=100,以及对内存块大小和分区数目进行了初始化。(2) 从main函数开始,并分别定义了功能菜单menu()函数,内存初始化init-neicun()函数,内存分配fenpei()函数,首次适应算法first-fit() 函数,内存回收memory-recovery()函数,进程显示showit()函数,以 及退出系统exit()函数,这些算法函数对内存的查看、分配和回收等进 行了计算。4、 主要功能模块(1) main()

2、函数(2) menu()函数(3) init-neicun()函数(4) fenpei()函数(5) first-fit()函数(6) memory-recovery()函数(7) showit()函数(8) exit()函数5、 模块的输入输出(1) main()函数:整型输入,调用两个函数,返回0;(2) menu()函数:功能菜单,输入对功能菜单的选择select(1-4),它们分别是1添加进程,2 回收内存,3查看内存分配,4退出。并通过switch方法实现对各函数的调用。(3) init-neicun()函数:输入内存大小,并对第i个进程的名称name、开始位置start、结束位置e

3、nd、大小capactity以及标记位flag等进行了初始化。(4) fenpei()函数:为内存分配内存,输入所需添加进程的名称和大小,并调用first-fit()算法。(5) first-fit()函数:当某一分区不在使用时,如果内存空间大于进程长度,则分配内存,并输出该内存的名称name和大小size,并通过检验标记位flag是否等于1来输出是否能为该进程成功分配内存。(6) memory-recovery()函数:回收之前分配给进程的内存,输入需回收内存的进程名称,标记位flag表示回收是否成功,0代表失败,1代表成功,根据flag的值输出内存是否回收成功。此外,将连续的已回收的内存区

4、合并。(7) showit()函数:显示进程情况,即输出各个进程的名称,开始位置,结束位置,进程大小。并根据flag的值来判断一进程是已使用、未使用还是尾部。(8) exit()函数:整型输入,返回0;通过exit(0)方法来退出程序。6、 程序流程图7、实验截图 8、源代码#include string.hiostream#define number 100/进程数量int neicun=200;/内存块默认大小int fqNum=1;/已使用分区数目,进程数目=fqNum-1/结构类型struct fqinfo/分区信息 int start;/开始位置 int end;/结束位置 char

5、 name;/进程名称 int capactity;/进程大小或者分区块大小 int flag;/分区使用标记,0:未使用 1:已使用 2:回收或者合并的分区 3:尾部fqlistnumber;/fqlist分区列表/函数定义int menu();/功能菜单int init_neicun();/初始化内存大小int fenpei();/为进程分配内存int first_fit(char name,int size);/首次适应算法int Memory_recovery();/内存回收int showit();/显示进程int exit();/退出系统/功能菜单menuint menu() in

6、t select; printf(n-n); 1: 添加进程 2: 回收内存n 3: 查看内存分配 4: 退出nplease input your choice: scanf(%d,&select); switch(select) case 1:fenpei();break; case 2:Memory_recovery(); case 3:showit(); case 4:exit(); menu(); return 0;int init_neicun() for(int i=0;isize)/如果内存空间大于进程长度 if(ii;j-) fqlistj=fqlistj-1; fqlisti

7、+1.name= fqlisti+1.start=sum+size; fqlisti+1.end=fqlisti.end; fqlisti+1.capactity=fqlisti.capactity-size; fqlisti+1.flag=fqlisti.flag; fqlisti.name=jname; fqlisti.start=sum; fqlisti.end=sum+size-1; fqlisti.capactity=size; fqlisti.flag=1; fqNum+;/进程数目增1 /需要把以后的分区块往后一个位置 flag=1; else /当未使用的分区块大小不足时 su

8、m=sum+fqlisti.capactity; else/当该分区块在使用时 sum=sum+fqlisti.capactity; if(flag=1) printf(已为进程%c分配内存区!n,jname); else为进程%c分配内存区失败!/回收内存int Memory_recovery()/标记回收是否成功 0:失败 1:成功 int sflag=0;/ int tflag=0; char jname=z/吸收空白键请输入进程名称:%cjname); if(fqlisti.name=jname) fqlisti.name= fqlisti.flag=2;/表示为回收的内存区 flag

9、=1; fqNum-;进程%c结束,内存回收成功!进程%c无法结束,内存回收失败! /将连续的已回收的内存区合并 while(flag3) for(i=0;number-1; if(fqlisti.flag=0|fqlisti.flag=2) if(fqlisti+1.flag!=1) if(fqlisti+1.flag=3) fqlisti.end=fqlisti+1.end; fqlisti.capactity=fqlisti.capactity+fqlisti+1.capactity; fqlisti.flag=fqlisti+1.flag; for(int j=i+1;jj+) fql

10、istj=fqlistj+1; i=number; flag+; else flag+;/显示进程情况int showit() int count=0;进程名称 开始位置 结束位置 进程大小 状态nnumber-1&countfqNum;i+) %5c%10d%12d%10d,fqlisti.name,fqlisti.start,fqlisti.end,fqlisti.capactity); if(fqlisti.flag=1) printf( 已使用n count+; else if(fqlisti.flag=3) 尾部n else if(fqlisti.flag=2) 未使用n else if(fqlisti.flag=0)/退出int exit() 按任意键退出.n exit(0);/主函数int main() init_neicun();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1