📄 进程管理.txt
字号:
#include <iostream>
#include <stdio.h>
#include <vector>
#include <iomanip>
using namespace std;
typedef struct jincheng
{
int pid;
int youxian;
int daxiao;
int zhuangtai; //1运行,2就绪,3阻塞
}jincheng;
jincheng neicun[20];
int neicunmax = 20; //内存总大小
int shumu = 0;
void create( ) /* 创建一个进程的示例 */
{
if(shumu >= 20)
{
printf("\n进程数已满,请先结束或换出进程\n");
}
else
{
printf("请输入新进程pid\n");
scanf("%d",&neicun[shumu].pid);
printf("\n请输入新进程的优先级\n");
scanf("%d",&neicun[shumu].youxian);
printf("\n请输入新进程的大小\n");
scanf("%d",&neicun[shumu].daxiao);
if((neicunmax - neicun[shumu].daxiao) > 0)
{
neicun[shumu].zhuangtai = 1;
neicunmax -= neicun[shumu].daxiao;
}
else
neicun[shumu].zhuangtai = 2;
printf("剩余内存大小%d\n", neicunmax);
//cout<<neicunmax;
shumu++;
}
}
void run()
{
for(int num=0; num<20; num++)
{
if(neicun[num].zhuangtai==1)
{
printf("\n 运行的进程: pid= %d, 占内存%d", neicun[num].pid, neicun[num].daxiao);
}
}
printf("\n 剩余内存大小%d\n", neicunmax);
}
void chakan()
{
int flag = 1;
for(int num=0; num<20; num++)
if (neicun[num].zhuangtai == 2)
{
printf("\n 就绪进程: pid= %d", neicun[num].pid);
flag = 0;
}
for(num=0; num<20; num++)
if (neicun[num].zhuangtai == 3)
{
printf("\n 阻塞进程: pid= %d", neicun[num].pid);
flag = 0;
}
if(flag = 1)
printf("无就绪和阻塞进程");
}
void huanchu()
{
int id;
printf("\n 输入换出进程的PID值");
scanf("%d",&id);
for(int num=0; num<20; num++)
if(id == neicun[num].pid && neicun[num].zhuangtai == 1)
{
neicun[num].zhuangtai = 3;
neicunmax += neicun[num].daxiao;
break;
}
else
{
printf("\n当前的进程已阻塞或不存在\n");
break;
}
}
void kill()
{
int id;
printf("\n 输入杀死进程的PID值");
scanf("%d",&id);
for(int num=0;num<20;num++)
{
if(id==neicun[num].pid && neicun[num].zhuangtai != 1)
printf("该进程未运行,无需杀死");
else
if (id==neicun[num].pid && neicun[num].zhuangtai == 1)
{
neicun[num].zhuangtai = 3;
neicunmax += neicun[num].daxiao;
break;
}
}
}
void print()
{
printf("\n********************************************");
printf("\n* 进程演示系统 *");
printf("\n********************************************");
printf("\n 1.创建新的进程 2.查看运行进程 ");
printf("\n 3.换出某个进程 4.杀死运行进程 ");
printf("\n 5.查看就绪阻塞进程 6.退出系统 ");
printf("\n********************************************");
printf("\n请选择(1~6)");
}
int main()
{
int n;
print();
while(scanf("%d", &n)==1)
{
switch(n)
{
case 1:
system("cls");
create( );
print();
continue;
case 2:
system("cls");
run( );
print();
continue;
case 3:
system("cls");
huanchu();
print();
continue;
case 4:
system("cls");
kill( );
print();
continue;
case 5:
system("cls");
chakan( );
print();
continue;
case 6: exit(0);
default: break;
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -