You are on page 1of 4

/*************************************************************************

Write a simulation program for disk scheduling unsing SCAN algorithm.


Accept total no of disk blocks ,disk request String,Direction of Head
moment and current head position from the user. Display the list of
request in the order in witch it is served.also Display the total head
movements.
*************************************************************************/

#include<stdio.h>

int ReqString[20],nor,nob,start,thm,min[10],max[10];
char direction;

int getmin()
{
int i,j=0;
for(i=0;i<nor;i++)
if(ReqString[i]<=start)
min[j++]=ReqString[i];
return j;
}

int getmax()
{
int i,j=0;
for(i=0;i<nor;i++)
if(ReqString[i]>start)
max[j++]=ReqString[i];
return j;
}

void sortd(int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(min[i] < min[j])
{
int t=min[i];
min[i]=min[j];
min[j]=t;
}
}

void sorta(int n)
1
NAME:- HUSSAIN ROOMANI
ROLL NO:-370
{
int i,j;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(max[i] > max[j])
{
int t=max[i];
max[i]=max[j];
max[j]=t;
}
}

void main()
{
int i,j,k;
printf("\nEnter No.of Requests: ");
scanf("%d",&nor);
printf("\nEnter Requests:\n");
for(i=0;i<nor;i++)
{
printf("[%d]=",i);
scanf("%d",&ReqString[i]);
}
printf("\nEnter No.of Cylinders: ");
scanf("%d",&nob);
printf("\nEnter Start Block: ");
scanf("%d",&start);
printf("\nEnter Direction: ");
fflush(stdin);
direction = fgetc(stdin);
j=getmin();
sortd(j);
k=getmax();
sorta(k);
if(direction=='L')
{
for(i=0;i<j;i++)
{
printf("\n%d-%d",start,min[i]);
thm+=start-min[i];
start=min[i];
}
printf("\n%d-0",start);
thm+=start;
start=0;
2
NAME:- HUSSAIN ROOMANI
ROLL NO:-370
for(i=0;i<k;i++)
{
printf("\n%d-%d",start,max[i]);
thm+=max[i]-start;
start=max[i];
}
}
else if(direction=='R')
{
for(i=0;i<k;i++)
{
printf("\n%d-%d",start,max[i]);
thm+=max[i]-start;
start=max[i];
}
printf("\n%d-%d",start,nob-1);
thm+=nob-1-start;
start=nob-1;
for(i=0;i<j;i++)
{
printf("\n%d-%d",start,min[i]);
thm+=start-min[i];
start=min[i];
}
}
printf("\nTotal Head Movement: %d",thm);}

/*************************************************************************

OUTPUT:

Enter No.of Requests: 3

Enter Requests:
[0]=3
[1]=1
[2]=2
Enter No.of Cylinders: 2
Enter Start Block: 1
Enter Direction: L
1-1
1-0
0-2
2-3
Total Head Movement: 4
3
NAME:- HUSSAIN ROOMANI
ROLL NO:-370
**************************************************************************/

4
NAME:- HUSSAIN ROOMANI
ROLL NO:-370

You might also like