www.pudn.com > disk_scheding.rar > disk_scheding.c


#include  
#include  
#include  
 
int main() 
{ 
	int select,i,head,way,j,temp; 
	int sum=0; 
	int disk[7]; 
	printf("***************************************************\n"); 
	printf("this is disk scheduling simulation\n"); 
	printf("please select the algorithm you wan to simulation\n"); 
	printf("1.C-Look    2.FCFS    3.SSTF\n"); 
    scanf("%d",&select); 
	printf("please input the disk scan queue(1-200)\n"); 
	for(i=0;i<=9;i++) 
	{ 
		scanf("%d",&disk[i]); 
		if(disk[i]>200||disk[i]<1) 
		{ 
			printf("error!\n"); 
			exit(0); 
		} 
	} 
	printf("please input the disk head position(1-200)\n"); 
	scanf("%d",&head); 
	if(head>200||head<1) 
	{ 
		printf("error!\n"); 
		exit(0); 
	} 
	printf("please input the way the head to\n 1: 1-200  2: 200-1 \n"); 
	scanf("%d",&way); 
	if(way!=1&&way!=2) 
	{ 
		printf("error!\n"); 
		exit(0); 
	} 
	if(select==1) 
	{ 
		for(i=0;i<=9;i++)                                       //¶ÔqueueÅÅÐò 
		{ 
			for(j=9;j>i;j--) 
				if(disk[j]=disk[i]&&head<=disk[i+1]) 
			{ 
				temp=i+1; 
				break; 
			} 
		if(way==1) 
		{ 
				for(i=0;i<=9;i++) 
				{ 
					printf("now disk head to %d\n",disk[temp]); 
					printf("yi dong de ci dao shu wei:%d",abs(head-disk[temp])); 
					sum=sum+abs(head-disk[temp]); 
					head=disk[temp]; 
					temp=(temp+1)%10; 
					printf("---------------------------------------------\n"); 
				} 
		} 
		if(way==2) 
		{ 
				temp=temp-1; 
				for(i=0;i<=9;i++) 
				{ 
					printf("now disk head to %d\n",disk[temp]); 
					head=disk[temp]; 
					printf("yi dong de ci dao shu wei:%d\n",abs(head-disk[temp])); 
					sum=sum+abs(head-disk[temp]); 
					temp=temp-1; 
					if(temp<0) 
						temp=9; 
					printf("\n---------------------------------------------\n"); 
				} 
		} 
	} 
	else if(select==2) 
	{ 
		for(i=0;i<=9;i++) 
		{ 
			printf("now disk head to %d\n",disk[i]); 
			printf("yi dong de ci dao shu wei:%d",abs(head-disk[i])); 
			sum=sum+abs(head-disk[i]); 
			head=disk[i]; 
			printf("\n---------------------------------------------\n"); 
		} 
	} 
	else if(select==3) 
	{ 
		int min=10; 
		int distance[11]; 
		int flag[10]={1,1,1,1,1,1,1,1,1,1}; 
		for(i=0;i<9;i++) 
		{ 
			for(j=0;j<9;j++) 
			{ 
				distance[j]=abs(head-disk[j]); 
			} 
			distance[min]=255; 
			for(j=0;j<9;j++) 
			{ 
				if(distance[min]>distance[j]) 
				{ 
					if(flag[j]==1) 
						min=j; 
				} 
			} 
			printf("least is :%d\n",min); 
			printf("now disk head to %d\n",disk[min]); 
			printf("yi dong de ci dao shu wei:%d:",abs(head-disk[min])); 
			sum=sum+abs(head-disk[min]); 
			head=disk[min]; 
			flag[min]=0;									//have tackled 
			printf("\n---------------------------------------------\n"); 
		} 
	} 
		printf("yi gong yi dong de ci dao shu wei:%d",sum); 
		return 1; 
}