磁盘调度算法的模拟实现_第1页
磁盘调度算法的模拟实现_第2页
磁盘调度算法的模拟实现_第3页
磁盘调度算法的模拟实现_第4页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、择算法FSCSFTSF结束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当前磁道号 :1003.3 测试结果.专业资料 .四、源代码#include<iostream&

5、gt;#include<cmath>#include<stdio.h>using namespace std;typedef struct nodeint data;struct node *next;.专业资料 .Node,*Linklist;void main()void Create_Linklist(Node *);void fcfs();/ 声明先来先服务函数FCFSvoid sstf();/ 声明最短寻道时间优先函数SSTFvoid print(Node *); /输出链表函数int s;/s 是选择哪个算法printf("*磁盘调度算法 *n&q

6、uot;);printf("t*1,先来先服务算法FCFSn");printf("t*2,最短寻道时间优先算法SSTFn");printf("t*0,退出 n");printf("t*请选择 :");scanf("%d",&s);while(s!=0)switch(s).专业资料 .case 1:printf("tt*你选择了 :先来先服务算法FCFSn");fcfs();break;case 2:printf("tt*你 选择了 :最短寻道时间优先算法SS

7、TFn");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; /num为平均寻道长度.专业资料 .int c,f;head=(Node *)malloc(sizeof(Node);head->n

8、ext=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;i<c;i+)num+=abs(l->data-f);f=l->data;l=l->next;

9、num=num/c;printf("tt* 先来先服务的寻道顺序是 :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;p

10、rintf("*新建一个单链表,以0作为结束标志:*n");Create_Linklist(head);c=Length_Linklist(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->

11、;next;float num=0;for(int i=0;i<c;i+)int min=abs(f-r->data);for(int j=0;j<c-i-1;j+)p=p->next;q=q->next;if(abs(f-p->data)<min)min=abs(f-p->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=h

12、ead;r=head->next;num=num/c;printf("tt*最短寻道时间优先顺序是:n");print(l);printf("tt*平均寻道长度 :%fn",num);/*/void print(Node *head)/ 输出链表Node *p;p=head->next;cout<<" 单链表显示 :"if(p=NULL).专业资料 .printf(" 单链表为空 :n");else if(p->next=NULL)printf("%dt",p-&g

13、t;data);printf("n");elsewhile(p->next!=NULL)printf("%dt",p->data);p=p->next;printf("%dt",p->data);printf("n");/*/void Create_Linklist(Node *head)/创建链表.专业资料 .Node *p,*q;int i;scanf("%d",&i);q=head;while(i!=0)p=(Node *)malloc(sizeof(Node);p->next=NULL;p->data=i;q->next=p;q=p;cin>>i;/*c+;*/*/int Length_Linklist(Node *head)/计算链表长int l;Node *p;p= head->next;l=1;.专业资料 .while(p->next)p=p->next;l+;return l;五、总结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论