实验报告

时间:2024.4.27

操作系统实验报告

 班级:3G软件12-01

姓名:  

学号:      

首次适应算法

设计图:

实验报告

核心代码:

//首次适应算法

int first_fit(char jname,int size){

         printf("name=%c,size=%d\n",jname,size);

         int flag=0;//默认flag=0情况分配失败,而flag=1时分配成功

         int sum=0;//sum的初始化

         for(int i=0;i

                   //number为已定义的进程数量

                   if(fqlist[i].flag!=1){

                            //当某一分区不在使用时

                            if(fqlist[i].capactity>size)//如果内存空间大于进程长度

                            {

                                     if(i

                                               //分配内存,已使用内存块增加

                                               for(int j=number-1;j>i;j--)

                                               {

                                                        fqlist[j]=fqlist[j-1];

                                               }

                                               fqlist[i+1].name='n';

                                               fqlist[i+1].start=sum+size;

                                               fqlist[i+1].end=fqlist[i].end;

                                               fqlist[i+1].capactity=fqlist[i].capactity-size;

                                               fqlist[i+1].flag=fqlist[i].flag;

                                     }

                                     fqlist[i].name=jname;

                                     fqlist[i].start=sum;

                                     fqlist[i].end=sum+size-1;

                                     fqlist[i].capactity=size;

                                     fqlist[i].flag=1;

                                     fqNum++;//进程数目增1

                                     //需要把以后的分区块往后一个位置

                                     flag=1;

                            }else{

                                     //当未使用的分区块大小不足时

                                     sum=sum+fqlist[i].capactity;

                            }

                   }else{

                            //当该分区块在使用时

                            sum=sum+fqlist[i].capactity;

                   }

         }

         if(flag==1)

                   printf("已为进程%c分配内存区!\n",jname);

         else

                   printf("为进程%c分配内存区失败!\n",jname);

         return 0;

}

//回收内存

int Memory_recovery(){

         int flag=0;//标记回收是否成功 0:失败1:成功

         int sflag=0;

         int tflag=0;

         char jname='z';

         getchar();//吸收空白键

         printf("请输入进程名称:");

         scanf("%c",&jname);

         for(int i=0;i

                   if(fqlist[i].name==jname){

                            fqlist[i].name='n';

                            fqlist[i].flag=2;//表示为回收的内存区

                            flag=1;

                            fqNum--;

                   }

         }

         if(flag==1)

                   printf("进程%c结束,内存回收成功!\n",jname);

         else printf("进程%c无法结束,内存回收失败!\n",jname);

         //将连续的已回收的内存区合并

         while(flag<3){

                   for(i=0;i

                            if(fqlist[i].flag==0||fqlist[i].flag==2){

                                     if(fqlist[i+1].flag!=1){

                                               if(fqlist[i+1].flag==3)

                                               {

                                                        fqlist[i].end=fqlist[i+1].end;

                                                        fqlist[i].capactity=fqlist[i].capactity+fqlist[i+1].capactity;

                                                        fqlist[i].flag=fqlist[i+1].flag;

                                                        for(int j=i+1;j

                                                                 fqlist[j]=fqlist[j+1];

                                                        }

                                                        i=number;

                                                        flag++;

                                               }

                                               else{

                                                        fqlist[i].end=fqlist[i+1].end;

                                                        fqlist[i].capactity=fqlist[i].capactity+fqlist[i+1].capactity;

                                                        fqlist[i].flag=fqlist[i+1].flag;

                                                        for(int j=i+1;j

                                                        {

                                                                 fqlist[j]=fqlist[j+1];

                                                        }

                                               }

                                     }

                            }

                   }

                   flag++;

         }

         return 0;

}

编程环境和系统环境:

                            Microsoft (R) Developer Studio软件和win8.1操作系统

结果截图:

       分配内存:

添加进程;

       分配失败:

添加成功:

回收内存;

退出:

更多相关推荐:
实验报告 范本

研究生实验报告范本实验课程实验名称实验地点学生姓名学号指导教师范本实验时间年月日一实验目的熟悉电阻型气体传感器结构及工作原理进行基于聚苯胺敏感薄膜的气体传感器的结构设计材料制作材料表征探测单元制作与测试实验结果...

实验报告范本

学生实验报告书实验课程名称开课学院指导教师姓名学生姓名学生专业班级200200学年第学期实验教学管理基本规范实验是培养学生动手能力分析解决问题能力的重要环节实验报告是反映实验教学水平与质量的重要依据为加强实验过...

实验报告范本

AMT执行机构实验报告实验对象NJ7150变速箱总成实验内容第四代选换档执行机构高低温实验报告人审核批准报告时间20xx苏州绿控传动科技有限公司第四代选换档执行机构高低温试验报告一实验装置零部件清单二已填写完整...

实验报告范本

实验报告范本,内容附图。

实验报告范本

开放实验室报告1234

实验报告范本

学生实验报告书实验课程名称开课学院指导教师姓名学生姓名学生专业班级200200学年第学期实验教学管理基本规范实验是培养学生动手能力分析解决问题能力的重要环节实验报告是反映实验教学水平与质量的重要依据为加强实验过...

实验报告范例

Word排版示例22实验目的1掌握资源管理器和我的电脑的基本操作2掌握文件和文件夹的浏览选择操作3掌握文件和文件夹的新建复制移动删除操作4掌握文件和文件夹的查找操作实验内容1资源管理器的操作2文件和文件夹的操作...

实验报告要求及范例

矿井井巷模型观摩演示实验报告学生姓名赵鲁学号专业班级课程名称煤矿开采学实验教师上课日期安全科学与工程学院安全工程系20xx年11月矿井井巷模型观摩演示实验报告

实验报告样本

深圳大学实验报告课程名称学院实验时间实验报告提交时间教务部制注1报告内的项目或内容设置可根据实际情况加以调整和补充2教师批改学生实验报告时间应在学生提交实验报告时间后10日内

实验报告要求及范例2

矿井井巷模型观摩演示实验报告现代化矿井模拟系统学生姓名张彬学号31120xx10423专业班级安全工程122班课程名称矿井开采实验教师高保彬上课日期20xx年11月30日安全科学与工程学院安全工程系20xx年1...

实验室资质认定管理评审报告

管理评审报告管理评审的目的:对公司的质量体系的适宜性、充分性、有效性进行评审,确保质量体系满足实验室资质认定评审准则的要求,使实验室的管理体系不断完善与改进。管理评审的范围:公司各部门管理评审的内容:质量方针、…

实验室认证管理评审报告模拟

泉州市惠信建设工程质量检测有限公司20xx年管理评审报告一、评审目的:验证本公司质量方针、目标和质量管理体系的适应性、充分性和有效性,包括评价质理管理体系改进的机会和变更的需要。二、评审范围:本公司质量方针、目…

实验报告范本(52篇)