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

📄 os.java

📁 处理及调度算法模拟 模拟几种不同的处理机调度算法
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		      }
			 else
			 {
				 	if(systemTime<zhuanD(tj1.getTime()))//如果当前的时间下海没有作业到达
				 	{
				 		systemTime=zhuanD(tj1.getTime());//将直接调度下一个到来的作业
				 	}
				 String zhouzhuan=(systemTime-zhuanD(tj1.getTime())+
						 Integer.parseInt(tj1.getRuntime()))+"分钟";//周转时间即为当前的系统时间减去作业的到达时间再加上作业运行的时间
				 zhou=systemTime-zhuanD(tj1.getTime())+Integer.parseInt(tj1.getRuntime());
				 dai=zhou/Integer.parseInt(tj1.getRuntime());
				 result2=result2+dai;
				 Object data[]={
						  j+1,tj1.getM(),zhuanH(systemTime)
						  ,zhouzhuan,dai};
				 modle.addRow(data);
				 result1=result1+zhou;
		          systemTime=systemTime+Integer.parseInt(tj1.getRuntime());					 
			 }
	       }		
	}*/
	public void result(TJ tj3)
	{
		  float dai;
		  float zhou;
		 String zhouzhuan=(systemTime-zhuanD(tj3.getTime())+
				 Integer.parseInt(tj3.getRuntime()))+"分钟";//周转时间即为当前的系统时间减去作业的到达时间再加上作业运行的时间
		 zhou=systemTime-zhuanD(tj3.getTime())+Integer.parseInt(tj3.getRuntime());
		 dai=zhou/Integer.parseInt(tj3.getRuntime());
		 Object data[]={
				  first,tj3.getM(),zhuanH(systemTime)
				  ,zhouzhuan,dai};
		 modle.addRow(data);
		 result1=result1+zhou;
		 result2=result2+dai;
         systemTime=systemTime+Integer.parseInt(tj3.getRuntime());	
          first=first+1;
	}
	public void objectMove(TJ tj5)
	{
		for(int j=0;j<current.size();j++)
		{ 
			TJ tj4=(TJ)current.elementAt(j);
			if(tj5.getTime().equals(tj4.getTime())==true)
			{
				current.removeElementAt(j);
			}
		}		
	}
//////////***************************************************////////////////////
	public void pai(int c[],double a[])
	{
		int temp;
		int k,i;
		for(k=1;k<=a.length;k++)
			for(i=0;i<=a.length-1-k;i++)
			{
				if(a[i]<a[i+1])
				{
					temp=c[i];
					c[i]=c[i+1];
					c[i+1]=temp;
				}
			}
		for(int j=0;j<c.length;j++)
			System.out.println("排序后的c数组依次为:"+c[j]);
	}
	public void result3()
	{
		int amount=0;
		for(int j=0;j<current.size();j++)
		{
			TJ tj2=(TJ)current1.elementAt(j);
			if(zhuanD(tj2.getTime())<systemTime)
			{
				amount++;
				aj++;				
			}
		}
			if(amount==0)
			{
				aj++;
				systemTime=zhuanD(duixiang(tj,a[aj]).getTime());
				result(duixiang(tj,a[aj]));
				objectMove(duixiang(tj,a[aj]));
			}
			else
			{
				double c[]=new double[amount];
				int last[]=new int[amount];
				TJ T3[]=new TJ[amount];
				for(int j=0;j<current.size();j++)
				{
					TJ tj2=(TJ)current.elementAt(j);
					if(zhuanD(tj2.getTime())<systemTime)
					{
						T3[bj]=tj2;
						last[bj]=Integer.parseInt(tj2.getRuntime());
						int bb=zhuanD(T3[bj].getTime());
						c[bj]=(systemTime-bb+Integer.parseInt(T3[bj].getRuntime())+0.0000001)/Integer.parseInt(T3[bj].getRuntime());
						System.out.println("带权依次为:"+c[bj]);
						bj++;
					}
				}
				pai(last,c);
				for(int j=0;j<last.length;j++)
				{
					System.out.println(last[j]);
					result(duixiang_b(T3,last[j]));
					objectMove(duixiang_b(T3,last[j]));
				}
			}
			bj=0;
	}
	public void result2()
	{
		int amount=0;
				for(int j=0;j<current.size();j++)
		{
					TJ tj2=(TJ)current1.elementAt(j);
					System.out.println("current中的第"+(j+1)+"个对象的运行时间是:"+tj2.getRuntime());
					if(zhuanD(tj2.getTime())<systemTime)
					{
						result(tj2);
						amount++;
						aj++;
						objectMove(tj2);
						break;
					}
		 }
				if(amount==0)
				{
					aj++;
					systemTime=zhuanD(duixiang(tj,a[aj]).getTime());
					result(duixiang(tj,a[aj]));
					objectMove(duixiang(tj,a[aj]));
				}
	      
	}//听我轻轻的告诉你吧,生活就是这个样子的,其实很多时候你感觉自己做不出来,但是只要你努力的做,就一定能够做出来
