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

📄 mfq.cpp

📁 操作系统中实现进程调度中的多级反馈队列调度算法
💻 CPP
字号:


#include "class.h"
void MFQ::schedule()
{
    search_new_arrProcess();//搜寻在当前这个时间点上有没有新到达的进程
	cpu_user p;
	search_first_process(p);//寻找所有就绪进程中优先权最高且在队首的进程
	if(cpu_cur_user.ID>=0&&cpu_cur_user.ID<ProcessNum)//如果前一个单位时间1里cpu有进程
	{
		if (Process[cpu_cur_user.ID].remainTime<=0)//如果该进程刚好完成
		{
			finsh_handle(cpu_cur_user);//对该进程进行完成处理-撤离系统
			if (p.ID>=0&&p.ID<ProcessNum)
			{
				cpu_cur_user=p;//cpu外有第一优先权的进程p成为了新的cpu使用者
				come_into_cpu(cpu_cur_user);//p进入cpu
				cpu_cur_user.picRemain--;
				Process[cpu_cur_user.ID].remainTime--;
			}							
		}
		else{//如果该进程没有完成
			if (cpu_cur_user.picRemain==0)//但是给予它的时间片刚好用完
			{
				kit_out_cpu(cpu_cur_user);//它被踢出cpu
				if (p.ID>=0&&p.ID<ProcessNum)
				{
					cpu_cur_user=p;//cpu外有第一优先权的进程p成为了新的cpu使用者
					come_into_cpu(cpu_cur_user);//p进入cpu
					cpu_cur_user.picRemain--;
					Process[cpu_cur_user.ID].remainTime--;
				}		
			}
			else{//如果给予它的时间片还没有用完
				if (p.exQueue<cpu_cur_user.exQueue)//判断p和cpu_cur_user的优先权大小
				{//如果p的优先权大于cpu_cur_user
					kit_out_cpu(cpu_cur_user);//cpu_cur_user被踢出cpu
					cpu_cur_user=p;//cpu外有第一优先权的进程p成为了新的cpu使用者
					come_into_cpu(cpu_cur_user);//p进入cpu
					cpu_cur_user.picRemain--;
					Process[cpu_cur_user.ID].remainTime--;
				}
				else{//如果cpu 外部的进程优先权都低于cpu_cur_user,继续让它占有cpu
                      cpu_cur_user.picRemain--;
				      Process[cpu_cur_user.ID].remainTime--;
				}
			}

		}
	}

	
}

⌨️ 快捷键说明

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