进程1.cpp

来自「设计一个允许n个进程并发运行的进程管理模拟系统。该系统包括有简单的进程控制、同步」· C++ 代码 · 共 113 行

CPP
113
字号
#include<iostream.h>
#include<slist.h>
void main()
{
int n;
char a;
cout<<"\n*********************进程管理小模拟系统********************\n"<<endl;
queue zhixing,jiuxu,zuse;
cout<<"\n*********************注意:********************\n1.若想结束输入,请输入R。\n2.本模拟系统进程调度采用的是先来先服务算法,输入进程名的顺序即为到达cpu的顺序\n"<<endl;
char r;
r='R';
for(int i=0;;i++)
{   
	char e[100];
	cout<<"输入进程名:"<<" ";
	cin>>e[i];
	if(e[i]!=r)
		jiuxu.enqueue(e[i]);
	else
		break;
}
A: cout<<"\n请选择操作:1、执行进程;2、将阻塞队列中进程调入就绪队列;3、封锁进程;4、结束进程;5、退出程序。 ";
cin>>n;
if(n==1)
{
if(!zhixing.isempty ())
{
	cout<<"已经有进程在执行!,此操作不能执行\n";
	char w;
	cout<<endl;
	cout<<"如果要继续请输入#;如果要退出按其它任意键"<<endl;
	cout<<"要选择的操作:";
	cin>>w;
    if(w=='#')goto L;
	else goto E;
}
else
{
	if(!jiuxu.isempty())
	{
		a=jiuxu.dequeue();
     if(a!=r)
      zhixing.enqueue(a);
goto L;
	}
	else goto L;
}
}
else if(n==2)
{
	if(!zuse.isempty())
	{
     a=zuse.dequeue ();
      if(a!=r)
       jiuxu.enqueue(a);
      goto L;
	}
	else goto L;
}
else if(n==3)
{
if(!zhixing.isempty())
	{
    a=zhixing.dequeue ();
    if(a!=r)
    zuse.enqueue(a);
     goto L;
}
else goto L;
}
else if(n==4)
{
cout<<"\n请输入要结束的进程名: ";
cin>>a;
if(zhixing.find (a)||jiuxu.find (a)||zuse.find (a))
{
	if(zhixing.find(a))
	{zhixing.del(a);}
     else if(jiuxu.find(a))
	 {jiuxu.del(a);}
    if(zuse.find(a))
	{zuse.del(a);}
    cout<<"\n结束进程成功!\n"<<endl;
    goto L;
} 
else
cout<<"没有此进程"<<endl;
goto L;
L: 
if(n==1||n==2||n==3||n==4)
{
cout<<"执行队列"<<endl;
zhixing.display();
cout<<endl;
cout<<"就绪队列"<<endl;
jiuxu.display();cout<<endl;
cout<<"阻塞队列"<<endl;
zuse.display();cout<<endl;
goto A;
}


else if(n==5);
else 
{
cout<<"\n你的输入错误!\n";
goto A;
}
}
E:;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?