资源简介
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
相关资源
- CCS FFT c语言算法
- 小波变换算法 c语言版
- 3des加密算法C语言实现
- DES加密算法C语言实现
- 线性回归算法c语言实现
- 基于C语言的模拟退火算法
- C语言实现的DES对称加密算法
- 用VC6.0实现多边形扫描线填充算法
- c语言编写的货郎担算法
- Em算法(使用C++编写)
- STM32烧写算法flash包
- 永磁同步电机的FOC控制算法
- Proteus仿真:PID算法输出.rar
- 一个模糊PID温度控制算法源代码
- 经典滤波算法
- KMP算法C语言程序
- SVM算法实现(源码+文档)
- 算法A律U律实现
- 人工蜂群算法.docx
- BlowFish加密算法
- C语言常用算法源代码
- c++数组快排算法
- 算法表达式求值.cpp
- PID算法.c
- QR二维码C++源码 算法实现
- 基于opencv漫水填充算法综合
- 信息学奥赛一本通——算法部分
- 银行家算法分配资源的模拟实现(m
- C语言程序设计50例.docx
- 常见排序算法比较.cpp
评论
共有 条评论