1、进程代码1#include#include#include#include#include const int MAXCOMMANDLEN =50; /PROCESS /class Process /进程类friend class CPU;protected:static int init_ID;/随机进程ID int ID;/进程IDchar runTextMAXCOMMANDLEN;/进程指令数组int IP;/进程指令指针,保存进程指令执行到的具体位置bool ISuseSource;/此进程是否使用资源,ture:使用中 false : 未使用bool ISblocked;/此进程是否
2、被阻塞 ture:阻塞 false :未阻塞int unitTime;/进程单位被cpu执行时间, 默认 1int blockTime;/进程被阻塞时间public:static void RandID();/随机生成进程IDProcess();int getID();int getIP();void setIP(int);void Runed();/进程被cpu执行int getUnittime();/得到进程单位执行时间int getBlcoktime();/得到进程阻塞时间void setBlocktime(int);/设置进程阻塞时间void setUnittime(int);/设置进
3、程单位执行时间char getResult(int);/得到进程执行结果char* getRuntext();/得到进程执行的指令void setBlockstate(bool);/设置阻塞状态bool getBlockstate(); bool getISusesource();/得到资源的状态 使用 未使用void setISusesource(bool);/设置资源的使用状态;int Process:init_ID;void Process:RandID()srand( (unsigned)time( NULL ) );init_ID=rand();Process:Process()ID
4、=init_ID+;int commandLen;IP=0;cout ;cinrunText;if( (commandLen=strlen(runText) ) MAXCOMMANDLEN )exit(0);runTextcommandLen=#;/ 指令结束标志 # runTextcommandLen+1=0;ISuseSource=false;ISblocked=false;unitTime=1;blockTime=0;void Process:Runed()cout0)cout( Source :ID);time-;if(timesetISusesource(false);int ip=
5、pro-getIP();pro-setIP(+ip);Source:setState(true);coutendlThe process getID() relase the source!endl;pro=NULL;/CPU /typedef struct Block/阻塞队列结构Process *p_BlockProcess;/被阻塞的进程队列int index;/被阻塞的进程在就绪队列中的索引(位置)Block;class CPUprotected:Process *p_Process;/进程队列Process *pp_Process;/进程就绪队列Block*blockQueue;/进
6、程阻塞队列Source *p_Source;/资源指针int numOfprocess;/进程数量int numOfblock;/被阻塞的进程数int PC;/程序计数器int allTime;/cpu运行的总时间public :CPU(int);void Run();/cpu运行进程bool _IC(Process&);/虚拟IC,进行进程指令翻译void useSource(Process&);/进程申请资源void blockProcess(Process&); /阻塞进程void releaseBlockPro();/释放阻塞进程int getAlltime();/得到进程运行的总时间void displayPro();/显示进程的基本信息,id,指令,运行时间等void blockTimeADD();/阻塞时间加1;CPU:CPU(int num)p_Source=new Source(3
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1