#include<iostream.h>
#include<malloc.h>
#define null 0
#include<stdlib.h>
typedef struct node
{char data;
struct node *next;
}linklist;
linklist *p1,*r1;
linklist *p2,*r2;
linklist *p3,*r3;
void help()
{
cout<<"c 创建进程"<<endl;
cout<<"e 进程结束"<<endl;
cout<<"b 进程阻塞"<<endl;
cout<<"w 进程激活"<<endl;
cout<<"t 时间片到"<<endl;
cout<<"q 退出"<<endl;
cout<<"o 显示"<<endl;
}
///////////////////////////创建进程///////////////////////
void C()
{
//char ch;
linklist *s;
s=(linklist *)malloc(sizeof(linklist));
cout<<"请输入将要创建的进程:"<<endl;
cin>>s->data;
if(p2->next!=null)
{
s->next =r1->next;
r1->next=s;
r1 = s;
}
else
{ s->next=null;
r2->next=s;
}
}
//////////////////输出现有的进程状态//////////////////////////
void OUT()
{ linklist *s;
cout<<"就绪进程有:"<<endl;
s=p1->next ;
while(s != NULL)
{
cout<<s->data<<" ";
s=s->next;
}
cout<<endl;
cout<<"执行进程有:"<<endl;
s = p2->next;
if(s==NULL)
{
cout<<endl;
}
else cout<<s->data;
cout<<endl;
cout<<"阻塞进程有:"<<endl;
s = p3->next;
while(s!= NULL)
{
cout<<s->data<<" ";
s=s->next;
}
cout<<endl;
}
/////////////////////结束进程////////////////////////
void E()
{
if( p2->next != NULL)
{
if(p1->next != NULL)
{
cout<<"当前进程已结束"<<endl;
p2->next->data = p1->next->data;
p1=p1->next;
}
else
{
p2->next = null;
cout<<"当前已无进程可操作"<<endl;
}
}
else
{
cout<<"当前无进程活动,请创建进程"<<endl;
}
}
///////////////////////堵塞进程////////////////////////
void B()
{
linklist *s;
cout<<"阻塞当前进程"<<endl;
if(p2->next != NULL)
{
{
if(p1->next != NULL)
{s=new linklist;
s->data = p2->next->data;
s->next = r3->next;
r3->next = s;
r3 = s;
p2->next->data = p1->next->data;
p1=p1->next;}
else
{ s=new linklist;
s->data = p2->next->data;
s->next = r3->next;
r3->next = s;
r3 = s;
p2->next = NULL;
cout<<"请创建新进程"<<endl;
}
}
}
else
cout<<"警告:执行态无进程"<<endl;
}
///////////////////////////激活进程//////////////////////
/*void W()
{
linklist *s;
if(p3->next != null)
{
if(p2->next != null)
{
cout<<"阻塞进程已唤醒"<<endl;
s=new linklist;
s->data = p3->next->data ;
s->next = r1->next ;
r1->next = s;
r1 = s;
s= NULL;
if(p3->next->next != null)
{
p3->next = p3->next->next;
}
else
{
p3 = r3;
}
}
else
{
s=new linklist;
s->data =p3->next->data;
s->next=null;
r2->next = s;
s=NULL;
if(p3->next->next != null)
{
p3->next = p3->next->next;
}
else
{
p3 = r3;
}
}
}
else
{
cout<<"警告:阻塞态内无进程"<<endl;
}
}*/
////////////////////////////时间片到////////////////////////////
void T()
{
linklist *s;
if(p2->next != NULL)
{
cout<<"时间片到"<<endl;
s=new linklist;
s->data = p2->next->data;
s->next = r1->next;
r1->next = s;
r1 = s;
p2->next->data = p1->next->data;
p1->next=p1->next->next;
}
else
cout<<"警告:执行态内无进程活动"<<endl;
}
//////////////////////主函数/////////////////////////////
void main()
{
char ch;
p1=new linklist;p1->next=null;r1=p1;
p2=new linklist;p2->next=null;r2=p2;
p3=new linklist;p3->next=null;r3=p3;
help();
do
{ cout<<"请输入操作命令:"<<endl;
cin>>ch;
if(ch=='c')
C();
if(ch=='e')
E();
if(ch=='b')
B();
if(ch=='o')
OUT();
}while(ch!='q');
}
jincheng.rar_jincheng_进程管理
版权申诉
132 浏览量
2022-09-24
13:26:02
上传
评论
收藏 1KB RAR 举报
林当时
- 粉丝: 95
- 资源: 1万+
最新资源
- XILINXFPGA源码Xilinxspratan3xcs100E(VGAPS2)
- XILINXFPGA源码XilinxSPARTAN-3E入门开发板实例
- XILINXFPGA源码XilinxSdramVerilog和VHDL版本文档
- 物联网智能家居方案-基于Nucleo-STM32L073&机智云(大赛作品,文档齐全,可直接运行)(文档加Matlab源码)
- XILINXFPGA源码XilinxISE9.xFPGACPLD设计源码
- 成都市地图含高新区(高新南区,高新西区),天府新区,东部新区虚拟行政区划
- XILINXFPGA源码XilinxEDK设计试验
- XILINXFPGA源码XilinxEDKMicroBlaze内置USB固件程序
- 基于 django 的视频点播后台管理系统源代码+数据库
- 基于Java的网上医院预约挂号系统的设计与实现(部署视频)-kaic.mp4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0