} ///////////////////////////////////////////////////////////////////////////////////// // // The main progress // ///////////////////////////////////////////////////////////////////////////////////// void main() { int num; cout<<" ********************************************************"<<endl <<endl; cout<<" The virtual CPU the process runned "<<endl
cout<<"initialize the information of processes "<<endl; cout<<"Please input the number of process [#command#] >/ "; try
catch(int) { cout<<"You input the numbers of process is error !"<<endl; exit(1); } Process::RandID(); // 随机生成第一个进程的ID,以后生成的进程ID顺序加1 CPU virtualCPU(num);
cout<<"Pocesses runed by CPU "<<endl; virtualCPU.Run();
cout<<"Processes runned over ! "<<endl; cout<<" ********************************************************"<<endl <<endl; cout<<" The time which processes runned by CPU : "<<virtualCPU.getAlltime()<<endl <<endl; virtualCPU.displayPro(); cout<<" *******************************************************"<<endl <<endl; }这里没有任何的API调用 只是模拟,我给进程设定了自己的语法,输入一般的字符cpu调用时只是正常输出,假如碰到' 表示该进程要调用系统资源后面必须跟一个数字表示占有的时间,假如资源闲置则占有资源否则阻塞,等资源释放在占有资源。进程的调用算法我采用的是时间片轮转算法并有所改进,当某个进程从阻塞队列释放后,他将把以前因为等待资源而被浪费的时间补回来。 希望大家多提意见