资源简介
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
- 下一篇:计算方法-----的一些经典程序
相关资源
- 经典的背包问题九讲,必看
- 模拟退火算法解决TSP问题
- 操作系统设计一个按优先权调度算法
- 驱动执行应用层代码之KeuserModeCallba
- 虚拟磁盘MINIPORT驱动代码
- 最新的libssh2库源码
- 模拟IPINTERNET PROTOCOL数据分片和重组
- 火车车厢重排列问题 堆栈解决
- 山东大学数据结构课设箱子装箱问题
- som神经网络用于实现图像压缩
- 一种新的GEP 解码方法及其应用程序及
- 信息学奥赛一本通课后练习答案汇总
- 操作系统实验生产者与消费者实验报
- windows rpc基本使用Demo
- 基于QT实现2048小游戏
- Linux下基于原始套接字的嗅探器
- 二维多边形布尔运算,包括多边形绘
- 学生管理系统 根据数据结构的链表知
- StdAfx.h
- VC使用jmail.dll编写电子邮件发送和接受
- qt串口通信,实现发送和接收
- 中缀表达式转换成后缀表达式
- 机器狗源代码
- 用qt写的学生成绩管理系统
- 用qt写的签到程序
- MSComm_VS2010
- 日志库EasyLogging++共享功能演示工程
- 目录重定向源代码工程
- 图书信息管理系统设计
- KinectSDK2.0音频获取
评论
共有 条评论