操作系统处理器调度算法c++模拟

本文介绍了如何使用C++实现操作系统中的调度算法,包括先到先服务、最短作业优先、最高响应比和循环轮转算法,适合初学者进行学习和实践。
摘要由CSDN通过智能技术生成

本文实现了操作系统的调度算法的模拟,使用c++语言实现,主要有先到先服务算法,最短作业优先,最高相应比,循环轮转算法。对于刚学操作系统的同学十分有帮助。

#include<iostream>

#include<string>
#include<vector>
#include<list>
#include<ctime>
#include<cstdlib>
#include<algorithm>
#include<utility>
#include<functional>
using namespace std;


const int constCpuChip = 1;//时间片
int dynamicCpuChip = 1;//动态CPU事件片


//class process;


//寄存器信息
class registerInfo{
public:
int psw;//程序状态字
int pc;//程序计数器
//others
public:
registerInfo(){}//default
registerInfo(int psw, int pc){//constructor
this->psw = psw;
this->pc = pc;
}
void set(int psw, int pc){//set info
this->psw = psw;
this->pc = pc;
}
void switchRegister(registerInfo&p){
cout << "register is being switched..." << endl;
cout << "current CPU register info is:" << endl;
cout << *this;
this->psw = p.psw;
this->pc = p.pc;
cout << "register finished switch." << endl;
cout << "current CPU register info is:" << endl;
cout << *this;
}
friend ostream& operator<<(ostream&cout, registerInfo&r){
cout << "psw:" << r.psw << endl;
cout << "pc: " << r.pc << endl;
return cout;
}
};
registerInfo cpuRegister(0,0);//设置一个cpu寄存器用来交换


class userProgram{
public:
string userCode;//用户代码
string userData;//用户数据
public:
userProgram(string userCode="userCode",string userData="userData"){
this->userCode = userCode;
this->userData = userData;
}
friend ostream& operator<<(ostream&cout, userProgram&u){
cout << "userCode:" << u.userCode << endl;
cout << "userData:" << u.userData << endl;
return cout;
}
void set(string userCode, string userData){
this->userCode = userCode;
this->userData = userData;
}
};


class process{
public:
class PCB{
public:
int processID;//进程ID
int priority;//优先级
string processStatus;//进程状态
registerInfo processRegister;//寄存器级上下文
userProgram processProgram;//用户级上下文
}processPCB;
public:
int arriveTime;//进程到达时间
int burstTime;//进程阵发时间
int turnaroundTime;//一个进程的周转时间
int remainigTime;//剩余时间
public:
process(string s){}
process(int processID=0,int priority=0,string processStatus="ready",int psw=0,int pc=0,string userCode="userCode",string userData="userData",int arriveTime=0,int burstTime=0){

processPCB.processID = processID;
processPCB.priority = priority;
processPCB.processStatus = processStatus;
processPCB.processRegister.set(psw, pc);
processPCB.processProgram.set(userCode, userData);
this->arriveTime = arriveTime;
this->burstTime = burstTime;
this->remainigTime = burstTime;//创建进程的时候剩余时间就是阵发时间
this->turnaroundTime = 0;
cout << "=======================================================================================================================" << endl;
cout << "create a process..." << endl;
cout << "process is created." << endl;
cout << "process info is:" << endl;
cout << *this;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值