《操作系统原理》实验-第二章-进程与线程
// 进程管理.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
void clrscr();
void create();
void run();
void huanchu();
void kill();
void huanxing();
struct jincheng_type
{ int pid;
int youxian;
int daxiao;
int zhuangtai;
char info[10];
};
struct jincheng_type neicun[20];
int shumu=0,guaqi=0,pid,flag=0;
void main()
{
int n;
char a;
n=1;
clrscr();
while(n==1)
{
printf("\n********************************************");
printf("\n* 进程演示系统 *");
printf("\n********************************************");
printf("\n 1.创建新的进程 2.查看运行进程 ");
printf("\n 3.换出某个进程 4.杀死运行进程 ");
printf("\n 5.唤醒某个进程 6.退出系统 ");
printf("\n********************************************");
printf("\n请选择(~)");
a=getche();
switch(a)
{ case'1':
create( );
break;
case'2':
run( );
break;
case'3':
huanchu();
break;
case'4':
kill( );
break;
case'5':
huanxing( );
break;
case'6': exit(0);
default: n=0;
}
}
system("pause");
}
void create( ) /* 创建一个进程的示例(不完整的程序)*/
{
int i=0;
int n=0;
printf("\n输入进程个数:");
scanf("%d",&n);
if(shumu>=20)
{
printf("\n内存已满,请先结束或退出进程\n");
}
else
{
for(i;i<n ;i++)
{
printf("\n输入优先级:");
scanf("%d",&neicun[shumu+i].youxian );
neicun[shumu+i].pid=shumu+i+1;
neicun[shumu+i].info[10]='A';
neicun[shumu+i].daxiao=20;
neicun[shumu+i].zhuangtai =1;
printf("\n输入进程信息:");
scanf("%s", neicun[shumu+i].info );
}
shumu+=n;
/*
*
*待填代码
*
* */
}
}
void clrscr()/*清除内存空间*/
{
int i;
for(i=0;i<19;i++)
{
neicun[i].pid=0;
neicun[i].youxian=0;
neicun[i].daxiao=0;
neicun[i].zhuangtai=0;
}
shumu=0;
}
void run()/* 查看内存中进程运行的情况 */
{
for(int i=0;i<20;i++)
{
if(neicun[i].zhuangtai==1)
{
printf("当前各内存中的进程\n");
printf("当前运行的进程%d\n",neicun[i].pid);
printf("当前运行进程的优先级%d\n",neicun[i].youxian);
printf("当前运行进程
占用的空间大小%d\n",neicun[i].daxiao);
}
}
}
void huanchu()/* 换出优先级最小的进程*/
{
if(!shumu)
{
printf("当前没有运行进程\n");
return;
}
printf("\n输入换出进程的ID值");
scanf("%d",&pid);
for (int i=0;i<20;i++)
{
if(pid==neicun[i].pid)
{
if(neicun[i].zhuangtai==1)
{
neicun[i].zhuangtai=2;
guaqi++;
printf("\n已经成功换出进程\n");
}
else if(neicun[i].zhuangtai==0)printf("\n要换出的进程不存在");
else printf("\n要换出的进程已被挂起\n");
flag=1;
break;
}
}
if(flag==0)printf("\n要换出的进程不存在");
}
void kill()/* 杀死某个进程*/
{
if(!shumu)
{
printf("当前没有运行进程\n");
return;
}
printf("\n请输入要杀死的进程\n");
scanf("%d",&pid);
for(int i=0;i<20;i++)
{
if(pid==neicun[i].pid)
{ neicun[i].pid=0;
neicun[i].youxian=0;
neicun[i].daxiao=0;
neicun[i].zhuangtai=0;
for(int j=0;j<10;j++)
{
neicun[shumu].info [j]=' ';
}
/*
*
*待填代码
*
* */
flag=1;
break;
}
}
if (!flag)
{
printf("\n要杀死的进程不存在\n");
}
}
void huanxing()
{
if(!shumu)
{
printf("当前没有运行进程");
return;
}
if(!guaqi)
{
printf("当前没有挂起进程");
return;
}
printf("\n输入pid:\n");
scanf("%d",&pid);
for(int i=0;i<20;i++)
{
if (pid==neicun[i].pid)
{
flag=false;
if(neicun[i].zhuangtai==2)
{
neicun[i].zhuangtai=1;
guaqi--;
printf("\n已经成功唤醒进程\n");
}
else if(neicun[i].zhuangtai==0)printf
("\n要换醒的进程不存在\n");
else printf("\n要唤醒的进程已被挂起\n");
break;
}
}
if(flag)printf("\n要唤醒的进程不存在\n");
}
相关推荐:
- [高等教育]一年级家长课程教案
- [高等教育]封丘县人民医院深入推进纠正医药购销领
- [高等教育]2017年6月大学英语四级真题试卷及答案(
- [高等教育]2017年北京第二外国语学院文学院824中
- [高等教育]7 高中历史第7单元1861年俄国农奴制改
- [高等教育]【K12学习】4、实际测量-苏教版六年级
- [高等教育]药具培训试卷题库及部分参考答案
- [高等教育]本土电子元器件目录分销商如何赢得生意
- [高等教育]七年级岭南版美术教案
- [高等教育]书作文之书法活动通讯稿
- [高等教育]Endnote X 软件使用入门和用法总结(LS)
- [高等教育]嵌入式系统的现状及发展状况
- [高等教育]2012抗菌药物专项整治活动方案解读
- [高等教育]人教版新课本一年级数学下册期末试卷
- [高等教育]爱课程民法学观后感
- [高等教育]930机组使用说明书1
- [高等教育]煤气设备设施点检标准
- [高等教育]常见室内观叶植物图解
- [高等教育]312党员群众路线心得体会
- [高等教育]小学信息(苗版)第一册全册教案
- 在市---局2010党建大会上的讲话
- 《科哲》提纲及补充阅读材料(2010.7)
- 苏州高博软件技术职业学院论文开题报告
- 兼职导游管理的困境及对策探讨
- 基于通用设计理念的现代厨房产品语义研
- 康乐一中2010年至2011年度鼓号队、花束
- 第10章_数据收集整理与描述_期末复习课
- 2008年黑龙江林甸商贸购物中心营销策划
- 水硬度的测定实验报告
- 五分钟教你拍摄夜景光绘照
- 2014年临床妇产科三基三严试题及答案
- 0第二课 纾解压力第一站了解压力
- 解析建筑工程电气设备安装施工技术要点
- 地方性应用型本科高校“双师型”师资队
- 高考语文专题复习课件:小说阅读指导
- 装饰工程投标书2
- 大学生就业难问题探讨及对策
- English and Its History
- 青岛市城市房屋修缮工程质量监督管理办
- 初中英语形容词和副词的用法和练习题




