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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

操作系统存储动态分区分配及回收算法附源码.docx

1、操作系统存储动态分区分配及回收算法附源码存储管理动态分区分配及回收算法课程名称:计算机操作系统 班级:信1-2实验者姓名:李琛 实验日期:218年月20日评分: 教师签名:一、实验目的分区管理是应用较广泛的一种存储管理技术。本实验要求用一种结构化高级语言构造 分区描述器,编制动态分区分配算法和回收算法模拟程序,并讨论不同分配算法的特点。二、实验要求1、编写:Firt Fitlgorithm 2、编写:Best i Algrihm 3、编写:空闲区回收算法三、实验过程(一)主程序1、定义分区描述器 node,包括 3个元素: (1)adr-分区首地址(2)size-分区大小 (3)next-指向

2、下一个分区的指针 2、定义3 个指向 nod 结构的指针变量:()head1空闲区队列首指针(2)bak-指向释放区 node 结构的指针 ()asign指向申请的内存分区node 结构的指针、定义 个整形变量: free用户申请存储区的大小(由用户键入)(二)过程 1、定义check 过程,用于检查指定的释放块(由用户键入)的合法性2、定义 siment1过程,实现 irs FitAlgit 3、定义 asgnet2 过程,实现 est FitAgrim、定义accepmn1 过程,实现 Firt Fi goithm 的回收算法 5、定义 acceptnt2过程,实现BtFt Alorthm

3、 的回收算法 、定义 prnt 过程,打印空闲区队列 (三)执行 程序首先申请一整块空闲区,其首址为 0,大小为 367;然后,提示用户使用哪种分配算法,再提示是分配还是回收;分配时要求输入申请区的大小,回收时要求输入释放区的首址和大小。实验代码Main。cpp#inluetdio。hicluetdlib。h#includncldeoseamusng namesace std;defie X_SE 2767tyede structnont i;intdr;int size; tut node*net;oe;Nde *hea1, had, *ack1, ack2, ssi;int euet;it

4、 check(int add, int i, chr c) Ne *p,head; it ceck = ;if (addad) &( +szpad)) | (ad =padr) & (addpar + psie)) chck = 0; else = nex; if (check = 0)pint(”t输入释放区地址或大小有错误!);return chk;vidni()Node *; head1 =(o*)malc(szef(Noe);hea2 (ode*)maloc(sizeof(Node));p = (Nod*)alloc(sieof(Node);ead1t = p;ea2net = p;

5、psiz =AX_SIE; adr=0; pne NUL; pid 0;Nde* assgnment(it nm,nt re)Noe *before,*afe, as; as = (Node)malloc(sieo(ode)); before hd1;after= head1ext;assi um; asssie =r; hile (afteizereq)befor =fore-ne; after afte-next;i(ater =NUL) aa 1; ls if (aterize = eq) eorenext = afernext; assadr=after-ad; else after-

6、size - rq; ar = afteradr; ateradr += rq; etun as;voiacceptnt1(int aress, ntsz, trd) oe *before, after; nt nser 0;back1= (Node*)mall(szeo(Noe));fore =head1; aftr = heant;bc1-dr = dres;bac1ize= siz; ack1i = r;ck1next =NUL; whie (!nsr&ter)将要被回收的分区插入空闲区(按首址大小从小到大插入) f (afte = ULL) | (bck1-ad = afterd) &

7、 (bck = beore-ar))) efx= ack1; bac1nex= fter; insert = 1; else eorberenxt; after ter-nx; if(insert)if(back1adr= beforadr+ bfre-size) /和前边分区合并 ore-size += bck-sie; efoe-nx= bac1-nxt; free(bak1); ls if (ftr&ac1ad ack1sze=a-adr) /和后边分区合并 backz += afer-ize; bk1-next aterex; bac1id =afeid; free(aer); fte

