操作系统作业《模拟进程转换》.docVIP

  • 8
  • 0
  • 约3.27千字
  • 约 8页
  • 2016-08-01 发布于湖北
  • 举报
操作系统作业《模拟进程转换》

实验一 进程状态 模拟进程状态转换及其PCB的变化 一.实验目的 自行编制模拟程序,通过形象化的状态显示,使学生理解进程的概念、进程之间的状态转换及其所带来的PCB内容 、组织的变化,理解进程与其PCB间的一一对应关系。 二. 实验要求 设计并实现一个模拟进程状态转换及其相应PCB组织结构变化的程序; 独立设计、编写、调试程序; 程序界面应能反映出在模拟条件下,进程之间状态转换及其对应的PCB组织的变化。 三. 程序流程图 四. 数据结构 本次试验主要用到的是队列的数据结构: 就绪队列:queue Q0; 等待队列: queue Q1; 五.源程序 #includeiostream #includestdlib.h #includequeue using namespace std; queue charq[11]; void menu(); char ch; //CPU中运行的进程 void Qout(int a) //输出队列中的进程 { char c; switch(a) { case 0: cout就绪队列:;break; case 1: cout等待队列:;break; case 2: cout就绪队列:;break; case 3: cout等待队列:;break; case 4: cout就绪队列:;break; case 5: cout等待队列:;break; case 6: cout就绪队列:;break; case 7: cout等待队列:;break; case 8: cout就绪队列:;break; case 9: cout等待队列:;break; case 10: cout就绪队列:;break; case 11: cout等待队列:;break; default:break; } while(!q[a].empty()) { c=q[a].front(); coutc ; q[a].pop(); } coutendl; } void Dispatch() { if(q[0].empty()) cout就绪队列为空,无法调度!endl; else { ch=q[0].front(); q[0].pop(); q[2]=q[0]; q[3]=q[1]; Qout(2); Qout(3); cout运行:chendl; } menu(); } void Timeout() { if(ch=Ach=E) //判断CPU不为空 { q[0].push(ch); ch=q[0].front(); q[0].pop(); q[4]=q[0]; q[5]=q[1]; Qout(4); Qout(5); cout运行:chendl; } else coutCPU空闲,不存在超时!endl; menu(); } void Event_Wait() { if(ch=Ach=E!q[0].empty()) { q[1].push(ch); ch=q[0].front(); q[0].pop(); q[8]=q[0]; q[9]=q[1]; Qout(8); Qout(9); cout运行:chendl; } else { coutCPU空闲或就绪队列为空!endl; if(ch=Ach=E) { q[1].push(ch); ch= ; q[10]=q[0]; q[11]=q[1]; Qout(10); Qout(11); cout运行:chendl; } } menu(); } void Event_Occor() { ch= ; if(!q[1].empty()) { char c2=q[1].front(); q[0].push(c2); q[1].pop(); if(ch=Ach=E) { q[6]=q[0]; q[7]=q[1]; Qout(6); Qout(7); cout运行:chendl; } else { ch=q[0].front(); q[0].pop(); q[6]=q[0]; q[7]=q[1]; Qout(6);

文档评论(0)

1亿VIP精品文档

相关文档