操作系统实验报告

高考资讯2021-07-23 03:13:56admin2

#include<algorithm>#include<iomanip>#include<conio.h>using namespace std;struct PCB{ string p_name;//程序名 int super;//优先级 double ndtime;//需要时间 double runtime;//运行时间 string state;//状态 bool operator<(const PCB& nd) { return super>nd.super ; }};int main(){ int n,i,j,nn=0; cout<<\n请输入进程总个数?; cin>>n; PCB *PB=new PCB[n]; for(i=0;i<n;i++) { cout<<\n\n进程号No.<<i<<:<<endl; cout<<\n输入进程名:; cin>>PB[i].p_name ; cout<<\n输入进程优先级数<0~99>:; cin>>PB[i].super ; cout<<\n输入进程运行时间:; cin>>PB[i].ndtime ; nn +=PB[i].ndtime ; PB[i].runtime =0;PB[i].state =W; } sort(PB,PB+n); int k=PB[0].super ; queue<PCB> *que=new queue<PCB>[k+1]; for(i=0;i<n;i++) que[PB[i].super ].push (PB[i]); cout<<setfill(' '); cout<<setiosflags(ios::left); for(i=0;i<nn;i++) { PCB PP=que[k].front() ; int kk; for(kk=0;kk<n;kk++) if(PP.p_name ==PB[kk].p_name) break; PB[kk].state =R; cout<<\n\n按任意键继续......; getch(); cout<<\n\n*-*-*-*-*-*-*-* The excute number:<<i+1<< *-*-*-*-*-*-*-*; cout<<\n\n*-*-*-*-*-*-* 当前正在运行的进程是: <<PP.p_name << *-*-*-*-*-*-*; cout<<\n\np_name state super ndtime runtime; cout<<\n |<<setw(10)<<PP.p_name << |<<setw(6)<<PB[kk].state << |<<setw(6) <<PP.super << |<<setw(11)<<PP.ndtime << |<<PP.runtime ; PP.runtime +=1;PB[kk].runtime +=1; if(PB[kk].super >0) PB[kk].super -=1; que[k].pop (); cout<<\n\n*-*-*-*-*-*-* 当前就绪队列状态为: *-*-*-*-*-*-*; for(j=0;j<n;j++) if(PB[j].state ==W) { cout<<\n\np_name state super ndtime runtime; cout<<\n |<<setw(10)<<PB[j].p_name << |<<setw(6)<<PB[j].state << |<<setw(6) <<PB[j].super << |<<setw(11)<<PB[j].ndtime << |<<PB[j].runtime ; } if(PP.runtime ==PP.ndtime ) { PB[kk].state =F; cout<<\n\n时间片到期,此时进程[<<PB[kk].p_name <<]已完成.; if(que[k].empty ()&&k>0) k--; } else { PB[kk].state =W; if(k>0) que[k-1].push (PB[kk]); else que[k].push (PB[kk]); if(que[k].empty ()&&k>0) k--; } } cout<<\n\n进程已全部完成.<<endl<<endl; return 0;} 整个程序都是模拟“最高优先级”进程调度算法的程序啊我是用C++写的 你用编译器编译下 然后运行下 就知道怎么回事了 轮转法很简单,,,就不写了 不给我分数我觉得很冤枉 因为为了这个程序我写了1个多小时 没有功劳也会苦劳啊

相关推荐

猜你喜欢

大家正在看

换一换