⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wlg.txt

📁 SPF调度程序!是SPF调度算法的一个实例!
💻 TXT
字号:
#include <iostream.h>
#define WLG 10000
const int MAX = 10 ;                              /*最多10个进程*/

//最短作业优先
void SJF( char *a , int *b,int *c,int num) ;

void main()
{
        int  i, num,cometime,runtime,b[MAX],c[MAX];  
		char identy,a[MAX];
	     cout << "Input the count of processes : " << endl ;
        cin>>num;
         
        //输入进程相关参数
        for(  i = 0 ; i < num; i++ )
        {
                cout << "Input identity ,cometime,runtime:" << endl ;
                cin >> identy ;  a[i]=identy;
              
                cin >> cometime ; b[i] =cometime;
               
                cin >> runtime ; c[i]=runtime;
                
             
        }
   
   SJF(a,b,c,num);
     
}
  void SJF( char *a , int *b,int *c,int num) 
{   
    float  come_time,run_time,finishtime,totalrun;float aver_run,aver_totalrun=0,aver_aver_run=0;
     int t=0,j=0,min,k,i,p=0,n;   int d[MAX];  int tag;
	
 for(;(c[0]!=WLG)||(c[1]!=WLG)||(c[3]!=WLG)||(c[4]!=WLG);)
 {
	 for(i=0;i<num;i++)	
	   if (b[i]==0)
	   {
		   cout<<"Process "<<a[i]<<"   "<<"run"<< endl ;
		   cout<<"Its come_time,run_time,finishtime,totalrun,aver_run are:"<< endl ;
          come_time=b[i];
          run_time=c[i];         
           finishtime=come_time+run_time;
           totalrun=run_time; 
		   aver_totalrun+=totalrun;
			 aver_run=totalrun/run_time ;
			 aver_aver_run+=aver_run;
		   cout<<"come_time="<<come_time<< endl;
           cout<<"run_time="<<run_time<< endl;
		   cout<<"finishtime="<<finishtime<< endl;
		   cout<<"totalrun="<<totalrun<< endl;
		   cout<<"aver_run="<<aver_run<< endl;
		   t+=run_time;
		   c[i]=WLG;b[i]=WLG; 		}
   

	   for(i=0;i<num;i++)//记录0到T时刻的所以进程。
	    if (b[i]<=t)
		{d[j++]=c[i];tag=j;}
	     min=d[0];  //找出服务时间最小的。
         for(i=0;i<tag;i++)  
	 	  if(min>d[i])
		  { k=min;  min=d[i];}           
		  for(i=0;i<num;i++)//找出服务时间最小的进程的下标。
			  if(c[i]==min)
	             {  cout<<"Process "<<a[i]<<"   "<<"run"<< endl ;
		   cout<<"Its come_time,run_time,finishtime,totalrun,aver_run are:"<< endl ;
          come_time=b[i];
          run_time=c[i];         
           finishtime=t+run_time;
           totalrun=finishtime-come_time;
		    aver_totalrun+=totalrun;
			 aver_run=totalrun/run_time ;
			 aver_aver_run+=aver_run;
		   cout<<"come_time="<<come_time<< endl;
           cout<<"run_time="<<run_time<< endl;
		   cout<<"finishtime="<<finishtime<< endl;
		   cout<<"totalrun="<<totalrun<< endl;
		   cout<<"aver_run="<<aver_run<< endl;
		   t+=run_time;
		   c[i]=WLG;b[i]=WLG; 
			  
                                           
	   }//if
	 }//for
        for(i=0;i<num;i++)//找出服务时间最小的进程的下标。
			  if(c[i]!=WLG)
	             {  cout<<"Process "<<a[i]<<"   "<<"run"<< endl ;
		   cout<<"Its come_time,run_time,finishtime,totalrun,aver_run are:"<< endl ;
          come_time=b[i];
          run_time=c[i];         
           finishtime=t+run_time;
           totalrun=finishtime-come_time;
		    aver_totalrun+=totalrun;
			 aver_run=totalrun/run_time ;
			 aver_aver_run+=aver_run;
		   cout<<"come_time="<<come_time<< endl;
           cout<<"run_time="<<run_time<< endl;
		   cout<<"finishtime="<<finishtime<< endl;
		   cout<<"totalrun="<<totalrun<< endl;
		   cout<<"aver_run="<<aver_run<< endl;
		   t+=run_time;   } 
			  aver_totalrun/=num;
			  aver_aver_run/=num;
			  cout<<"aver_totalrun="<<aver_totalrun<< endl;
			   cout<<"aver_aver_run="<<aver_aver_run<< endl;
	}//sjf

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -