可抢占调度算法(在VC下编译通过).docVIP

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可抢占调度算法(在VC下编译通过)

? 可抢占调度算法(在VC下编译通过) #include iostream.h #include string.h #include fstream.h #include math.h #include stdio.h #include stdlib.h const int FINISH=0;//完成状态 const int RUNNING=1;//运行状态 const int READY=2;//就绪状态 const int PCBNUM=3;//进程个数 typedef struct { long pid; char pname[10]; int pstate; int pneedtime; int ptime; int priority; }pcbs;//pcb结构 class pcbnode; //队列结点 class pcbnode { public: pcbs *pcb; pcbnode *link; pcbnode(); ~pcbnode(); int run();//运行操作 int runend();//运行结束? int insertnode(pcbnode *p,pcbnode *q);//在q后插入结点p int deletenode(pcbnode *p,pcbnode *q);//删除p结点,q为p的前驱 int addnode(pcbnode *p);//增加结点 }; pcbnode::pcbnode() { pcb=0; link=0; } pcbnode::~pcbnode() { if(link) delete link; if(pcb) pcb-pstate=FINISH; } int pcbnode::run() { pcb-pstate=RUNNING; ++(pcb-ptime); pcb-priority--;//优先级降低 return 0; } int pcbnode::runend() { return (pcb-pneedtime=pcb-ptime); } int pcbnode::addnode(pcbnode *p) { pcbnode *q; q=this; p-pcb-pstate=READY; while(q-link){ q=q-link; } q-link=p; return 0; } int pcbnode::insertnode(pcbnode *p,pcbnode *q) { p-link=q-link; q-link=p; return 0; } int pcbnode::deletenode(pcbnode *p,pcbnode *q) { q-link=p-link; p-link=0; return 0; } int randInt( int seed) //随机函数:产生不大于seed的正整数 { int r; r=rand(); while(rseed||r=0 ) r=rand(); return r; } void newpcb(pcbs *pcb, int order) //随机生成进程 { char buf[10]; pcb-pid=order; strcpy(pcb-pname, proc); _itoa(order,buf,10); strcat(pcb-pname,buf); pcb-pneedtime=randInt(5);//进程需要时间 pcb-ptime=0; pcb-priority=randInt(10);//优先度 } void pprint(pcbs *pcb, int count) { //打印进程状态 ofstream ofs(result.txt, ios::out|ios::app); coutid\tname\tstat\tneed\truntime\tpriendl; ofsid\tname\tstat\tneed\truntime\tpriendl; for(int i=0;icount;i++){ coutpcb[i].pid\t pcb[i].pname\t; ofs pcb[i].pid\t pcb[i].pname\t; switch(pcb[i].pstate) { case RUNNING: coutRU; ofsRU; break; case READY: coutRE; ofsRE; break; case FINISH: coutFI; ofsFI; break; } cout\tpcb[i].pneedtime; ofs\tpcb[i].pneedtime; cout\tpcb[i].ptime; ofs\tpcb[i].ptime; cout\tpcb[i].pr

您可能关注的文档

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档