• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: 其他
  • 标签: c++  

资源简介

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


评论

共有 条评论