资源简介
1) 提供导致进程状态变化的调用接口,包括创建、删除、调度、阻塞、激活等。
2) 实现进程列表显示的接口。
3) 这里设计的进程是一个假设的对象实体,是由程序自己创建和删除,不是系统维护的进程。

代码片段和文件信息
#include
#include
using namespace std;
//进程的定义
typedef struct QNode
{
char Flag[33]; //进程标识符
//string State; //进程的状态
int Time; //进程的运行时间
int Order; //进程优选级
struct QNode *next; //下一个节点
}*PCB;
//----------------子函数声明部分----------------------
void Initial(PCB &P); //初始化链表函数
void Display(PCB P); //显示进程函数
PCB Look(PCB &P); //查找并且修改就绪进程的函数
int Length(PCB P); //计算进程的个数
void Ready(PCB &P); //就绪函数
void Block(PCB &PPCB &R); //阻塞函数
void Finish(PCB &PPCB &R); //消亡函数
void Run(PCB &PPCB &F); //执行函数
void Active(PCB &PPCB &B); //唤醒函数
//----------------------------------------------------
//--------------------主函数--------------------------
int main()
{
int oprate=1;
PCB RBFq;
Initial(R); //初始化就绪链表
Initial(B); //初始化阻塞链表
Initial(F); //初始化消亡链表
cout<<“请选择使进程所处状态的操作“< cout<<“0--返回“< cout<<“1--就绪“< cout<<“2--阻塞“< cout<<“3--消亡“< cout<<“4--执行“< cout<<“5--唤醒“<
while(cin>>oprate) //选择操作
{
switch(oprate)
{
case 0: //使返回
return 0;
case 1:Ready(R); //使就绪
break;
case 2:Block(BR); //使阻塞
break;
case 3:q=Look(R);Finish(Fq); //使消亡
break;
case 4:Run(RF); //使执行
break;
case 5:Active(RB); //使唤醒
break;
default:
cout<<“输入错误请重新输入“< }
cout<<“---0返回--1就绪--2阻塞--“;
cout<<“3消亡--4执行--5唤醒---“< }
return 0;
}
//----------------------------------------------------
//----------------一初始化函数------------------------
void Initial(PCB &P)
{
P=(PCB)malloc(sizeof(QNode)); //分配空间
P->next=NULL;
}
//----------------------------------------------------
//---------------二显示函数---------------------------
void Display(PCB P)
{
PCB r=P->next;
if(!r)
cout<<“没有元素存在“;
else
while(r)
{
cout<Order<<‘ ‘; //输出
r=r->next; //指向下一个
}
cout< }
//----------------------------------------------------
//-----------------三查找函数-------------------------
PCB Look(PCB &P)
{
PCB r=Pq;
int e;
cout<<“请输入优先级整数类型“< while(cin>>e)
{
if(e>0) //判断输入合法性
break;
else
cout<<“输入错误请重新输入“< }
while(r->next)
{
if(r->next->Order==e)
{
q=r->next;
r->next=r->next->next; //删除
cout<<“被处理后后剩余的进程是:“;
Display(P);
return q;
}
else
r=r->next; //指向下一个
}
if(r->next==NULL)
return NULL;
}
//----------------------------------------------------
//---------------------四执行函数---------------------
void Run(PCB &PPCB &F)
{
PCB r=Pq;
if(r->next)
{
q=r->next;
r->next=r->next->next; //删除
cout<<“被执行后剩余的就绪进程是:“;
Display(P);
Finish(Fq); //执行后直接放到消亡队列中
}
else
cout<<“已经没有就绪进程了“< }
//----------------------------------------------------
//------------------五就绪函数------------------------
void Ready(PCB &P)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5911 2010-04-10 19:54 进程状态转换.cpp
----------- --------- ---------- ----- ----
5911 1
- 上一篇:glr7nu.rar
- 下一篇:计算方法-----的一些经典程序
相关资源
- VisualStudioUninstaller vs卸载工具
- 组态王驱动开发包3.0.0.7(中文)
- 多窗口后台鼠标连点器
- 使用选择性重传协议实现UDP可靠通信
- VC 获得文件属性 获取文件的创建时
- 读者写者问题(读者优先,写者优先
- 用VC 编写的仿QQ聊天室程序源代码
- 外点法程序
- 外罚函数程序
- qt-电子点菜系统
- 推箱子及人工智能寻路C 源代码
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- MUSIC算法c 实现
- C 餐厅叫号系统(QT平)
- 国际象棋c 完整版
-
ob
jectARX给Auto CAD加工具条 - 画图程序MFC/VC/VC CRectTracker 串行化
- MFC网络编程实例
- c 课程设计 职工信息管理系统
- VC 游戏编程—附源代码
- IpHlpApi.h&IpHlpApi.lib
- 清华大学 c 郑莉 ppt课件
- c 程序判断离散数学中命题公式
- 多项式求和(数据结构C 版)
- vc 6.0开发的流程图编辑器
- VC 天空盒(skyBox)实现(附源代码)
- c MFC 画多边形
- 用C 实现的对网络上的ARP数据包进行
- Microsoft基本类库 (MFC)(C 库)
评论
共有 条评论