- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统实验四 磁盘调度算法
PAGE \* MERGEFORMAT 13
实验四 磁盘调度
一、实验目的:
本实验要求学生模拟设计一个磁盘调度程序,观察调度程序的动态运行过程。通过实验让学生理解和掌握磁盘调度的职能。
二、实验内容:
对磁盘进行移臂操作,模拟磁盘调度算法并计算平均寻道时间
三、实验准备:
1.相关理论知识:
(1)假设磁盘只有一个盘面,并且磁盘是可移动头磁盘。
(3)磁盘是高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出工作,在现代计算机系统中往往同时会有若干个要求访问磁盘的输入输出要求。系统可采用一种策略,尽可能按最佳次序执行访问磁盘的请求。由于磁盘访问时间主要受寻道时间T的影响,为此需要采用合适的寻道算法,以降低寻道时间。
(2)磁盘是可供多个进程共享的存储设备,但一个磁盘每个时刻只能为一个进程服务。当有进程在访问某个磁盘时,其它想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出请求而处于等待状态时,可用磁盘调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。
2.测试数据:
磁盘读写请求队列:20,44,40,4,80,12,76
当前磁头位置:50
试问采用FCFS、SSTF、SCAN磁盘调度算法时寻道顺序及平均寻道时间分别为多少?
四、实验过程:
1.流程图
SCAN算法(扫描算法)流程图:
求平均寻道长度
选择移动臂移动方向,开始扫描
移动到最小(大)号,改向外(内)移动扫描未扫描的磁道
输出移动的平均磁道数
输出排好序的磁道序列
开始
结束
输入磁道号
使用冒泡法从小到大排序
输入当前磁道号
判断当前磁头在序列中的位置
2. 源代码
#includestdio.h
#includestdlib.h
#includeiostream.h
#includemath.h
#define maxsize 1000
/*********************判断输入数据是否有效**************************/
int decide(char str[]) //判断输入数据是否有效
{
int i=0;
while(str[i]!=\0)
{
if(str[i]0||str[i]9)
{
return 0;
break;
}
i++;
}
return i;
}
/******************将字符串转换成数字***********************/
int trans(char str[],int a) //将字符串转换成数字
{
int i;
int sum=0;
for(i=0;ia;i++)
{
sum=sum+(int)((str[i]-0)*pow(10,a-i-1));
}
return sum;
}
/*********************冒泡排序算法**************************/
int *bubble(int cidao[],int m)
{
int i,j;
int temp;
for(i=0;im;i++) //使用冒泡法按从小到大顺序排列
for(j=i+1;jm;j++)
{
if(cidao[i]cidao[j])
{
temp=cidao[i];
cidao[i]=cidao[j];
cidao[j]=temp;
}
}
cout排序后的磁盘序列为:;
for( i=0;im;i++) //输出排序结果
{
coutcidao[i] ;
}
coutendl;
return cidao;
}
/*********************先来先服务调度算法************************/
void FCFS(int cidao[],int m) //磁道号数组,个数为m
{
int now;//当前磁道号
int sum=0; //总寻道长度
int j,i;
int a;
char str[100];
float ave; //平均寻道长度
cout磁盘请求序列为:;
for( i=0;im;i++) //按先来先服务的策略输出磁盘请求序列
{
coutcidao[i] ;
}
coutendl;
cout请输入当前的磁
您可能关注的文档
- 必修1知识点预案.doc
- (金融法规与)探究.ppt
- (雷蕾老师讲座)2015珠海高三备考探究.pptx
- (模板)2009-5(张三)交流分布式电力系统的小信号方法——综述探究.doc
- 毕业论文_浅析转炉供料设备的日常维护与故障处理预案.doc
- (模板)基础工程设计探究.doc
- 2《社会工作综合能力》社会工作价值观与专业伦理探究.ppt
- 2-1插__值__法探究.ppt
- 2-1动量探究.ppt
- 2-1空气探究.doc
- 2025年互联网金融平台用户信任度提升策略与金融科技监管政策影响分析报告.docx
- 农业保险产品创新与农村金融服务生态优化分析报告.docx
- 2025年航空航天零部件高精度加工技术智能设备绿色制造认证报告.docx
- 2025年智慧景区建设实施方案:绿色环保视角下的景区可持续发展策略.docx
- 2025年生态循环农业技术模式创新与应用案例分析报告.docx
- 高血压患者的计划生育与用药安全.pptx
- 2025年工业互联网平台同态加密技术在智能工厂设备联网安全中的应用实践报告.docx
- 2025年电子政务安全风险防范与信息安全保障报告.docx
- 教育与培训行业:教育信息化建设与智慧校园解决方案.docx
- 2025年消费金融在下沉市场的风险防范与监管政策建议.docx
文档评论(0)