请用C语言编写一个磁盘读取调度的程序(disk read scheduling)

请用C语言编写一个磁盘读取调度的程序(disk read scheduling),第1张

#include <stdio.h>

#include <string.h>

int main()

{

char s[4]="abc",sc='d'//比册渣较的字符串和字符

FILE *fp

char filename[100],c

int i=0,n1=0,n2=0

long fpos,len

printf("input filename:\n")

gets(filename)//输入文件名称

if((fp=fopen(filename,"r"))==NULL)//打开文件

{

printf("open %s error!\n",filename)

return 1

}

len=strlen(s)

c=fgetc(fp)

while(!feof(fp))

{

if(c==s[0])//如果第一个字符相等,比较剩下的字符串

{

fpos=ftell(fp)//记住当前文件指针位置

for(i=1i<leni++)

{

if(fgetc(fp)!=s[i])//如果不匹配,跳出循环

{

fseek(fp,fpos,0)//重新设置指针位置激告

break

}

}

if(i==len)//如果匹配成功,累加数目

n1++

}

if(c==sc)//与字符sc匹配,累加数目

n2++

c=fgetc(fp)

}

printf("\n与字符串%s匹配的有州铅悄%d个\n",s,n1)//输出匹配个数

printf("与字符%c匹配的有%d个\n",sc,n2)

getchar()

return 0

}

磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写 *** 作的请求。为了尽快的响应进程的磁盘请求,人们设计了磁盘调度算法。主要有四种磁启派盘调度算法。先来先服务算法(FCFS),最短寻道时间优先算法(SSTF),扫描算法(SCAN),循环扫描算法(CSCAN)。

运用最短寻道优先算法依次选择的磁道是:90、80、125、140、160、190、30、29、25、20、10。

运用电梯调度算法依次经过的磁道是:90、80、30、29、25、20、10、125、140、160、190。

我们根据算法的寻道序列可以得出:最短寻道优先算法的经过的煮面数为310个柱面,电梯调度算法经过的柱面数为270次。

扩展资料:

每种磁盘调度算法的优缺点

先来先服务算法的优点会根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现某一进程的请求长期得不到满足的情况,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。

最短寻道优先算法的缺点每次的寻道时间最短,该算法可以得到比较好的吞吐量,芦铅但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期地被延迟,有些请求的响应时间将不可预期。

扫描算法的优缺点此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平均响应时间较小,但由于是摆动式的扫描方法,两侧磁道被访问的频率仍低于中间磁道。

循环扫描算法的优点是这些磁道刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的悄哗贺时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动。

参考资料来源:百度百科-磁盘调度算法


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12218659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存