磁盘调度[推荐]_磁盘调度报告

2020-02-28 其他范文 下载本文

磁盘调度[推荐]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“磁盘调度报告”。

操作系统课程设计

磁 盘 调 度 实 践 报 告

姓名: 董宇超 班级:计算机一班 学号:0906010124

目录:

 实践内容  实践目的及意义  功能设计及数据结构  调试运行及测设分析  存在的问题及改进设想  实践体会  总结  参考文献

正文:

1.实践内容:

 假设磁盘只有一个盘面,并且磁盘是可移动头磁盘。 磁盘是可供多个进程共 享的存储设备,但一个磁盘每个时刻只能为一个进程服务。当有进程在访问 某个磁盘时,其它想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出请求而处于等待状态时,可用电梯调度算法从若 干个等待访问者中选择一个进程,让它访问磁盘。为此设置“驱动调度”进 程。

 由于磁盘与处理器是并行工作的,所以当磁盘在为一个进程服务时,占有处理器的其它进程可以提出使用磁盘(这里我们只要求访问磁道),即动 态申请访问磁道,为此设置“接受请求”进程。

要求模拟电梯调度算法,对磁盘进行移臂操作,编程实现。

2.实践目的:

磁盘是高速、大容量、旋转型、可直接存取的存储设备。它作为计算机 系统的辅助存储器,担负着繁重的输入输出工作,在现代计算机系统中往往 同时会有若干个要求访问磁盘的输入输出要求。

系统可采用一种策略,尽可能按最佳次序执行访问磁盘的请求。由于磁 盘访问时间主要受寻道时间T的影响,为此需要采用合适的寻道算法,以降 低寻道时间。

本实验要求模拟设计一个磁盘调度程序,观察调度程序的动态运 行过程。通过实验理解和掌握磁盘调度的职能。

3.功能设计:

由于程序简单,没有设计结构体,只定义了一下变量:

int m=0;//记录磁道数目

int n;//接受输入的磁道号

int disk[1000];//保存磁道序列

int currenttrack;//当前磁道号

int t;

int i=0,j=0,k=0;//循环参数

int option;//记录寻到方向

int sum=0;//统计寻道长度

源代码: #include void main(){ int m=0;//记录磁道数目

int n;//接受输入的磁道号

int disk[1000];//保存磁道序列

int currenttrack;//当前磁道号

int t;int i=0,j=0,k=0;//循环参数

int option;//记录寻到方向

int sum=0;//统计寻道长度

printf(“请输入当前的磁道号:”);scanf(“%d”,¤ttrack);

printf(“n--------------------1.向磁道号增加的方向访问--------------------”);printf(“n--------------------2.向磁道号减少的方向访问--------------------”);printf(“n请选择的当前磁头移动方向(1/2):”);scanf(“%d”,&option);

printf(“n请输入磁道请求序列(0~999并以结束):n”);scanf(“%d”,&n);while(n!=-1){

disk[i]=n;

m++;i++;

scanf(“%d”,&n);}

/* 冒泡排序 使磁道请求序列从小到大排序 */ for(j=0;j

for(i=0;i

{

if(disk[i]>disk[i+1])

{

t=disk[i];

disk[i]=disk[i+1];

disk[i+1]=t;

}

} }

/* 找到当前磁道号在磁道请求序列中的排序位置 */

k=0;for(i=0;i

k++;else

break;} printf(“n--------------电梯算法调度后的磁盘调度序列-------------n”);/* 第一种: 当前磁道号先向外再向里读 */ if(option==1){ for(i=k;i

printf(“%5d”,disk[i]);} for(i=k-1;i>=0;i--){

printf(“%5d”,disk[i]);} sum=2*(disk[m-1]-disk[k])+disk[k]-disk[0];printf(“n寻道长度为:%5d”,sum);} /* 第二种: 当前磁道号先向里再向外读 */ if(option==2){

for(i=k-1;i>=0;i--){

printf(“%d ”,disk[i]);

sum+=disk[i];}

for(i=k;i

printf(“%5d”,disk[i]);

sum+=disk[i];} sum=disk[m-1]-disk[k]+2*(disk[k]-disk[0]);printf(“n寻道长度为:%5d”,sum);

} printf(“n”);}

4.调试运行:

运行开始后出现如下界面,举例输入5:

然后出现:

1.先选择1(按按磁道号增加的方向寻道):

接着输入磁道序列,若要结束输入,输入-1即可:

然后出现如下寻道结果:

2.再选择2(按按磁道号减少的方向寻道):

接着输入磁道序列,若要结束输入,输入-1即可:

然后出现如下寻道结果:

5.存在的问题:

由于初次做操作系统模拟实验,所以程序设计中存在很多问题,例如:由于电梯算法是从当前的磁道号开始沿着预定的方向寻道,当本方向上的请求全部满足时,再反向寻道,但是程序模拟过程中,进程不能随着寻道的同时添加新的进程,使得电梯调度算法不能更好的体现。只能预先输入一串请求,然后只对这一段请求寻道。

改进之处:添加更高级的算法,使得请求能在寻道的同时加进来。

还有一些简单的已解决的问题,不一一列举了。

6.实践心得体会:

通过这次实践学会了不少内容,更深的理解了磁道调度的几种算法,而且学 会了系统的编写程序。在编程过程中,需要 查阅各种资料,并且学习前人的 编写方法,找出优劣,然后形成自己的思想,最终完成程序的编写。

通过模拟磁盘调度的电梯调度算法,并比较与其他调度算法的不同,懂得了 各种算法在不同情况下的作用。选择一个好的调度算法可以节约很多时间。

在模拟过程中出现过好多问题,有的解决了,有的还未解决,不管如何都是 一种收获。

在最初的时候,由于程序编写隐藏的错误,编译没有发现,却执行不下 去,然后改正错误,修复漏洞,最终满足实验要求。

7.总结:

为期一周的操作系统实践课结束了,编写了电梯调度算法的磁盘调度模 拟程序。电梯调度寻道方式就像电梯运行一样,就是沿一个方向寻道,直到 满足这一方向的所有请求,便反向寻道。在程序中添加了寻道长度的显示,以便将电梯调度的效率与其他磁盘调度算法比较。

8.参考文献:

1.操作系统教程(第4版)„„„„孙钟秀 主编 高等教育出版社;

2.算法与数据结构-C语言描述(第2版)„„张乃孝 主编 高等教育出版社; 3.网络资源;

《磁盘调度[推荐].docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
磁盘调度[推荐]
点击下载文档
相关专题 磁盘调度报告 磁盘 磁盘调度报告 磁盘
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文