磁盘调度最短寻道算法C语言实现
时间: 2023-08-05 11:07:39 浏览: 92
操作系统电梯调度算法c语言实现
以下是磁盘调度最短寻道算法的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000
int main()
{
int n, head, i, j, seek = 0;
int queue[MAX], temp[MAX];
printf("Enter the number of requests: ");
scanf("%d", &n);
printf("Enter the position of head: ");
scanf("%d", &head);
printf("Enter the request queue: ");
for(i = 0; i < n; i++)
{
scanf("%d", &queue[i]);
temp[i] = queue[i];
}
temp[n] = head;
// 对磁盘请求队列进行排序
for(i = 0; i < n + 1; i++)
{
for(j = i; j < n + 1; j++)
{
if(temp[i] > temp[j])
{
int t = temp[i];
temp[i] = temp[j];
temp[j] = t;
}
}
}
// 查找磁头移动距离
int index;
for(i = 0; i < n + 1; i++)
{
if(head == temp[i])
{
index = i;
break;
}
}
int distance1, distance2;
for(i = index; i >= 0; i--)
{
printf("%d -> ", temp[i]);
}
printf("0 -> ");
for(i = index + 1; i < n + 1; i++)
{
printf("%d -> ", temp[i]);
}
seek = temp[index] - temp[0];
for(i = 1; i < n + 1; i++)
{
distance1 = abs(temp[i] - temp[i-1]);
seek += distance1;
}
printf("\nTotal distance: %d\n", seek);
return 0;
}
```
该程序首先读取磁盘请求队列,然后对请求队列进行排序,以便从磁头位置开始,选择离当前磁头位置最近的请求进行服务。接着,程序计算磁头移动的距离,最后输出结果。
注意:该程序中假设磁头初始位置为0。实际应用中,磁头的初始位置可能不是0,需要根据实际情况进行修改。
阅读全文