资源简介
1、程序中有创建、撤消、阻塞、唤醒、挂起、激活、改变优先数(K0)、改变状态(STATE)、查看PCB功能模块,为每个模块建立一个程序。
2、PCB(进程控制块)可采用数组数据结构,每个数组元素即PCB块可包含N0(外部名),K0(优先数),CHA(状态)三项。
代码片段和文件信息
#include“stdio.h“
#include“stdlib.h“
struct pcb
{
int name;
int KO;
int state;
};
typedef struct pcb PCB;
PCB a[10];
void create() // 创建进程
{
static int pi=1;
int kl=0m;
printf(“请输入进程名:“);
scanf(“%d“&m);
for(k=1;k<=10;k++)
if(a[k].name==m)
l=1;
if(l==1)
{
printf(“创建失败!该进程已经存在!\n“);
}
else
{
a[pi].name=m;
printf(“\n“);
printf(“请输入优先级:“);
scanf(“%d“&a[pi].KO);
a[pi++].state=2;
printf(“创建成功!\n“);
printf(“\n“);
}
getchar();
getchar();
}
void destory() //撤销进程
{
int inumk=0;
printf(“请输入要撤销的进程:“);
scanf(“%d“&num);
for(i=0;i<=10;i++)
if(a[i].name==num)
k=i;
if(k!=0)
{
a[k].name=0;
a[k].KO=0;
a[k].state=0;
printf(“撤销成功!\n“);
}
else
printf(“撤销失败!不存在此进程!\n“);
getchar();
getchar();
}
void active() //激活进程
{
int ik=0m;
printf(“ 请输入进程名:“);
scanf(“%d“&m);
for(i=0;i<=10;i++)
if(a[i].name==m)
k=i;
if(k!=0)
{
switch(a[k].state)
{
case 1 :a[k].state=4;printf(“激活成功!\n“);break;
case 2 :a[k].state=3;printf(“激活成功!\n“);break;
default:printf(“激活失败!进程已经激活或正在执行!\n“);
}
}
else
printf(“激活失败!进程不存在\n!“);
getchar();
getchar();
}
void hang() //挂起进程
{
int ik=0m;
printf(“请输入进程名:“);
scanf(“%d“&m);
for(i=1;i<=10;i++)
if(a[i].name==m)
k=i;
if(k!=0)
{
switch(a[k].state)
{
case 3:a[k].state=2;printf(“挂起成功!\n“);break;
case 4:a[k].state=1;printf(“挂起成功!\n“);break;
case 5:a[k].state=1;printf(“挂起成功!\n“);break;
default:printf(“挂起失败!进程已经处于挂起状态!\n“);
}
}
else
printf(“挂起失败!进程不存在!\n“);
getchar();
getchar();
}
void release() //释放进程
{
int ik=0m;
printf(“请输入进程名:“);
scanf(“%d“&m);
for(i=1;i<=10;i++)
if(a[i].name==m)
k=i;
if(k!=0)
{
switch(a[k].state)
{
case 2:a[k].state=1;printf(“释放成功!\n“);break;
case 3:a[k].state=4;printf(“释放成功!\n“);break;
default:printf(“ 释放失败!进程处于就绪状态或正在执行!\n“);
}
}
else
printf(“ 释放失败!进程不存在!\n“);
getchar();
getchar();
}
void execution() //执行进程
{
int ik=0m;
printf(“请输入进程名:“);
scanf(“%d“&m);
for(i=1;i<+10;i++)
if(a[i].name==m)
k=i;
if(k!=0)
{
switch(a[k].state)
{
case 4:a[k].state=5;printf(“执行成功!\n“);break;
case 5:printf(“进程正在执行!\n“);
default:printf(“进程不符合执行条件!\n“);
}
}
else
printf(“进程不存在!\n“);
getchar();
getchar();
}
void state_appear(int k)
{
int a;
a=k;
switch(a)
{
case 1:printf(“静止就绪\n“);break;
case 2:printf(“静止阻塞\n“);break;
case 3:printf(“活动阻塞\n“);break;
case 4:printf(“活动就绪\n“);break;
case 5:printf(“执行\n“);break;
}
}
void look_state()
{
int imnk=0;
printf(“1-查看所有进程状态\n“);
printf(“2-查询单个进程状态\n“);
printf(“请选择:“);
scanf(“%d“&n);
switch(n)
{
case 1:
printf(“进程名 优先级 进程状态\n“);
for(i=1;i<=10;i++)
if(a[i].name!=0)
{
printf(“%d\t\t%d\t“a[k].namea[i].KO);
state_appear(a[i].state);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4922 2010-04-27 10:18 邢伟 2班 231\jinchen g.cpp
文件 65536 2010-04-27 11:45 邢伟 2班 231\程序说明.doc
目录 0 2010-04-27 11:47 邢伟 2班 231
----------- --------- ---------- ----- ----
70458 3
相关资源
- 哈夫曼压缩解压算法-C语言
- 动态规划算法实现多段图最短路径问
- 各种排序算法的实现和性能比较C程序
- vc 源码 md5字符串加密算法 绝对可以用
- 分组密码算法DES的实现代码
- C语言编写的腐蚀膨胀开闭运算算法
- 归并排序算法
- VC++ DES 加密解密算法
- K-means聚类算法的C++实现
- C语言实现的倒排索引算法(含全部源
- 作业调度先来先服务短作业高响应比
- MFC实现填充算法
- DES加密算法C++类
- 输出所有安全序列的银行家c++算法
- SAR成像cs算法C++仿真
- Hill密码加密算法的C++实现Hill密码解密
- LSD直线提取算法Opencv
- 遗传算法求解10城市的旅行商问题的
- 利用遗传算法解决TSP问题c++
- C语言的数学函数库,所有的C语言算法
- GA遗传算法C++实现,控制台演示
- C++实现的遗传算法实现TSP问题
- 模糊+PID C语言实现
- 数据结构算法与应用--C++语言描述(代
- C语言实现页面置换算法
- MUSIC算法c++实现
- C语言算法之枚举法acm例题
- 数据结构算法与应用--C++语言描述(代
- 人工蜂群算法源代码c++,matlab
- 内部排序算法性能比较———c++
评论
共有 条评论