8、r =bck1; ntf(t首先分配算法回收内存成功!n”); els pritf(”首先分配算法回收内存失败!);Nd anment2(int num, it req) Node befoe, af, ass, *; ss = (de*)malloc(izf(de)); q = (ode)mloc(sizof(ode));befor = ed2;fter=head2-next; asi m; asssize= rq; while (atesinext; if(afte = NUL)sad 1; else i(aftr-ie eq) bfrenxtafternext; as-adr afedr

9、; el afte; beforenext =e-nx; assadr q-adr; qsie - e; q-d += rq;befre = ead2; ater =had2ext; if (after = NU) beorenext=q; next =NULL; ee wi ((afer-e)(q-i) bfo=befoenet; after = afternext; eforenex = q; q-net afte; retn(s);vod cceptmnt(intadrss, int iz, n d) Noe eore, *aft;it nsrt =;ack = (Node)mallc(

10、sizeof(d));beore= h2;fter =ea2-ext; bckdr=adrs; bak-size= siz;back-id=rd;ack2-ne NUL; if (hdnext = NULL)/空闲队列为空 ad2ex = ak; eadsize= ack-ze; el/空闲队列不为空 wl(after) (back2dr =aer-ad +a-size) /和前边空闲分区合并 beoeext = fterxt; aftrs += back2sie; back2 =afte; ls ef = beforenext; after = ate-next; efre = he2; a

11、fter hed-xt; wie (af) if (aftear = bc2adr + c-s) /和后边空闲区合并 forenex = frnex; bak2ize += aferize; els bfre = befoe-nex;afer aternet; befoe ha; at head2-nex;i (!isrt) /将被回收的块插入到恰当的位置(按分区大小从小到大) if (te = ULL | (tr-sizak2-size) & (bore-sizebck2-size) efoent back2;ack2ext fte; iner 1; brea; es beforebefor

12、et; ater =ter-net; if (isert) print(”最佳适应算法回收内存成功!n);lepint(”最佳适应算法回收内存失败!!n);voirint(char chice)/输出空闲区队列信息Noe *; (chie = f | coice = F) headn; else p = 2et; i (p) pintf(n空闲区队列的情况为:); prinf(t编号t首址t终址t大小”);hi () printf(”dt%tdt%dn”, p-id, p-ad, adr + siz 1,psize); p= pnext; voidmenu()/菜单及主要过程 ch chose

13、; it ch, nu=, , ad, rd; ile () sstm(”cls”); pint(-存储管理动态分区分配及回收算法-n); prinf( F 最先适应算法); pitf( B 最佳适应算法); prnf(” E 退出程序); prif(”-); pinf(请选择算法:”); in hose; /scanf(%c”, chose); f (choe = | chose = E) it(0); ele ystem(cls”); hile() i (hose =f | cose =F) printf(”最先适应算法:n”); if (hos= b | ose = ) intf(最佳适

14、应算法:n); print(”-n); intf( 1 分配内存n”); printf( 2 回收内存n”); printf( 3查看内存n”); pint(” 4 返回n”); pritf(-n”); prntf(请选择:); scan(”, &c); fush(stdn); stc (h) case 1: printf(输入申请的分区大小:”); anf(”, ); if (hoe = f |chose =F) asgn= signet1(m, r); el assin assgnmen2(num, r); f (ssignd= ) print(”分配内存失败!”); els rintf(

15、”分配成功!分配的内存的首址为:%dn, asignr); reak; cse2: pin(输入释放的内存的首址:); af(d,&dd); prtf(”输入释放的内存的大小:); sanf(”%d, r);pin(输入释放的内存的编号:”); scf(%,&rd); f (chck(dd, , chose)) i (chose = f | chos=) accepe1(ad, r, rd); else acmt2(ad, , rd); brak; case 3:prnt(hos);eak; case4:menu();break; voidma()/主函数 init();me();四、实验结果五、实验总结通过这次实验我练习了存储管理动态分区分配及回收算法,对操作系统中动态可变分区存储管理有了更深刻的了解。刚开始编程时并没有什么思路,查阅相关书籍,浏览网上的论坛后,才对这次实验有了编程思路,在编程中总会遇到各种意想不到问题,这些问题一定要解决。在解决问题的同时,自己的编程能力也在提高。

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

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