![操作系统实验报告-存储管理实验_第1页](http://file4.renrendoc.com/view/17c87ca2fcec3a55ddf327e82e5b6e83/17c87ca2fcec3a55ddf327e82e5b6e831.gif)
![操作系统实验报告-存储管理实验_第2页](http://file4.renrendoc.com/view/17c87ca2fcec3a55ddf327e82e5b6e83/17c87ca2fcec3a55ddf327e82e5b6e832.gif)
![操作系统实验报告-存储管理实验_第3页](http://file4.renrendoc.com/view/17c87ca2fcec3a55ddf327e82e5b6e83/17c87ca2fcec3a55ddf327e82e5b6e833.gif)
![操作系统实验报告-存储管理实验_第4页](http://file4.renrendoc.com/view/17c87ca2fcec3a55ddf327e82e5b6e83/17c87ca2fcec3a55ddf327e82e5b6e834.gif)
![操作系统实验报告-存储管理实验_第5页](http://file4.renrendoc.com/view/17c87ca2fcec3a55ddf327e82e5b6e83/17c87ca2fcec3a55ddf327e82e5b6e835.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
存储管理实验一.实验目的及要求:通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解。熟悉虚存管理的各种页面淘汰算法。通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。二.实验环境:操作系统:WindowsXP编译环境:VisualC++6.0三.算法描述由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU时限等因素。作业调度算法:采用先来先服务(FCFS)调度算法,即按作业提交的先后次序进行调度。总是首先调度在系统中等待时间最长的作业。每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。每个作业的最初状态总是等待W。各个等待的作业按照提交时刻的先后次序排队,总是首先调度等待队列中队首的作业。每个作业完成后要打印该作业的开始运行时刻、完成时刻、周转时间和带权周转时间,这一组作业完成后要计算并打印这组作业的平均周转时间、带权平均周转时间。四.实验步骤:核心源码:voidacceptment2(RECT*head,RECT*back1){RECT*before,*after;intinsert;insert=0;before=head;after=head->next;if(head->next==NULL)/*如果可利用区表为空*/{head->size=back1->size;head->next=back1;maxblocknum++;back1->next=NULL;}else{while(after!=NULL)/*与上一块合并*/if(back1->address==after->size+after->address){before->next=after->next;back->size=after->size+back1->size;free(after);after=NULL;}else{after=after->next;before=before->next;}before=head;after=head->next;while(after!=NULL)if(after->address==back1->size+back1->address)/*与下一块合并*/{back1->size=back1->size+after->size;before->next=after->next;free(after);after=NULL;}else{before=before->next;after=after->next;}before=head;/*将回收结点插入到合适的位置*/after=head->next;do{if(after==NULL||(after->size>back1->size)){before->next=back1;back1->next=after;insert=1;}else{before=before->next;after=after->next;}}while(!insert);if(head->size<back1->size)/*修改最大块值和最大块数*/{head->size=back1->size;maxblocknum++;}elseif(head->size==back1->size)maxblocknum++;}}/*分配函数*/RECT*assignment(RECT*head,intapplication){RECT*after,*before,*assign;assign=(RECT*)malloc(sizeof(RECT));/*分配申请空间*/assign->size=application;assign->next=NULL;if(application>head->size||application<=0)assign->address=-1;/*申请无效*/else{before=head;after=head->next;while(after->size<application)/*查找适应的结点*/{before=before->next;after=after->next;}if(after->size==application)/*结点大小等于申请大小则完全分配*/{if(after->size==head->size)maxblocknum--;before->next=after->next;assign->address=after->address;free(after);}else{if(after->size==head->size)maxblocknum--;after->size=after->size-application;/*大于申请空间则截取相应大小分配*/assign->address=after->address+after->size;if(tolower(way)=='b')/*如果是最佳适应,将截取后剩余结点重新回收到合适位置*/{before->next=after->next;back=after;acceptment2(head,back);}}if(maxblocknum==0)/*修改最大数和头结点值*/{before=head;head->size=0;maxblocknum=1;while(before!=NULL){if(before->size>head->size){head->size=before->size;maxblocknum=1;}elseif(before->size==head->size)maxblocknum++;before=before->next;}}}assign1=assign;returnassign1;/*返回分配给用户的地址*/}voidacceptment1(RECT*head,RECT*back1)/*首先适应*/{RECT*before,*after;intinsert;before=head;after=head->next;insert=0;while(!insert)/*将回收区插入空闲区表*/{if((after==NULL)||((back1->address<=after->address)&&(back1->address>=before->address))){before->next=back1;back1->next=after;insert=1;}else{before=before->next;after=after->next;}}if(back1->address==before->address+before->size)/*与上一块合并*/{before->size=before->size+back1->size;before->next=back1->next;free(back1);back1=before;}if(after!=NULL&&(after->address==back1->address+back1->size)){/*与下一块合并*/back1->size=back1->size+after->size;back1->next=after->next;free(after);}if(head->size<back1->size)/*修改最大块值和最大块个数*/{head->size=back1->size;maxblocknum=1;}elseif(head->size==back1->size)maxblocknum++;}/*检查回收块的合法性,back1为要回收的结点地址*/intbackcheck(RECT*head,RECT*back1){RECT*before,*after;intcheck=1;if(back1->address<0||back1->size<0)check=0;/*地址和大小不能为负*/before=head->next;while((before!=NULL)&&check)/*地址不能和空闲区表中结点出现重叠*/if(((back1->address<before->address)&&(back1->address+back1->size>before->address))
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烹饪工艺学(第2版) 课件 单元11食物熟处理的方法
- 《时尚北京》杂志2023年第12期
- 二零二五年度高等教育机构师资培养合作协议
- 二零二五年度航空航天部件图纸保密共享协议
- 女性营养与保健课件
- Unit 1 Meeting new people Part A How do we get to know people【知识精研】人教PEP版(2024)英语三年级下册
- 《幼教项目贝瓦网》课件
- 《句子衔接与排序》课件
- 《HIV护理与防护》课件
- 湖北省武汉市江岸区2024-2025学年七年级上学期期末考试语文试卷
- 医院殡葬服务管理制度
- 工业机器人仿真软件:Epson RC+ Simulator:机器人基本操作:EpsonRC+Simulator界面介绍
- 项目三任务1:认识超声波雷达(课件)
- 起重机械生产单位质量安全总监-特种设备考试题库
- 煤矿自救互救知识考试复习题库(含答案)
- 云南省红河州市级名校2024年中考联考数学试题含解析
- DZ∕T 0080-2010 煤炭地球物理测井规范(正式版)
- 幼儿园木工坊安全教育
- 2024年高考语文一轮复习:文言文文意概括简答题知识清单 (二)
- 内科主任年终述职报告
- 康复科工作计划及实施方案
评论
0/150
提交评论