精品文档
} }
return true; }
void CPU::blockTimeADD() //阻塞进程时间增加函数 {
for(int i=0;i
} //将进程时间增加并放入队列中 }
void CPU::useSource(Process& p) //资源设置函数 {
p.setISusesource(true); //设置系统资源已被占用 p_Source->setState(false); //资源可用状态为false
p_Source->setProID(p.getID());//设置资源被占用的进程ID p_Source->setTime(p.getResult(PC)-'0');//设置资源占用时间 p_Source->setPro(&p); }
void CPU::blockProcess(Process& p) {
//将进程放入阻塞队列中
int tempIndex=numOfprocess-( Process::init_ID-p.getID() ); blockQueue[numOfblock].p_BlockProcess=&p; blockQueue[numOfblock].index=tempIndex; numOfblock++;
//设置进程为阻塞状态 int ip=p.getIP(); p.setIP(--ip);
p.setBlockstate(true); p.setBlocktime(1); p.setUnittime(0);
pp_Process[tempIndex]=NULL; }
void CPU::releaseBlockPro() {
//释放阻塞队列中的第一个进程
pp_Process[blockQueue[0].index]=blockQueue[0].p_BlockProcess; blockQueue[0].index=-1;
blockQueue[0].p_BlockProcess->setBlockstate(false); blockQueue[0].p_BlockProcess->setUnittime( blockQueue[0].p_BlockProcess->getBlcoktime() );
文档下载后可复制编辑
精品文档
blockQueue[0].p_BlockProcess->setBlockstate(0); blockQueue[0].p_BlockProcess=NULL; numOfblock--;
//将后续的阻塞进程提前一个位置 for(int i=0;i ///////////////////////////////////////////////////////////////////////////////////// // // The main progress // ///////////////////////////////////////////////////////////////////////////////////// void main() { int num; cout<<\l< cout<<\ The virtual CPU the process runned \ cout<<\< cout<<\ cout<<\ //输入指令 try { cin>>num; if(num<=0) throw(num); } catch(int) { cout<<\ exit(1); } //随机一个进程ID,并加1 Process::RandID(); //随机获取进程ID号 CPU virtualCPU(num); //初始化进程数 cout<<\ virtualCPU.Run(); //虚拟CPU运行 文档下载后可复制编辑 精品文档 cout<<\ cout<<\l< cout<<\\ virtualCPU.displayPro();//显示进程信息 cout<<\< 六、 实验调试结果 文档下载后可复制编辑 精品文档 文档下载后可复制编辑