磁盘调度算法的模拟实现

上传人:xmg****18 文档编号:121240754 上传时间:2020-02-19 格式:DOC 页数:16 大小:83.50KB
返回 下载 相关 举报
磁盘调度算法的模拟实现_第1页
第1页 / 共16页
磁盘调度算法的模拟实现_第2页
第2页 / 共16页
磁盘调度算法的模拟实现_第3页
第3页 / 共16页
磁盘调度算法的模拟实现_第4页
第4页 / 共16页
磁盘调度算法的模拟实现_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《磁盘调度算法的模拟实现》由会员分享,可在线阅读,更多相关《磁盘调度算法的模拟实现(16页珍藏版)》请在金锄头文库上搜索。

1、. . .磁盘调度算法的模拟实现 学 院 专 业 学 号 学 生 姓 名 指导教师姓名 2014年3月19日 目录一、 课设简介21.1 课程设计题目21.2 课程设计目的21.3 课程设计要求2二、 设计内容32.1功能实现32.2流程图3 2.3具体内容. 3三、 测试数据.43.3 测试用例及运行结果4四、 源代码5五、 总结12 5.1 总结.一、课设简介1.1 课程设计题目 磁盘调度算法的模拟实现11.2 程序设计目的操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。 1)进一步巩固和复习

2、操作系统的基础知识。 2)培养学生结构化程序、模块化程序设计的方法和能力。 3)提高学生调试程序的技巧和软件设计的能力。 4)提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。1.3 设计要求1)磁头初始磁道号,序列长度,磁道号序列等数据可从键盘输入,也可从文件读入。 2)最好能实现磁道号序列中磁道号的动态增加。3)磁道访问序列以链表的形式存储4)给出各磁盘调度算法的调度顺序和平均寻道长度二、设计内容2.1 功能实现设计并实现一个本别利用下列磁盘调度算法进行磁盘调度的模拟程序。1) 先来先服务算法FCFS 2) 最短寻道时间优先算法SSTF 2.2流程图开始选择算法SSTFFCF

3、S结束2.3具体内容1)先来先服务算法FCFS 这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。 2)最短寻道时间优先算法SSTF 该算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的

4、响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。三、 测试数据3.1 先来先服务算法输入磁道序列:55 58 39 18 90 160 150 38 184当前磁道号:1003.2 最短寻道时间优先算法(1)当前磁道号大于磁道序列中的最大的磁道号时 输入磁道序列:55 58 39 18 90 160 150 38 184当前磁道号:100 3.3 测试结果 四、源代码#include#include#includeusing namespace std;typedef struct nodeint

5、 data;struct node *next;Node,*Linklist;void main()void Create_Linklist(Node *); void fcfs();/声明先来先服务函数FCFSvoid sstf();/声明最短寻道时间优先函数SSTF void print(Node *); /输出链表函数int s; /s是选择哪个算法printf(*磁盘调度算法*n); printf(t*1,先来先服务算法FCFSn); printf(t*2,最短寻道时间优先算法SSTFn); printf(t*0,退出n); printf(t*请选择:); scanf(%d,&s);w

6、hile(s!=0) switch(s) case 1:printf(tt*你选择了:先来先服务算法FCFSn);fcfs();break; case 2:printf(tt*你选择了:最短寻道时间优先算法SSTFn);sstf(); break; printf(tt*退出请选0,继续请选1,2,n); scanf(%d,&s);/*/void fcfs()/先来先服务算法void Create_Linklist(Node *);void print(Node *); int Length_Linklist(Node *);Node *l,*head;/*m,*n;*/float num=0;

7、 /num为平均寻道长度 int c,f;head=(Node *)malloc(sizeof(Node);head-next=NULL;printf(*新建一个单链表,以0作为结束标志:*n); Create_Linklist(head);c=Length_Linklist(head); printf(tt*从几号磁道开始:*); scanf(%d,&f); /f为磁道号print(head); printf(t*链表长度为:%dn,c);l=head-next; for(int i=0;idata-f);f=l-data;l=l-next;num=num/c; printf(tt*先来先服

8、务的寻道顺序是:n);print(head);printf(tt*平均寻道长度:%fn,num);/*/void sstf()/最短寻道时间优先算法void Create_Linklist(Node *);void print(Node *); int Length_Linklist(Node *);Node *p,*q,*r,*s,*l,*m,*head;int c,f; head=(Node *)malloc(sizeof(Node);head-next=NULL;printf(*新建一个单链表,以0作为结束标志:*n); Create_Linklist(head);c=Length_Li

9、nklist(head); printf(tt*从几号磁道开始:*); scanf(%d,&f); /f为磁道号print(head); printf(t*链表长度为:%dn,c);l=(Node *)malloc(sizeof(Node);l-next=NULL;m=l;q=head;p=head-next;s=head;r=head-next;float num=0;for(int i=0;idata);for(int j=0;jnext;q=q-next;if(abs(f-p-data)data);r=p;s=q;num+=abs(f-r-data);f=r-data;s-next=r-next;r-next=NULL;m-next=r;m=r;q=head; p=head-next;s=head;r=head-next;num=num/c;printf(tt*最短寻道时间优先顺序是:n);print(l);printf(tt*平均寻道长度:%fn,num);/*/void print(Node *head) /输出链表Node *p;p=head-next;coutnext=NULL) printf(%dt,p-data);printf(n);elsewhile(p-next!=NULL)printf(%dt,p-data);p=p-next;

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

当前位置:首页 > 办公文档 > 教学/培训

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