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

📄 hrrn.java

📁 操作系统中的调度先来先服务及短作业优先
💻 JAVA
字号:
import java.io.*;

class hrrn 
 {
	public static  void main(String args[])
		 
	{
		int f=0;
	   
	   int h1=0,h2=0;
	
		double s1 = 0.00;

	    double s2 = 0.00;
        
      	int a_1[]=new int[5];//完成时间
	
		int z_z[]=new int[5];//周转时间
	
		double d_z[]=new double[5];//带权周转时间
	
		process a0 = new process("进程A",0,3);//到达时间及服务时间
	   
	 	process a1 = new process("进程B",2,6);
	 
	  	process a2 = new process("进程C",4,4);
	  
	  	process a3 = new process("进程D",6,5);
	  
       	process a4 = new process("进程E",8,2);
	  
	   	process a[] = {a0,a1,a2,a3,a4};
	   
		first(a);
    	for(int i=0;i<a.length;i++)
	          
	     {  process temp;
	       
	           if(i==0)
	                 a_1[i]= a[i].getfirst()+a[i].getrun();//完成时间
	           else  
	                 a_1[i]=f+a[i].getrun(); 
	                
	                 f=a_1[i];//完成时间
	                 
	                 sort(a,f,i);
	             
	                 z_z[i]=(a_1[i]-a[i].getfirst());//周转时间
	                
	                 d_z[i]= (double)(z_z[i]/a[i].getrun());//带权周转时间
	                
	                 s1+= z_z[i];
	              
	                 s2+=d_z[i];
		             System.out.print(a[i].toString()+"\n");
		           
	                 System.out.print("\t完成时间:"+a_1[i]+"\n");
	                
	                 System.out.print("\t周转时间:"+z_z[i]+"\n");
	                
	                 System.out.print("\t带权周转时间:"+d_z[i]+"\n");
	                 
	                 System.out.println();
	               
	      }   
	               s1=s1/5;
	              
	               s2=s2/5;
	    System.out.print("\t平均周转时间:"+s1+"\n");
	    
	      System.out.print("\t带权平均周转时间:"+s2+"\n");
    }
			
	public static void first(process[] a)   //调度起初时服务时间越短,优先级越高
	{	
	  process temp;
	   
		for (int i = 0; i < a.length; i++)
		   
		   { 
		      if(a[0].getfirst()>a[i].getfirst())
		          { 
		            temp = a[i];
				
					a[i] = a[0];
				
					a[0] = temp;
				  }
		    }//谁第一个开始调度

     }
     public static void sort(process[] a,int f,int k) 
	   { 
	     int dz[]=new int[5];//
	  
	    double h1=0,h2=0;
	
		k++;
	
		for (int i = 0;i<a.length-2;i++)
		
			for(int j=k;j<a.length-1;j++)
	          {
	             process tmp;
	             dz[k]=f-a[k].getfirst();
	             dz[j+1]=f-a[j+1].getfirst();
			     h1 = (double)(dz[k] / a[k].getrun());
			     h2 = (double)(dz[j+1] / a[j+1].getrun());
	             if( f>=a[j].getfirst())//到达时间应该大于前一个完成时间
	                {  if(h1<h2)
	                  {  
	                    tmp = a[k];
			           
			            a[k] = a[j+1];
				       
				        a[j+1] = tmp;
	                       
	                  }//排列,响应比大的在队列的前面。
	                }
	          }
	   }             
	                
}
class process
{ 
    String name;
    int  start_time;
    int  run_time;
    
    
	process(String n, int s,int r)
	{
		name=n;
	
		start_time=s;
	
		run_time=r;
	}
	public String getname()
	{  
	return name;
	}
	public int getfirst()
	{
		return start_time;
	}
	public int getrun()
	{
		return run_time;
	}
	public String toString()
	{
      return  "\t"+name+"\t\n"+"\t到达时间:"+start_time+"\t\n"+"\t运行时间:"+ run_time+"\n\n";
    }
}                           

⌨️ 快捷键说明

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