动态分区分配算法.doc

动态分区分配算法.doc

ID:59223700

大小:59.50 KB

页数:15页

时间:2020-09-09

动态分区分配算法.doc_第1页
动态分区分配算法.doc_第2页
动态分区分配算法.doc_第3页
动态分区分配算法.doc_第4页
动态分区分配算法.doc_第5页
资源描述:

《动态分区分配算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机操作系统动态分区磁盘调度算法一个好的计算机系统不仅要有足够的存储容量,较高的存取速度和稳定可靠的存储器,而且能够合理的分配和使用这些主存空间。当用户提出申请主存空间的要求时,存储管理能够按照一定的策略分析主存的使用情况,找出足够的空间分配给申请者;当作业运行完毕,存储管理要回收作业占用的主存空间。本实验采取可变分区存储管理方法,用常用分区管理算法模拟磁盘管理过程,以加深了解操作系统的存储管理功能。1.本实验是模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并不实际启动装入作业。2.采用最先适应

2、法、最佳适应法、最坏适应法分配主存空间。3.当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。4.当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲区,登在空闲区表中。5.设计的模拟系统中,进程数不小于5,进程调度方式可以采用实验一中的任何一种。6.运行所设计的程序,输出有关数据结构表项的变化和内存的当前状态。首次适应算法将内存中的空闲区按照地址由低到高的顺序形成空闲区表当一个新作业要求

3、装入主存时,查空闲区表,从中找到第一个满足要求的空闲区,为作业分配主存空间,并将剩余空闲区按照地址由小到大的顺序插入空闲区表的合适位置,修改已分配表当作业运行结束后,回收作业的主存空间,并与相邻空闲区合并,修改空闲区表和已分配表每次主存分配和回收后,打印空闲区表和已分配表详细描述实验设计思想、程序结构及各模块设计思路;详细描述程序所用数据结构及算法;明确给出测试用例和实验结果;为增加程序可读性,在程序中进行适当注释说明;认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;#include#incl

4、udeusingnamespacestd;constintprocsize=5;typedefstructNode{intPId;//进程IdintPrio;//进程优先数intNeedRunTime;//进程需要运行时间intRoom;//进程所需空间大小Node*next;//就绪队列中的下个就绪进程的地址}PCB;typedefstruct{//就绪链式队列结构体PCB*front;PCB*rear;}AleadyQueue;typedefstructTab{//分区表结构体intCalledId;/

5、/调用该分区的进程IdintTabId;//分区号intSize;//大小intStartAdd;//始址char*Status;//使用状态Tab*next;//指向下个分区}Table;voidCinInfo(PCBP[procsize]){//输入进程信息cout<<"tt请输入5个进程,格式如下:";cout<<"PId优先数运行时间所需内存大小(最好是小于20)";inti=0,j=0;for(i,j;i>P[j].PId>>P[j].Prio>>P[j

6、].NeedRunTime>>P[j].Room;}}voidSort(PCBP[procsize]){//根据优先数由冒泡法对进程进行排序inti,j,exchange=1;//exchange表示相邻PCB是否调换PCBTemp;for(i=procsize;i>1&&exchange;i--){exchange=0;for(j=0;j

7、InitQueue(){//就绪队列初始化函数AleadyQueueQ;Node*p;p=(Node*)malloc(sizeof(PCB));if(!p){cout<<"就绪队列初始化失败!";exit(0);}else{Q.front=Q.rear=p;Q.front->next=NULL;returnQ;}}voidEnQueue(AleadyQueue&Queue,PCB&P){//进程入队操作函数Node*p;p=(Node*)malloc(sizeof(PCB));if(!p)cout<<"分配节点失败!

8、";else{*p=P;p->next=NULL;Queue.rear->next=p;Queue.rear=p;}}voidEnQueue1(AleadyQueue&Queue,PCB&P){//进程入队操作函数Node*p;p=(Node*)malloc(sizeof(PCB));if

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。