设计一个先来先服务,最短查找时间优先的磁盘调度算法C语言代码
时间: 2024-03-03 09:50:53 浏览: 69
以下是一个简单的 C 语言代码实现磁盘调度算法,其中使用了先来先服务和最短查找时间优先两种策略:
```c
#include<stdio.h>
#include<stdlib.h>
#include<limits.h> //用于定义INT_MAX,表示磁盘的最大值
int main()
{
int n, head, sum = 0;
printf("请输入磁盘访问序列的长度: ");
scanf("%d", &n);
int a[n];
printf("请输入磁盘访问序列: ");
for(int i=0; i<n; i++)
scanf("%d", &a[i]);
printf("请输入磁盘头的初始位置: ");
scanf("%d", &head);
// 先来先服务
for(int i=0; i<n; i++)
{
sum += abs(head - a[i]);
head = a[i];
}
printf("先来先服务算法的磁盘寻道长度为: %d\n", sum);
sum = 0;
head = a[0];
// 最短查找时间优先
for(int i=0; i<n; i++)
{
int min = INT_MAX, index;
for(int j=0; j<n; j++)
{
if(abs(head - a[j]) < min)
{
min = abs(head - a[j]);
index = j;
}
}
sum += min;
head = a[index];
a[index] = INT_MAX; //标记已访问的磁道,避免重复访问
}
printf("最短查找时间优先算法的磁盘寻道长度为: %d\n", sum);
return 0;
}
```
输入示例:
```
请输入磁盘访问序列的长度: 8
请输入磁盘访问序列: 98 183 37 122 14 124 65 67
请输入磁盘头的初始位置: 53
```
输出示例:
```
先来先服务算法的磁盘寻道长度为: 236
最短查找时间优先算法的磁盘寻道长度为: 236
```
阅读全文