操作系统课程设计实验报告用C++实现驱动调度算法

上传人:博****1 文档编号:488229552 上传时间:2023-04-25 格式:DOC 页数:18 大小:161.50KB
返回 下载 相关 举报
操作系统课程设计实验报告用C++实现驱动调度算法_第1页
第1页 / 共18页
操作系统课程设计实验报告用C++实现驱动调度算法_第2页
第2页 / 共18页
操作系统课程设计实验报告用C++实现驱动调度算法_第3页
第3页 / 共18页
操作系统课程设计实验报告用C++实现驱动调度算法_第4页
第4页 / 共18页
操作系统课程设计实验报告用C++实现驱动调度算法_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《操作系统课程设计实验报告用C++实现驱动调度算法》由会员分享,可在线阅读,更多相关《操作系统课程设计实验报告用C++实现驱动调度算法(18页珍藏版)》请在金锄头文库上搜索。

1、操 作 系 统实验报告(4)学院:计算机科学与技术学院班级:计091学号: 2姓名:时间:2011/12/31目 录1. 实验名称32. 实验目的33. 实验内容34. 实验要求35. 实验原理36. 实验环境47. 实验设计47.1数据结构设计47.2算法设计57.3功能模块设计68. 实验运行结果109. 实验心得10附录:源代码(部分)11一、实验名称:用C+实现驱动调度算法二、实验目的:通过自己编程来实现驱动调度算法,进一步理解驱动调度算法的概念及含义,提高对驱动调度算法的认识,同时提高自己的动手实践能力。加强我们对磁盘调度的理解,有利于我们了解先来先服务算法、最短作业优先算法、响应比

2、最高优先者优先算法。三、实验内容:利用C+,实现驱动调度算法1. 先来先服务算法(FCFS)2. 最短作业优先算法(SJF)3. 响应比最高优先者优先算法(HRRF)四、实验要求:1.完成驱动调度算法的设计2.分别计算每种算法的经过磁道数五、实验原理:作为操作系统的辅助存储器,用来存放文件的磁盘是一类高速大容量旋转型存储设备,在繁重的I/O负载下,同时会有若干传输请求来到并等待处理,系统必须采用一种调度策略,按照最佳次序执行要求访问的诸多请求,减少为若干I/O请求服务所需消耗的总时间。磁盘驱动调度对磁盘的效率有重要影响。磁盘驱动调度算法的好坏直接影响辅助存储器的效率,从而影响计算机系统的整体效

3、率。1. 先入先出算法(FIFO):总是严格按时间顺序对磁盘请求予以处理。算法实现简单、易于理解并且相对公平,不会发生进程饿死现象。但该算法可能会移动的柱面数较多并且会经常更换移动方向,效率有待提高2. 电梯调度算法:总是将一个方向上的请求全部处理完后,才改变方向继续处理其他请求。3. 扫描算法(scan algorithm):总是从最外向最内(或最内向最外)进行扫描,然后在从最内向最外(或最外向最内)扫描。该算法与电梯调度算法的区别是电梯调度在没有最外或最内的请求时不会移动到最外或最内柱面。六、实验环境:Win-7系统Visual C+ 6.0七、实验设计:1.数据结构设计定义结构体:str

4、uct MagneticHead/磁头构成int site;/当前位置int count;/已扫描磁道数bool direct;/磁头移动方向;struct Range/磁盘磁道范围int mStart;/起始值(0)int mEnd;/结束值();struct RequestList/请求序列int site;/请求磁道号bool state;/处理状态:true处理,false未处理;struct Data/基本数据集合MagneticHead magneticHead;/磁头RequestList *requestList;/请求序列int *executeList;/执行序列Range

5、 range;/磁盘磁道数范围int length;/请求数量;定义类对象:class Display/封装显示方法private:public:Display()/构造函数void displayExecuteList(Data *db)/输出执行列cout执行列: ;for(int i=0;ilength;i+)coutexecuteListi ;coutexecuteListi;coutendl;cout经过磁道数: magneticHead.count;coutendl;void displayRequestList(Data *db)/输出请求列cout请求列: ;for(int i

6、=0;ilength;i+)coutrequestListi.site ;coutendl;2.算法设计 2.1 FCFS算法void fcfs(Data *db)/先来先服务算法int t=0;for(int i=0;ilength;i+)db-executeListi+1=db-requestListi.site;db-magneticHead.site=db-requestListi.site;t=db-executeListi-db-requestListi.site;if(tmagneticHead.count+=t;2.2 电梯调度算法void elevator(Data *db)

7、/电梯算法int *a;a=new intdb-length;for(int i = 0; ilength;i+)ai=db-requestListi.site;int t;/冒泡排序if(db-magneticHead.direct=false)/方向从小到大for( i = 1; ilength;i+)for(int j=0;jlength-i;j+)if(ajaj+1)t=aj;aj=aj+1;aj+1=t;int j;/生成执行序列for( i = 0; ilength;i+)if(db-magneticHead.site=ai)j=i;for(int k=0;klength;k+,i

8、+)db-executeListk+1=ai;for(int l=db-length-j+1, i = 0; iexecuteListl=aj-i-1;db-magneticHead.count=a0+db-magneticHead.site-2*adb-length-1;else /方向从大到小for( i = 1; ilength;i+)for(int j=0;jlength-i;j+)if(ajaj+1)t=aj;aj=aj+1;aj+1=t;int j;/生成执行序列for( i = 0; ilength;i+)if(db-magneticHead.site=ai)j=i;for(in

9、t k=0;klength;k+,i+)db-executeListk+1=ai;for(int l=db-length-j+1, i = 0; iexecuteListl=aj-i-1;db-magneticHead.count=2*adb-length-1-a0-db-magneticHead.site;/计算扫描磁道数2.3 扫描算法void scan(Data *db)/扫描算法int *a;a=new intdb-length;for(int i = 0; ilength;i+)ai=db-requestListi.site;int t;if(db-magneticHead.dire

10、ct=true)for( i = 1; ilength;i+)for(int j=0;jlength-i;j+)if(ajaj+1)t=aj;aj=aj+1;aj+1=t;int j;for( i = 0; ilength;i+)if(db-magneticHead.site=ai)j=i;for(int k=0;klength;k+,i+)db-executeListk+1=ai;for(int l=db-length-j+1, i = 0; iexecuteListl=aj-i-1;db-magneticHead.count=a0+db-magneticHead.site-2*db-range.mStart;elsecoutaan;for( i = 1; ilength;i+)for(int j=0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号