CLOOK DISK SCHEDULING

 #include <stdio.h>
#include <stdlib.h>
int main()
{
    int queue[20], n, head, i, j, seek_time = 0, diff, max, min, temp, range;
    float avg_seek_time;
    printf("Enter the number of requests: ");
    scanf("%d", &n);
    printf("Enter the queue of disk requests: ");
    for(i = 0; i < n; i++)
        scanf("%d", &queue[i]);
    printf("Enter the initial head position: ");
    scanf("%d", &head);
    queue[n] = head;
    n++;
    for(i = 0; i < n; i++)
    {
        for(j = i; j < n; j++)
        {
            if(queue[i] > queue[j])
            {
                temp = queue[i];
                queue[i] = queue[j];
                queue[j] = temp;
            }
        }
    }
    max = queue[n - 1];
    min = queue[0];
    range = max - min;
    for(i = 0; i < n; i++)
    {
        if(queue[i] == head)
        {
            j = i;
            break;
        }
    }
    for(i = j; i >= 0; i--)
    {
        diff = abs(head - queue[i]);
        seek_time += diff;
        head = queue[i];
    }
    head = queue[j + 1];
    for(i = j + 1; i < n; i++)
    {
        diff = abs(head - queue[i]);
        seek_time += diff;
        head = queue[i];
    }
    avg_seek_time = (float)seek_time / n;
    printf("Total Seek Time: %d\n", seek_time);
    printf("Average Seek Time: %f\n", avg_seek_time);
    return 0;
}

Comments

Popular posts from this blog

LOOK Disk Scheduling