- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统第八次实验张焓实验名称:内存分配算法的模拟实现实验目的:了解和熟悉主要的内存分配算法,学习首次适应算法、最佳适应算法、最差适应算法的算法机制,并通过模拟深刻了解三种算法的算法效率及适用情况。实验方法//内存分配算法的模拟实现(含紧凑算法):首次适应算法、最佳适应算法、最差适应算法!(1)包含该程序需要的头文件,并声明分区数量、最大任务数量;//=========================张焓============================#includeiostream#includestring#includeiomanip#define memory_Num 10#define pro_MAX 10using namespace std;//=========================================================(2)定义两个结构体,node用于存放分区信息,process用于存放任务信息,NUM用于申请分区的程序的计数;typedef struct{int id;int size;int broken;string name;int sta_palce;bool flag;}node;node FQ[memory_Num];typedef struct{int size;string name;}process;process PR[pro_MAX];int NUM = 0;(3)定义分区初始化的函数,用于初始化分区;//----------------------初始化分区----------------------------void fq_creat()//初始化内存的各个分区的信息{int start_flag = 0;int j = 1;//为初始化分区大小定义的临时变量for (int i = 0; imemory_Num; ++i)//分区大小从1-512一共10个;{FQ[i].id = i;FQ[i].size = j;FQ[i].sta_palce = start_flag;FQ[i].flag = false;FQ[i].broken = 0;start_flag += j;j *= 2;}}//-------------------------------------------------------------(4)定义一个排序函数,以分区大小升序排列分区,在最佳适用算法与最差适应算法被配合使用;//----------------------按分区大小升序排序---------------------void order()//按分区大小排序{for (int i = 1; imemory_Num; i++) {if (FQ[i].sizeFQ[i - 1].size) //若第i个元素大于i-1元素,直接插入。小于的话,移动有序表后插入??{int j = i - 1;node x = FQ[i]; //复制为哨兵,即存储待排序元素??FQ[i] = FQ[i - 1]; //先后移一个元素??while (x.sizeFQ[i].size) {//查找在有序表的插入位置??FQ[j + 1] = FQ[j];j--;//元素后移??}FQ[j + 1] = x; //插入到正确位置??}}}//-------------------------------------------------------------(5)首次适应算法;//------------------------ first fit ------------------------void first_fit(string pro_name, int pro_size){cout 你选择了首次适应算法 endl;int i;for (i = 0; imemory_Num; ++i)if (FQ[i].flag == false FQ[i].size = pro_size){FQ[i].flag = true;FQ[i].name = pro_name;FQ[i].broken = FQ[i].size - pro_size;break;}if (i = memory_Num)//当所有的内存大小都小于进程所需的空间大小时,开始紧凑{i = 0;while (FQ[i].flag == true)//从最小分区开始 扫描找到第一个未被使用的分区++i;int j = i + 1;while (FQ[i].sizepro_sizejmemory_Num){FQ[i].size += FQ[j].size;FQ[j].size = 0;++j;}
您可能关注的文档
最近下载
- CJJ_T 135-2009 (2023年版) 透水水泥混凝土路面技术规程正式版.pdf
- 肠道门诊知识考试试题及答案.doc
- 义务教育语文课程(2022版).pdf
- 2023.05.14 金沙之行考察报告(2023.05.14 改).pptx VIP
- 开放系统23661《计算机组网技术》期末机考真题及答案(第101套).docx
- 2022高二【语文(统编版)】大卫·科波菲尔(第二课时)课件.pptx
- 民事起诉状(征信名誉权纠纷).docx
- 第1讲 E.K.Strong销售技巧(上).doc VIP
- AQ1018-2006《矿井瓦斯涌出量预测方法》.pdf
- 吴兴区湖州市第十一中学教育集团社团类初中科学微型校本课程教材.pdf
文档评论(0)