欢迎来到天天文库
浏览记录
ID:46821375
大小:143.56 KB
页数:12页
时间:2019-11-28
《操作系统实验四 磁盘调度算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、操作系统实验四磁盘调度算法实验四磁盘调度一、实验目的:本实验要求学生模拟设计一个磁盘调度程序,观察调度程序的动态运行过程。通过实验让学生理解和掌握磁盘调度的职能。二、实验内容:对磁盘进行移臂操作,模拟磁盘调度算法并计算平均寻道时间三、实验准备:1.相关理论知识:(1)假设磁盘只有一个盘面,并且磁盘是可移动头磁盘。(3)磁盘是高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出工作,在现代计算机系统中往往同时会有若干个要求访问磁盘的输入输出要求。系统可采用一种策略,尽可能按最佳次序执行访问磁盘的请求
2、。由于磁盘访问时间主要受寻道时间T的影响,为此需要采用合适的寻道算法,以降低寻道时间。(2)磁盘是可供多个进程共享的存储设备,但一个磁盘每个时刻只能为一个进程服务。当有进程在访问某个磁盘时,其它想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出请求而处于等待状态时,可用磁盘调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。2.测试数据:磁盘读写请求队列:20,44,40,4,80,12,76当前磁头位置:50试问采用FCFS、SSTF、SCAN磁盘调度算法时寻道顺序及平均寻道时间分别为多少?四、实验过程:1.
3、流程图SCAN算法(扫描算法)流程图:12操作系统实验四磁盘调度算法求平均寻道长度选择移动臂移动方向,开始扫描移动到最小(大)号,改向外(内)移动扫描未扫描的磁道输出移动的平均磁道数输出排好序的磁道序列开始结束输入磁道号使用冒泡法从小到大排序输入当前磁道号判断当前磁头在序列中的位置2.源代码#include#include#include#include#definemaxsize1000/*********************判断输入数据是否有效*****
4、*********************/12操作系统实验四磁盘调度算法intdecide(charstr[])//判断输入数据是否有效{inti=0;while(str[i]!=' '){if(str[i]<'0'
5、
6、str[i]>'9'){return0;break;}i++;}returni;}/******************将字符串转换成数字***********************/inttrans(charstr[],inta)//将字符串转换成数字{inti;intsum=0;for(i=0;i7、sum=sum+(int)((str[i]-'0')*pow(10,a-i-1));}returnsum;}/*********************冒泡排序算法**************************/int*bubble(intcidao[],intm){inti,j;inttemp;for(i=0;icidao[j]){temp=cidao[i];cidao[i]=cidao[j];cidao[j]=temp;}8、}cout<<"排序后的磁盘序列为:";for(i=0;i9、ut<<"磁盘请求序列为:";for(i=0;i>str;//对输入数据进行有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<10、)//输出磁盘扫描序列{cout<
7、sum=sum+(int)((str[i]-'0')*pow(10,a-i-1));}returnsum;}/*********************冒泡排序算法**************************/int*bubble(intcidao[],intm){inti,j;inttemp;for(i=0;icidao[j]){temp=cidao[i];cidao[i]=cidao[j];cidao[j]=temp;}
8、}cout<<"排序后的磁盘序列为:";for(i=0;i9、ut<<"磁盘请求序列为:";for(i=0;i>str;//对输入数据进行有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<10、)//输出磁盘扫描序列{cout<
9、ut<<"磁盘请求序列为:";for(i=0;i>str;//对输入数据进行有效性判断a=decide(str);if(a==0){cout<<"输入数据的类型错误,请重新输入!"<10、)//输出磁盘扫描序列{cout<
10、)//输出磁盘扫描序列{cout<
此文档下载收益归作者所有