html5中文学习网

您的位置: 首页 > 网站及特效实例 > jquery特效 » 正文

进程调度模拟程序_编程语言综合

[ ] 已经帮助:人解决问题

 我们课程设计,我选择了一个进程调度模拟,希望大家给看看,多提意见,好久没来发帖子了。BdaHTML5中文学习网 - HTML5先行者学习网

  #include<iostream.h>BdaHTML5中文学习网 - HTML5先行者学习网

  #include<stdlib.h>BdaHTML5中文学习网 - HTML5先行者学习网

  #include<time.h>BdaHTML5中文学习网 - HTML5先行者学习网

  #include<stdio.h>BdaHTML5中文学习网 - HTML5先行者学习网

  #include<string.h> const int MAXCOMMANDLEN =50; /////////////////////////////////////////////////////////////////////////////////////BdaHTML5中文学习网 - HTML5先行者学习网

  //BdaHTML5中文学习网 - HTML5先行者学习网

  // PROCESSBdaHTML5中文学习网 - HTML5先行者学习网

  //BdaHTML5中文学习网 - HTML5先行者学习网

  /////////////////////////////////////////////////////////////////////////////////////BdaHTML5中文学习网 - HTML5先行者学习网

  class Process //进程类BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  friend class CPU;BdaHTML5中文学习网 - HTML5先行者学习网

  protected:BdaHTML5中文学习网 - HTML5先行者学习网

  static int init_ID; //随机进程IDBdaHTML5中文学习网 - HTML5先行者学习网

  int ID; //进程IDBdaHTML5中文学习网 - HTML5先行者学习网

  char runText[MAXCOMMANDLEN]; //进程指令数组BdaHTML5中文学习网 - HTML5先行者学习网

  int IP; //进程指令指针,保存进程指令执行到的具体位置BdaHTML5中文学习网 - HTML5先行者学习网

  bool ISuseSource; //此进程是否使用资源,ture:使用中 false : 未使用BdaHTML5中文学习网 - HTML5先行者学习网

  bool ISblocked; //此进程是否被阻塞 ture:阻塞 false :未阻塞BdaHTML5中文学习网 - HTML5先行者学习网

  int unitTime; //进程单位被cpu执行时间, 默认 1BdaHTML5中文学习网 - HTML5先行者学习网

  int blockTime; //进程被阻塞时间BdaHTML5中文学习网 - HTML5先行者学习网

  public:BdaHTML5中文学习网 - HTML5先行者学习网

  static void RandID(); //随机生成进程IDBdaHTML5中文学习网 - HTML5先行者学习网

  Process();BdaHTML5中文学习网 - HTML5先行者学习网

  int getID();BdaHTML5中文学习网 - HTML5先行者学习网

  int getIP();BdaHTML5中文学习网 - HTML5先行者学习网

  void setIP(int);BdaHTML5中文学习网 - HTML5先行者学习网

  void Runed(); //进程被cpu执行BdaHTML5中文学习网 - HTML5先行者学习网

  int getUnittime(); //得到进程单位执行时间BdaHTML5中文学习网 - HTML5先行者学习网

  int getBlcoktime(); //得到进程阻塞时间BdaHTML5中文学习网 - HTML5先行者学习网

  void setBlocktime(int); //设置进程阻塞时间BdaHTML5中文学习网 - HTML5先行者学习网

  void setUnittime(int); //设置进程单位执行时间BdaHTML5中文学习网 - HTML5先行者学习网

  char getResult(int); //得到进程执行结果BdaHTML5中文学习网 - HTML5先行者学习网

  char* getRuntext(); //得到进程执行的指令BdaHTML5中文学习网 - HTML5先行者学习网

  void setBlockstate(bool); //设置阻塞状态BdaHTML5中文学习网 - HTML5先行者学习网

  bool getBlockstate();BdaHTML5中文学习网 - HTML5先行者学习网

  bool getISusesource(); //得到资源的状态 使用 未使用BdaHTML5中文学习网 - HTML5先行者学习网

  void setISusesource(bool); //设置资源的使用状态BdaHTML5中文学习网 - HTML5先行者学习网

  }; int Process::init_ID; void Process::RandID()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  srand( (unsigned)time( NULL ) );BdaHTML5中文学习网 - HTML5先行者学习网

  init_ID=rand();BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  Process::Process()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  ID=init_ID++;BdaHTML5中文学习网 - HTML5先行者学习网

  int commandLen;BdaHTML5中文学习网 - HTML5先行者学习网

  IP=0; cout<<"Please in put the text which process runed by CPU [#command#] :> ";BdaHTML5中文学习网 - HTML5先行者学习网

  cin>>runText;BdaHTML5中文学习网 - HTML5先行者学习网

  if( (commandLen=strlen(runText) ) > MAXCOMMANDLEN )BdaHTML5中文学习网 - HTML5先行者学习网

  exit(0);BdaHTML5中文学习网 - HTML5先行者学习网

  runText[commandLen]='#'; // 指令结束标志 '#'BdaHTML5中文学习网 - HTML5先行者学习网

  runText[commandLen+1]='';BdaHTML5中文学习网 - HTML5先行者学习网

  ISuseSource=false;BdaHTML5中文学习网 - HTML5先行者学习网

  ISblocked=false;BdaHTML5中文学习网 - HTML5先行者学习网

  unitTime=1;BdaHTML5中文学习网 - HTML5先行者学习网

  blockTime=0;BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  void Process::Runed()BdaHTML5中文学习网 - HTML5先行者学习网

  int Process::getID()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  return ID;BdaHTML5中文学习网 - HTML5先行者学习网

  } int Process::getIP()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  return IP;BdaHTML5中文学习网 - HTML5先行者学习网

  } void Process::setIP(int ip)BdaHTML5中文学习网 - HTML5先行者学习网

  bool Process::getISusesource()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  return ISuseSource;BdaHTML5中文学习网 - HTML5先行者学习网

  } void Process::setISusesource(bool s)BdaHTML5中文学习网 - HTML5先行者学习网

  char* Process::getRuntext()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  return runText;BdaHTML5中文学习网 - HTML5先行者学习网

  } int Process::getUnittime()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  return unitTime;BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  int Process::getBlcoktime()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  return blockTime;BdaHTML5中文学习网 - HTML5先行者学习网

  } void Process::setBlocktime(int BT)BdaHTML5中文学习网 - HTML5先行者学习网

  void Process::setUnittime(int UT)BdaHTML5中文学习网 - HTML5先行者学习网

  void Process::setBlockstate(bool state)BdaHTML5中文学习网 - HTML5先行者学习网

  bool Process::getBlockstate()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  return ISblocked;BdaHTML5中文学习网 - HTML5先行者学习网

  } char Process::getResult(int k)BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  return runText[k];BdaHTML5中文学习网 - HTML5先行者学习网

  } /////////////////////////////////////////////////////////////////////////////////////BdaHTML5中文学习网 - HTML5先行者学习网

  //BdaHTML5中文学习网 - HTML5先行者学习网

  // SOURCEBdaHTML5中文学习网 - HTML5先行者学习网

  //BdaHTML5中文学习网 - HTML5先行者学习网

  ///////////////////////////////////////////////////////////////////////////////////// class Source //资源类BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  protected:BdaHTML5中文学习网 - HTML5先行者学习网

  int ID; //资源 IDBdaHTML5中文学习网 - HTML5先行者学习网

  bool state; //资源状态 true : 未被进程占有 false : 已被占有BdaHTML5中文学习网 - HTML5先行者学习网

  int pro_ID; //使用资源的进程idBdaHTML5中文学习网 - HTML5先行者学习网

  Process *pro; //使用资源的进程指针BdaHTML5中文学习网 - HTML5先行者学习网

  int time; //进程使用资源的时间BdaHTML5中文学习网 - HTML5先行者学习网

  public:BdaHTML5中文学习网 - HTML5先行者学习网

  Source(int);BdaHTML5中文学习网 - HTML5先行者学习网

  bool getState(); //得到进程状态BdaHTML5中文学习网 - HTML5先行者学习网

  void setState(bool); //设置进程状态BdaHTML5中文学习网 - HTML5先行者学习网

  void setTime(int); //设置进程使用资源的时间BdaHTML5中文学习网 - HTML5先行者学习网

  void setPro(Process *); //设置使用该资源的进程BdaHTML5中文学习网 - HTML5先行者学习网

  int getID(); //得到资源idBdaHTML5中文学习网 - HTML5先行者学习网

  int getPorID(); //得到使用资源的进程idBdaHTML5中文学习网 - HTML5先行者学习网

  void setProID(int); //设置使用资源的进程idBdaHTML5中文学习网 - HTML5先行者学习网

  void runned(); //资源被cpu调用BdaHTML5中文学习网 - HTML5先行者学习网

  }; Source::Source(int id)BdaHTML5中文学习网 - HTML5先行者学习网

  void Source::setProID(int id)BdaHTML5中文学习网 - HTML5先行者学习网

  void Source::setTime(int t)BdaHTML5中文学习网 - HTML5先行者学习网

  void Source::setState(bool s)BdaHTML5中文学习网 - HTML5先行者学习网

  bool Source::getState()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  return state;BdaHTML5中文学习网 - HTML5先行者学习网

  } void Source::setPro(Process *p)BdaHTML5中文学习网 - HTML5先行者学习网

  void Source::runned()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  if(time>0)BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<"( Source :"<<ID<<")";BdaHTML5中文学习网 - HTML5先行者学习网

  time--;BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  if(time<=0) //进程使用完资源释放资源,使用资源的时间到BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  pro->setISusesource(false);BdaHTML5中文学习网 - HTML5先行者学习网

  int ip=pro->getIP();BdaHTML5中文学习网 - HTML5先行者学习网

  pro->setIP(++ip);BdaHTML5中文学习网 - HTML5先行者学习网

  Source::setState(true);BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<endl<<"The process "<<pro->getID()<<" relase the source!"<<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  pro=NULL;BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  } /////////////////////////////////////////////////////////////////////////////////////BdaHTML5中文学习网 - HTML5先行者学习网

  //BdaHTML5中文学习网 - HTML5先行者学习网

  // CPUBdaHTML5中文学习网 - HTML5先行者学习网

  //BdaHTML5中文学习网 - HTML5先行者学习网

  ///////////////////////////////////////////////////////////////////////////////////// typedef strUCt Block //阻塞队列结构BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  Process *p_BlockProcess; //被阻塞的进程队列BdaHTML5中文学习网 - HTML5先行者学习网

  int index; //被阻塞的进程在就绪队列中的索引(位置)BdaHTML5中文学习网 - HTML5先行者学习网

  }Block; class CPUBdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  protected:BdaHTML5中文学习网 - HTML5先行者学习网

  Process *p_Process; //进程队列BdaHTML5中文学习网 - HTML5先行者学习网

  Process **pp_Process; //进程就绪队列BdaHTML5中文学习网 - HTML5先行者学习网

  Block *blockQueue ; //进程阻塞队列BdaHTML5中文学习网 - HTML5先行者学习网

  Source *p_Source; //资源指针BdaHTML5中文学习网 - HTML5先行者学习网

  int numOfprocess; //进程数量BdaHTML5中文学习网 - HTML5先行者学习网

  int numOfblock; //被阻塞的进程数BdaHTML5中文学习网 - HTML5先行者学习网

  int PC; //程序计数器BdaHTML5中文学习网 - HTML5先行者学习网

  int allTime; //cpu运行的总时间BdaHTML5中文学习网 - HTML5先行者学习网

  public :BdaHTML5中文学习网 - HTML5先行者学习网

  CPU(int);BdaHTML5中文学习网 - HTML5先行者学习网

  void Run(); //cpu运行进程BdaHTML5中文学习网 - HTML5先行者学习网

  bool _IC(Process&); //虚拟IC,进行进程指令翻译BdaHTML5中文学习网 - HTML5先行者学习网

  void useSource(Process&); //进程申请资源BdaHTML5中文学习网 - HTML5先行者学习网

  void blockProcess(Process&); //阻塞进程BdaHTML5中文学习网 - HTML5先行者学习网

  void releaseBlockPro(); //释放阻塞进程BdaHTML5中文学习网 - HTML5先行者学习网

  int getAlltime(); //得到进程运行的总时间BdaHTML5中文学习网 - HTML5先行者学习网

  void displayPro(); //显示进程的基本信息,id,指令,运行时间等BdaHTML5中文学习网 - HTML5先行者学习网

  void blockTimeADD(); //阻塞时间加1BdaHTML5中文学习网 - HTML5先行者学习网

  }; CPU::CPU(int num)BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  p_Source=new Source(379857);BdaHTML5中文学习网 - HTML5先行者学习网

  numOfprocess=num;BdaHTML5中文学习网 - HTML5先行者学习网

  numOfblock=0;BdaHTML5中文学习网 - HTML5先行者学习网

  allTime=0;BdaHTML5中文学习网 - HTML5先行者学习网

  p_Process=new Process[numOfprocess];BdaHTML5中文学习网 - HTML5先行者学习网

  pp_Process=new Process*[numOfprocess];BdaHTML5中文学习网 - HTML5先行者学习网

  blockQueue=new Block[numOfprocess];BdaHTML5中文学习网 - HTML5先行者学习网

  for(int i=0;i<numOfprocess;i++)BdaHTML5中文学习网 - HTML5先行者学习网

  } int CPU::getAlltime()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  return allTime;BdaHTML5中文学习网 - HTML5先行者学习网

  } void CPU::displayPro()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  for(int i=0;i<numOfprocess;i++)BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<" Process ID : "<<p_Process[i].getID()<<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<" text of runned :"<<p_Process[i].getRuntext()<<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  } void CPU::Run()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  int numPro=numOfprocess; doBdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  for(int num=0;num < numOfprocess;num++)BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  if(!pp_Process[num]) //假如该指针为空,说明该进程不在就绪队列中BdaHTML5中文学习网 - HTML5先行者学习网

  continue; for(int t=0;t<p_Process[num].getUnittime();t++)BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  PC=p_Process[num].getIP();BdaHTML5中文学习网 - HTML5先行者学习网

  if(_IC(p_Process[num]))BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  if(t==0)BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<"the process ["<<p_Process[num].getID()<<"] runed : ";BdaHTML5中文学习网 - HTML5先行者学习网

  if(!p_Process[num].getISusesource())BdaHTML5中文学习网 - HTML5先行者学习网

  elseBdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  p_Source->runned();BdaHTML5中文学习网 - HTML5先行者学习网

  if( p_Source->getState() && numOfblock>0 ) //释放阻塞进程BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  elseBdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  if(!p_Process[num].getBlockstate())BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  numPro--;BdaHTML5中文学习网 - HTML5先行者学习网

  pp_Process[num]=NULL;BdaHTML5中文学习网 - HTML5先行者学习网

  continue;BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  break;BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  allTime++;BdaHTML5中文学习网 - HTML5先行者学习网

  if(numOfblock>0)BdaHTML5中文学习网 - HTML5先行者学习网

  blockTimeADD();BdaHTML5中文学习网 - HTML5先行者学习网

  }//end for t...BdaHTML5中文学习网 - HTML5先行者学习网

  if( p_Process[num].getUnittime() )BdaHTML5中文学习网 - HTML5先行者学习网

  p_Process[num].setUnittime(1);BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  }//end for num... }while(numPro);BdaHTML5中文学习网 - HTML5先行者学习网

  } bool CPU::_IC(Process &p)BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  //对进程中的指令进行翻译BdaHTML5中文学习网 - HTML5先行者学习网

  char resultRunned;BdaHTML5中文学习网 - HTML5先行者学习网

  resultRunned=p.getResult(PC);BdaHTML5中文学习网 - HTML5先行者学习网

  if(resultRunned=='#')BdaHTML5中文学习网 - HTML5先行者学习网

  return false;BdaHTML5中文学习网 - HTML5先行者学习网

  elseBdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  if(resultRunned==' ) //申请资源指令BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  PC++;BdaHTML5中文学习网 - HTML5先行者学习网

  p.setIP(PC);BdaHTML5中文学习网 - HTML5先行者学习网

  resultRunned=p.getResult(PC);BdaHTML5中文学习网 - HTML5先行者学习网

  if( resultRunned >='1' && resultRunned <='9' )BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  if(p_Source->getState())BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  //资源未被使用则使用资源BdaHTML5中文学习网 - HTML5先行者学习网

  useSource(p);BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<"The process "<<p.getID()<<" take up the source!"<<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  elseBdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  //资源已被使用则阻塞进程BdaHTML5中文学习网 - HTML5先行者学习网

  blockProcess(p);BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<"The process "<<p.getID()<<" is blocked !"<<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  return false; }BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  elseBdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  //' 后跟的不是数字,则语法错误BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<"The process ["<<p.getID()<<"] runned fail ! It has been stopped! "<<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  return false;BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  } }BdaHTML5中文学习网 - HTML5先行者学习网

  return true;BdaHTML5中文学习网 - HTML5先行者学习网

  } void CPU::blockTimeADD()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  for(int i=0;i<numOfblock;i++)BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  int BT=blockQueue[i].p_BlockProcess->getBlcoktime();BdaHTML5中文学习网 - HTML5先行者学习网

  blockQueue[i].p_BlockProcess->setBlocktime(++BT);BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  } void CPU::useSource(Process& p)BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  p.setISusesource(true);BdaHTML5中文学习网 - HTML5先行者学习网

  p_Source->setState(false);BdaHTML5中文学习网 - HTML5先行者学习网

  p_Source->setProID(p.getID());BdaHTML5中文学习网 - HTML5先行者学习网

  p_Source->setTime(p.getResult(PC)-'0');BdaHTML5中文学习网 - HTML5先行者学习网

  p_Source->setPro(&p); } void CPU::blockProcess(Process& p)BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  int tempIndex=numOfprocess-( Process::init_ID-p.getID() );BdaHTML5中文学习网 - HTML5先行者学习网

  blockQueue[numOfblock].p_BlockProcess=&p;BdaHTML5中文学习网 - HTML5先行者学习网

  blockQueue[numOfblock].index=tempIndex;BdaHTML5中文学习网 - HTML5先行者学习网

  numOfblock++;BdaHTML5中文学习网 - HTML5先行者学习网

  int ip=p.getIP();BdaHTML5中文学习网 - HTML5先行者学习网

  p.setIP(--ip);BdaHTML5中文学习网 - HTML5先行者学习网

  p.setBlockstate(true);BdaHTML5中文学习网 - HTML5先行者学习网

  p.setBlocktime(1);BdaHTML5中文学习网 - HTML5先行者学习网

  p.setUnittime(0);BdaHTML5中文学习网 - HTML5先行者学习网

  pp_Process[tempIndex]=NULL; } void CPU::releaseBlockPro()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  //释放阻塞队列的第一个进程,因为它阻塞时间最长BdaHTML5中文学习网 - HTML5先行者学习网

  pp_Process[blockQueue[0].index]=blockQueue[0].p_BlockProcess;BdaHTML5中文学习网 - HTML5先行者学习网

  blockQueue[0].index=-1;BdaHTML5中文学习网 - HTML5先行者学习网

  blockQueue[0].p_BlockProcess->setBlockstate(false);BdaHTML5中文学习网 - HTML5先行者学习网

  blockQueue[0].p_BlockProcess->setUnittime( blockQueue[0].p_BlockProcess->getBlcoktime() );BdaHTML5中文学习网 - HTML5先行者学习网

  blockQueue[0].p_BlockProcess->setBlockstate(0);BdaHTML5中文学习网 - HTML5先行者学习网

  blockQueue[0].p_BlockProcess=NULL;BdaHTML5中文学习网 - HTML5先行者学习网

  numOfblock--;BdaHTML5中文学习网 - HTML5先行者学习网

  //阻塞队列中的其他进程向前移动一个位置BdaHTML5中文学习网 - HTML5先行者学习网

  for(int i=0;i<numOfblock;i++)BdaHTML5中文学习网 - HTML5先行者学习网

  }BdaHTML5中文学习网 - HTML5先行者学习网

  /////////////////////////////////////////////////////////////////////////////////////BdaHTML5中文学习网 - HTML5先行者学习网

  //BdaHTML5中文学习网 - HTML5先行者学习网

  // The main progressBdaHTML5中文学习网 - HTML5先行者学习网

  //BdaHTML5中文学习网 - HTML5先行者学习网

  /////////////////////////////////////////////////////////////////////////////////////BdaHTML5中文学习网 - HTML5先行者学习网

  void main()BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  int num;BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<" ********************************************************"<<endlBdaHTML5中文学习网 - HTML5先行者学习网

  <<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<" The virtual CPU the process runned "<<endlBdaHTML5中文学习网 - HTML5先行者学习网

  <<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<" *******************************************************"<<endlBdaHTML5中文学习网 - HTML5先行者学习网

  <<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<"initialize the information of processes "<<endl; cout<<"Please in put the number of process [#command#] > "; tryBdaHTML5中文学习网 - HTML5先行者学习网

  catch(int)BdaHTML5中文学习网 - HTML5先行者学习网

  {BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<"You in put the numbers of process is error !"<<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  exit(1);BdaHTML5中文学习网 - HTML5先行者学习网

  } Process::RandID(); // 随机生成第一个进程的ID,以后生成的进程ID顺序加1BdaHTML5中文学习网 - HTML5先行者学习网

  CPU virtualCPU(num);BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<"Pocesses runed by CPU "<<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  virtualCPU.Run();BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<"Processes runned over ! "<<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<" ********************************************************"<<endlBdaHTML5中文学习网 - HTML5先行者学习网

  <<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<" The time which processes runned by CPU : "<<virtualCPU.getAlltime()<<endlBdaHTML5中文学习网 - HTML5先行者学习网

  <<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  virtualCPU.displayPro();BdaHTML5中文学习网 - HTML5先行者学习网

  cout<<" *******************************************************"<<endlBdaHTML5中文学习网 - HTML5先行者学习网

  <<endl;BdaHTML5中文学习网 - HTML5先行者学习网

  } 这里没有任何的API调用 只是模拟,我给进程设定了自己的语法,输入一般的字符cpu调用时只是正常输出,假如碰到' 表示该进程要调用系统资源后面必须跟一个数字表示占有的时间,假如资源闲置则占有资源否则阻塞,等资源释放在占有资源。进程的调用算法我采用的是时间片轮转算法并有所改进,当某个进程从阻塞队列释放后,他将把以前因为等待资源而被浪费的时间补回来。BdaHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助