001 for(i=0;i<MAXQUEUE;i++){ 002 queue[i].go=-1; 003 queue[i].visited=0; 004 }005 006 start=53;// 磁头的初始位置 007 }008 009 //读入磁道号流 010 void readData() 011 {012 FILE *fp; 013 char fname[20]; 014 int temp,i; 015 016 cout<<" 请输入磁道号流文件名:"; 017 strcpy(fname,""); 018 cin>>fname; 019 020 if((fp=fopen(fname,"r"))==NULL){ 021 cout<<" 错误,文件打不开,请检查文件名:)"<<endl; 022 }023 else{ 024 while(!feof(fp)){ 025 fscanf(fp,"%d ",&temp); 026 queue[quantity].go=temp; 027 quantity++; 028 }029 cout<<endl<<"---------------------------------------------"<<endl ;030 cout<<" 所读入的磁道号流:"; 031 for(i=0;i<quantity;i++){ 032 cout<<queue[i].go<<" "; 033 }034 cout<<endl<<" 请求数为:"<<quantity<<endl; 035 }036 }037 038 //FIFO 算法 039 void FIFO() 040 {041 int i; 042 int total=0; 043 int current; 044 045 cout<<endl<<"---------------------------------------------"<<endl ;046 cout<<"FIFO 算法的访问磁道号顺序流:"; 047 048 current=start; 049 for(i=0;i<quantity;i++){ 050 cout<<queue[i].go<<" "; 051 total+=abs(queue[i].go-current); 052 current=queue[i].go; 053 }054 cout<<endl<<" 磁头移过的柱面数:"<<total; 055 }056 057 //最短寻道优先调度算法 058 void shortest() 059 {060 int i,j,p; 061 int total=0; 062 int current; 063064 cout<<endl<<"---------------------------------------------"<<endl ;065 cout<<" 最短寻道优先调度算法的访问磁道号顺序流:"; 066 067 current=start; 068 for(i=0;i<quantity;i++){ 069 p=0; 070 while(queue[p].visited!=0){ 071 p++; 072 }073 for(j=p;j<quantity;j++)
磁道调度算法(精) 来自淘豆网m.daumloan.com转载请标明出处.