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

下载本文档

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

文档简介

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

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

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

4、很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。三、 测试数据 先来先服务算法输入磁道序列:55 58 39 18 90 160 150 38 184当前磁道号:100 最短寻道时间优先算法(1)当前磁道号大于磁道序列中的最大的磁道号时 输入磁道序列:55 58 39 18 90 160 150 38 184当前磁道号:100 测试结果 四、源代码#include<iostream>#include<cmath>#include<>using namespace std;typedef struct nodeint dat

5、a;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*

6、0,退出n"); printf("t*请选择:"); scanf("%d",&s);while(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 fc

7、fs()/先来先服务算法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->next=NULL;printf("*新建一个单链表,以0作为结束标志:*n"); Create_Linklist(head);c=Length_Linklist(head); printf("t

8、t*从几号磁道开始:*"); 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;num=num/c; printf("tt*先来先服务的寻道顺序是:n");print(head);printf("tt*平均寻道长度:%fn",num);/*/void sst

9、f()/最短寻道时间优先算法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_Linklist(head); printf("tt*从几号磁道开始:*"

10、;); 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;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(ab

11、s(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=head;r=head->next;num=num/c;printf("tt*最短寻道时间优先顺序是:n");print(l);printf("tt*平均寻道长度:%fn",num);/*/void print(N

12、ode *head) /输出链表Node *p;p=head->next;cout<<"单链表显示:"if(p=NULL)printf("单链表为空:n");else if(p->next=NULL) printf("%dt",p->data);printf("n");elsewhile(p->next!=NULL)printf("%dt",p->data);p=p->next;printf("%dt",p->data);

13、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

提交评论