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

📄 优先权.txt

📁 CPU调度源码分类介绍。我做课程设计是用到的。拿出分享。
💻 TXT
字号:
void CCPUSchedule1Dlg::OnBtnPriority() 
{
	// TODO: Add your control notification handler code here
	int p=I,m,n,q=2,c=1,IWaitTime=0,IRoundTime=0;
	float AverageWaitTime,AverageRoundTime;
	int WaitTime[50],RoundTime[50];   //假设最多有50个进程
	CString str_AverageWaitTime,str_AverageRoundTime;
	CProcess turn;  

	//当没有任何进程而单击该按钮时报错

	   if(I<1)
		MessageBox("没有输入任何进程!");
        else
		{
	    //按照优先级冒泡法排序
          for(m=0;m<p;m++)
		     for(n=0;n<p-m;n++)
			 {
			    if(process[n].GetPriority()>process[n+1].GetPriority())
				{
				   turn=process[n];
				   process[n]=process[n+1];
				   process[n+1]=turn;
				}
			    else
				{
					if(process[n].GetPriority()==process[n+1].GetPriority())
					{
						if(process[n].GetArriveOrder()>process[n+1].GetArriveOrder())
						{
							turn=process[n];
				            process[n]=process[n+1];
				            process[n+1]=turn; 
						}//if
						else{}
					}//if
					else{}
				}//else
			 }//for
		
			 
			 //计算等待时间  按照非强占式优先级调度
			 //计算等待时间
	     WaitTime[1]=0;
		 while(q<=p)
		 {
			 WaitTime[q]=WaitTime[q-1]+process[q-1].GetServiceTime();
			 //第q个进程的等待时间=第q-1个进程的等待时间+第q-1个进程的服务时间
			 q++;
		 }
		 for(q=1;q<=p;q++)
			 IWaitTime=IWaitTime+WaitTime[q];
		 AverageWaitTime=(float)IWaitTime/p;
		 //计算周转时间
		/* RoundTime[1]=process[1].GetServiceTime();
		 while(c<=p)
		 {
			 RoundTime[c]=WaitTime[c]+process[c].GetServiceTime();
			 c++;
		 }
		 for(c=1;c<=p;c++)
			 IRoundTime+=RoundTime[c];
		 AverageRoundTime=(float)IRoundTime/p;*/
		 for(c=1;c<=p;c++)
		{
			RoundTime[c]=WaitTime[c]+process[c].GetServiceTime();
			IRoundTime+=RoundTime[c];
		}
		AverageRoundTime=(float)IRoundTime/p;


		 
		 //输出
		 str_AverageWaitTime.Format("优先权调度平均等待时间是:%f",AverageWaitTime);
	     m_cresultshow.AddString(str_AverageWaitTime);
	   	 str_AverageRoundTime.Format("          平均周转时间为:%f",AverageRoundTime);
	     m_cresultshow.AddString(str_AverageRoundTime);
		 
		 StringCount++;
		
		if(I<0)
		{}//无进程时不输出
		else
		{
			m_request.AddString("优先权调度算法主要用于批处理系统中,\n");
			m_request.AddString("也可用于某些对实时要求不严的实时系统中.\n");
		}//else
		StaAverageWaitTime[1]=AverageWaitTime;
		StaAverageRoundTime[1]=AverageRoundTime;
	}//else
}

⌨️ 快捷键说明

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