操作系统进程调度之多级反馈队列算法模拟实现

本文详细介绍了如何实现操作系统中的多级反馈队列调度算法(MFQ)。内容包括进程类的设计,进程队列的实现,以及整个MFQ算法的详细步骤,通过模拟展示了该算法的工作原理。
摘要由CSDN通过智能技术生成

进j

 

以上为结果截图

 

进程类头文件

/
//进程类的头文件

// LProcess.h
#include <string.h>
#include <iostream>
using namespace std;


//进程类
class LProcess
{
private:
	int process_ID;            //进程号
	string process_Name;       //进程描述
	int	exeu_time;             //进程要求的执行时间
	int priority;              //进程优先级
	int completed_time;        //进程已经获得的时间片
	int TimeForCurrentQueue;   //已获得当前队列的时间片
public:
	//构造函数
	LProcess();
	LProcess(int id);
	LProcess(int id, int time, string name);
	// 获得进程ID(进程号)
	int getId();
	// 设置进程ID(进程号)
	void setId(int id);
	// 设置进程描述
	void setProName(string name);
	// 读取进程描述
	string getProName();
	// 设置进程执行时间
	void setExeuTime(int time);
	// 获得进程执行时间
	int getExeuTime();
	// 设置进程优先级
	void setPriority(int pri);
	// 获得进程优先级
	int getPriority();
	// 设置进程已完成的时间片
	void setCompleTime(int time);
	// 设置进程已完成的时间片
	int getCompleTime();
	//已获得当前队列的时间片
	int getTFCQ();
	// 设置已经获得当前队列的时间片
	void setTFCQ(int time);
};


 

//进程类的实现

//LProcess.cpp
#include "LProcess.h"


LProcess::LProcess()
{
	process_ID = 0;
	process_Name = "Undefined";
	exeu_time = 1;
	priority = 0;
	completed_time = 0;
	TimeForCurrentQueue = 0;
}
//构造函数
LProcess::LProcess(int id)
{
	process_ID = id;
	process_Name = "Undefined";
	exeu_time = 1;
	priority = 0;
	completed_time = 0;
	TimeForCurrentQueue = 0;
}
//构造函数
LProcess::LProcess(int id, int time, string name)
{
	process_ID = id;
	process_Name.assign(name);
	exeu_time = time;
	priority = 0;
	completed_time = 0;
	TimeForCurrentQueue = 0;
}

//  获得进程号
int LProcess::getId()
{
	return process_ID;
}
// 设置进程ID(进程号)
void LProcess::setId(int id)
{
	process_ID = id;
}
// 设置进程描述
void LProcess::setProName(string name)
{
	process_Name.assign(name);
}

// 读取进程描述
string LProcess::getProName()
{
	return process_Name;
}

// 设置进程执行时间
void LProcess::setExeuTime(int time)
{
	exeu_time = time;
}
// 获得进程执行时间
int LProcess::getExeuTime()
{
	return exeu_time;
}

// 设置进程优先级
void LProcess::setPriority(int pri)
{
	priority = pri;
}
// 获得进程优先级
int LProcess::getPriority()
{
	return priority;
}

// 设置进程已完成的时间片
void LProcess::setCompleTime(int time)
{
	completed_time += time;
}
// 设置进程已完成的时间片
int LProcess::getCompleTime()
{
	return completed_time;
}

//已获得当前队列的时间片
int LProcess::getTFCQ()
{
	return TimeForCurrentQueue;
}
// 设置已经获得当前队列的时间片
void LProcess::setTFCQ(int time)
{
	TimeForCurrentQueue += time;
}





进程的测试函数
//进程的测试函数
//LProcess *lp1 = new LProcess(1);
//LProcess *lp2 = new LProcess(2);
//LProcess *lp3 = new LPro
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值