⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 进程管理.txt

📁 用c++模拟实现的进程管理系统
💻 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 + -