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

📄 hpf.cpp

📁 进程的优先数由用户自己指定或程序任意设定
💻 CPP
字号:











#include "class.h"
void HPF::schedule()
{
	int new_cpu_user;
	search_new_arrProcess();//搜寻在当前这个时间点上新到达的进程
	
	if(cpu_cur_user>=0&&cpu_cur_user<=ProcessNum){//当前cpu中有进程
		if (Process[cpu_cur_user].remainTime==0)//但是已经完成
		{	
			finsh_handle(cpu_cur_user);			
			if(!emptyQueue()){ 
				new_cpu_user=Q.head->next->ID;
				if (new_cpu_user>=0&&new_cpu_user<ProcessNum)//取队头进程进入
				{
					Process[new_cpu_user].status=RUN;
					cout<<"进程"<<new_cpu_user<<"进入cpu"<<endl;
					cpu_cur_user=new_cpu_user;
					outQueue();
					if(Process[new_cpu_user].remainTime==Process[new_cpu_user].reqTime){
						Process[new_cpu_user].startTime=cur_time;
					}
				}
			}
		}
		else{//当前cpu有进程,但是没有完成,只是一个时间片过去
			if(!emptyQueue()){//如果队列非空并且队头的权大于cpu内的进程,队头进入cpu
				new_cpu_user=Q.head->next->ID;
				if (Process[new_cpu_user].priorityNum>Process[cpu_cur_user].priorityNum&&new_cpu_user>=0&&new_cpu_user<ProcessNum){//Process[new_cpu_user].status==READY&&
					Process[cpu_cur_user].status=READY;//剔出旧的
					cout<<"进程"<<cpu_cur_user<<"被别人踢出cpu"<<endl;
					enterQueue(cpu_cur_user);//踢出后重新回到队列中去

					Process[new_cpu_user].status=RUN;//进入新的
					cout<<"进程"<<new_cpu_user<<"进入cpu"<<endl;
					cpu_cur_user=new_cpu_user;
					outQueue();
					if(Process[new_cpu_user].remainTime==Process[new_cpu_user].reqTime){
						Process[new_cpu_user].startTime=cur_time;
					}

				}
			}
			else{//否则继续然让cpu中的进程占有下一个时间片

			}
		}
	}
	else{//当前cpu中没有进程,直接看队列是否非空,
		if(!emptyQueue()){
			new_cpu_user=Q.head->next->ID;
			Process[new_cpu_user].status=RUN;//进入新的
			cout<<"进程"<<new_cpu_user<<"进入cpu"<<endl;
			cpu_cur_user=new_cpu_user;
			outQueue();
			if(Process[new_cpu_user].remainTime==Process[new_cpu_user].reqTime){
				Process[new_cpu_user].startTime=cur_time;

			}
		}
	}
	cur_time=cur_time+1;
	if (cpu_cur_user>=0&&cpu_cur_user<ProcessNum)
	{
		Process[cpu_cur_user].remainTime=Process[cpu_cur_user].remainTime-1;
	}	
}

⌨️ 快捷键说明

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