磁盘调度算法的模拟实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
磁盘调度算法的模拟实现
学院
专业
学号
学生姓名
指导教师姓名
2014年3月19日
目录
一、课设简介 (2)
1.1 课程设计题目 (2)
1.2 课程设计目的 (2)
1.3 课程设计要求 (2)
二、设计内容 (3)
2.1功能实现 (3)
2.2流程图 (3)
2.3具体内容 (3)
三、测试数据 (4)
3.3 测试用例及运行结果 (4)
四、源代码 (5)
五、总结 (12)
5.1 总结............................................
一、课设简介
1.1课程设计题目
磁盘调度算法的模拟实现1
1.2程序设计目的
操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。
1)进一步巩固和复习操作系统的基础知识。
2)培养学生结构化程序、模块化程序设计的方法和能力。
3)提高学生调试程序的技巧和软件设计的能力。
4)提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。
1.3 设计要求
1)磁头初始磁道号,序列长度,磁道号序列等数据可从键盘输入,也可从文件读入。
2)最好能实现磁道号序列中磁道号的动态增加。
3)磁道访问序列以链表的形式存储
4)给出各磁盘调度算法的调度顺序和平均寻道长度
二、设计内容
2.1 功能实现
设计并实现一个本别利用下列磁盘调度算法进行磁盘调度的模拟
程序。
1) 先来先服务算法FCFS 2) 最短寻道时间优先算法SSTF 2.2流程图
2.3具体内容
1)先来先服务算法FCFS
这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘
的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请
求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情
况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情开始 选择算法 F C F S S S T F 结束
况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。
2)最短寻道时间优先算法SSTF
该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。
三、测试数据
3.1 先来先服务算法
输入磁道序列:55 58 39 18 90 160 150 38 184
当前磁道号:100
3.2 最短寻道时间优先算法
(1)当前磁道号大于磁道序列中的最大的磁道号时
输入磁道序列:55 58 39 18 90 160 150 38 184
当前磁道号:100
3.3 测试结果
四、源代码
#include
#include
#include
typedef struct node {
int data;
struct node *next;
}Node,*Linklist;
void main()
{
void Create_Linklist(Node *);
void fcfs();//声明先来先服务函数FCFS
void sstf();//声明最短寻道时间优先函数SSTF
void print(Node *); //输出链表函数
int s; //s是选择哪个算法
printf("**************磁盘调度算法***************\n");
printf("\t***1,先来先服务算法FCFS\n");
printf("\t***2,最短寻道时间优先算法SSTF\n");
printf("\t***0,退出\n");
printf("\t***请选择:");
scanf("%d",&s);
while(s!=0)
{
switch(s)
{
case 1:printf("\t\t********你选择了:先来先服务算法FCFS\n");
fcfs();
break;
case 2:printf("\t\t******你选择了:最短寻道时间优先算法SSTF\n");
sstf();
break;
}
printf("\t\t*******退出请选0,继续请选1,2,\n");
scanf("%d",&s);
}
}
/********************************************************** ********/
void fcfs()//先来先服务算法
{
void Create_Linklist(Node *);
void print(Node *);
int Length_Linklist(Node *);