//////////***************************************************////////////////////
	public void actionPerformed(ActionEvent e)
	{
		if(e.getSource()==buttonk)
		{
		   int yichang=0;
		   if(fieldk.getText().equals("")==true)
		   {
			JOptionPane.showMessageDialog(frame1,"作业数未输入!,请输入!");
		   }
		   if(fieldk.getText().equals("")==false)
		   {
			   try{
		    K=Integer.parseInt(fieldk.getText());
		    yichang=1;
		    }catch(NumberFormatException e1)
		    {
		    	JOptionPane.showMessageDialog(frame2, "数字格式不正确,请输入整数!");
		    	yichang=0;
		    }
		    if(yichang==1)
		    {
		    tj=new TJ[K];
		    frame1.setVisible(false);
		    frame2.setVisible(true);
		   }
		    fieldk.setText("");
		 }
		}
		if(e.getSource()==button[4])
		{
			frame2.setVisible(false);
			frame1.setVisible(true);
			Remove();
			modle.setDataVector(rowData,work);
			
			m=1;
			field[3].setText("");
			field[4].setText("");
		}
		if(e.getSource()==button[0])
		{
			if(field[1].getText().equals("")==true||field[2].getText().equals("")==true)
			JOptionPane.showMessageDialog(frame2,"信息不完整,请补充!");
			if(m>K)
			{
			JOptionPane.showMessageDialog(frame2,"作业已经输入完毕,请执行操作!");
			field[1].setText("");
			field[2].setText("");			
			}
			if(m<=tj.length&&field[1].getText().equals("")==false&&field[2].getText().equals("")==false)
			{
				String shi=zhuanH(zhuanD(field[1].getText()));
            tj[m-1]=new TJ(m,field[1].getText(),field[2].getText());
            job.addElement(tj[m-1]);
            System.out.println(tj[m-1].getTime());
            Object date[]={
            		m,shi,field[2].getText()	
            };
			modle.addRow(date);
			m++;
			field[1].setText("");
			field[2].setText("");
			}
		}
		if(e.getSource()==button[1])
		{
			field[1].setText("");
			field[2].setText("");
		}
		if(e.getSource()==button[3])
		{
			if(way==1||way==2)
			{
				way=3;
			    zhuan();
			}
			if(way==1||way==3)
			{
				way=2;
			    zhuan();
			}
			if(way==2||way==3)
			{
				way=1;
				zhuan();
			}
		}
		if(e.getSource()==button[2])
	    {

		  modle.setDataVector(rowData,columnNames);
		  Remove();
		  if(way==1)
		    {			 
			    a=new int[K];
                b=new int[K];
                pai(tj,a,b);
                systemTime=zhuanD(duixiang(tj,a[0]).getTime());
	            result(duixiang(tj,a[0]));
	            objectMove(duixiang(tj,a[0]));
                for(int i=0;i<a.length;i++)
                {
                	if(a[i]==a[i+1])
                	{
                		
                	}
                	result(duixiang(tj,a[i]));
                }
               field[4].setText(result2/K+"");
               field[3].setText(result1/K+"");
		    }
		  if(way==2)
		  {
	             systemTime=zhuanD(duixiang(tj,a[0]).getTime());
	             System.out.println("当前系统时间为:"+zhuanH(systemTime));
	             result(duixiang(tj,a[0]));
                objectMove(duixiang(tj,a[0]));//将第一个到来的作业提交处理并且从current中移除
				while(current.size()>0)
				{
					result2();
				}
			  field[3].setText(result1/K+"");
			  field[4].setText(result2/K+"");
		  }
		  if(way==3)
		  {
			  pai(tj,a,b);
			  systemTime=zhuanD(duixiang(tj,a[0]).getTime());
			  result(duixiang(tj,a[0]));
			 objectMove(duixiang(tj,a[0]));
			 while(current.size()>0)
			 {
				 result3();
			 }
			  field[3].setText(result1/K+"");
			  field[4].setText(result2/K+"");
		  }
	     }
}   //谢谢 eclips
	public void zhuan()
	{
		Remove();
		modle.setDataVector(rowData,work);
		for(int i=0;i<job.capacity()&&i<tj.length;i++)
		{
			tj[i]=(TJ)job.elementAt(i);
			Object date[]={
			i+1,zhuanH(zhuanD(tj[i].getTime())),tj[i].getRuntime()	
			};
			modle.addRow(date);
		}
		result1=0;
		result2=0;
	    systemTime=0;
	    first=1;
	    aj=0;
	    field[3].setText("");
	    field[4].setText("");
	}
	public void itemStateChanged(ItemEvent e)
	{
		if(jb1.isSelected())
		{
			way=1;
			
		}
		if(jb2.isSelected())
		{
			way=2;
		}
		if(jb3.isSelected())
		{
			way=3;
		}
	}
	public static void main(String aa[])
	{
		    new Os();
	}
}

⌨️ 快捷键说明

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