操作系统实验二存储管理动态分区分配及回收算法.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《操作系统实验二存储管理动态分区分配及回收算法.doc》由会员分享,可在线阅读,更多相关《操作系统实验二存储管理动态分区分配及回收算法.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验二 存储管理动态分区分配及回收算法一、 实验目的通过分区管理实验,了解操作系统的基本概念,理解计算机系统的资源如何组织,操作系统如何有效地管理这些系统资源,用户如何通过操作系统与计算机系统打交道。通过课程设计,我们可以进一步理解在计算机系统上运行的其它各类操作系统,并懂得在操作系统的支持下建立自己的应用系统。二、 实验要求本实验要求用一种结构化高级语言构造分区描述器,编制动态分区分配算法和回收算法模拟程序,并掌握分配算法的特点,提高编程技巧和对算法的理解和掌握.三、 实验过程1 准备 (一)主程序 1、定义分区描述器node,包括 3个元素: (1)adr分区首地址 (2)size分区大小
2、 (3)next-指向下一个分区的指针 2、定义 3个指向node结构的指针变量: (1)head1空闲区队列首指针 (2)back1指向释放区node结构的指针 (3)assign指向申请的内存分区node结构的指针 3、定义 1个整形变量: free-用户申请存储区的大小(由用户键入) (二)过程 1、定义check过程,用于检查指定的释放块(由用户键入)的合法性 2、定义assignment1过程,实现First Fit Algorithm 3、定义assignment2过程,实现Best Fit Algorithm 4、定义acceptment1过程,实现First Fit Algor
3、ithm的回收算法 5、定义acceptment2过程,实现Best Fit Algorithm的回收算法 6、定义print过程,打印空闲区队列 (三)执行 程序首先申请一整块空闲区,其首址为0,大小为32767;然后,提示用户使用哪种分配算法,再提示是分配还是回收;分配时要求输入申请区的大小,回收时要求输入释放区的首址和大小。 (四)输出 要求每执行一次,输出一次空闲区队列情况,内容包括: 编号 首址 终址 大小 2.主要流程和源代码实验二源代码#include#define MAX_SIZE 32767typedef struct node int id; int adr; int si
4、ze; struct node next; Node;Node head1,head2,back1,back2,*assign;int request; int check(int add,int siz,char c) Node p,head;int check=1;if(addnext;while(p!=NULL)check) if((addpadr)(add+sizp-adr)|((add=padr)&(addp-adr+p-size)) check=0; else p=p-next;if(check=0) printf(t输入释放区地址或大小有错误!!n); return check;
5、 void init() Node *p;head1=(Node*)malloc(sizeof(Node);head2=(Node)malloc(sizeof(Node));p=(Node)malloc(sizeof(Node));head1next=p;head2-next=p;psize=MAX_SIZE;p-adr=0;p-next=NULL;p-id=0;Node assignment1(int num,int req) Node before,after,*ass;ass=(Node)malloc(sizeof(Node));before=head1;after=head1next;
6、ass-id=num;ass-size=req;while(after-sizereq)before=beforenext;after=afternext;if(after=NULL)assadr=1; elseif(after-size=req) beforenext=afternext;ass-adr=afteradr;else aftersize-=req;assadr=afteradr;afteradr+=req;return ass;void acceptment1(int address,int siz,int rd) Node *before,after;int insert=0
7、;back1=(Node)malloc(sizeof(Node);before=head1;after=head1next;back1adr=address;back1-size=siz;back1id=rd;back1-next=NULL;while(!insert&after)/将要被回收的分区插入空闲区(按首址大小从小到大插入)if(after=NULL)(back1adradr=beforeadr))beforenext=back1;back1-next=after;insert=1;elsebefore=beforenext;after=afternext;if(insert)if(
8、back1-adr=before-adr+beforesize)/和前边分区合并before-size+=back1-size;beforenext=back1-next;free(back1);else if(after&back1adr+back1size=afteradr)/和后边分区合并back1size+=aftersize;back1next=afternext;back1-id=afterid;free(after);after=back1;printf(t首先分配算法回收内存成功!n);elseprintf(”t首先分配算法回收内存失败!n”);Node assignment2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 存储 管理 动态 分区 分配 回收 算法
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内