-
大小: 2KB文件类型: .rar金币: 2下载: 0 次发布日期: 2023-12-30
- 语言: C/C++
- 标签:
资源简介
进程管理
1.实验内容
至少要有:创建新的进程;查看运行进程;换出某个进程;杀死运行进程以及进程之间通信等功能。
2.实验提示
PCB结构通常包括以下信息:进程名,进程优先数,轮转时间片,进程所占用的CPU时间,进程的状态,当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删。
例:实验运行结果
********************************************
* 进程演示系统 *
********************************************
1.创建新的进程 2.查看运行进程
3.换出某个进程 4.杀死运行进程
5.进程之间通信 6.退出系统
********************************************
请选择(1~6)
然后根据你选择的不同,出现不同的结果。
代码片段和文件信息
#include
#include
#include
#define NULL 0
int shumu=0;
//进程的内容结构体
struct node
{
int a;
char ch;
};
//进程PCB结构体
struct jincheng
{
int pid;
int youxian;
float luntime;
float zhantime;
char zhuangtai;//a表示执行,b表示动态就绪
node *neirong;
struct jincheng *next;
};
struct jincheng *neijin*neizhi*p*q;
//换出进程函数
void huanchu(int a)
{
p=neijin;
while(p->pid!=a&&p!=NULL)
{
q=p;
p=p->next;
}
if(p==NULL)
{
printf(“该进程不在内存里!\n“);
return;
}
if(p==neijin)
{
neijin=neijin->next;
}
else
{
q->next=p->next;
}
}
//杀死正在运行进程函数
void shasi()
{
neizhi->next=NULL;
printf(“运行的进程已经杀死!\n“);
return;
}
//创建新进程后与正在运行进程比较优先级并根据优先级判断谁该占用处理机
int bijiao()
{
int ij;
p=neijin;
while(p!=NULL)
{
q=p;
p=p->next;
}
i=q->youxian;
j=neizhi->next->youxian;
if(i>j)
{
p=neijin;
if(p==q)
{
neijin=neizhi->next;
p->neirong=(node*)malloc(sizeof(node));
p->neirong->a=9;
p->neirong->ch=‘c‘;
neizhi->next=p;
return 1;
}
else{
while(p->next!=q)
{
p=p->next;
}
p->next=neizhi->next;
q->neirong=(node*)malloc(sizeof(node));
q->neirong->a=9;
q->neirong->ch=‘c‘;
neizhi->next=q;
neizhi->next->next=NULL;
return 1;
}
}
else
return -1;
}
void main()
{
int zhixing();
void shasi();
void chakan();
void tongxing(int);
neizhi=(jincheng*)malloc(sizeof(jincheng));
neizhi->next=NULL;
neijin=(jincheng*)malloc(sizeof(jincheng));
neijin->next=NULL;
neijin->pid=1;
neijin->youxian=6;
neijin->luntime=3.5;
neijin->zhantime=3;
neijin->neirong=(node*)malloc(sizeof(node));
neijin->neirong=NULL;
neijin->zhuangtai=‘b‘;
shumu++;
p=(jincheng*)malloc(sizeof(jincheng));
p->next=neijin->next;
neijin->next=p;
p->pid=2;
p->youxian=5;
p->luntime=3.5;
p->zhantime=3;
p->neirong=(node*)malloc(sizeof(node));
p->neirong=NULL;
p->zhuangtai=‘b‘;
shumu++;
q=(jincheng*)malloc(sizeof(jincheng));
q->next=p->next;
p->next=q;
q->pid=3;
q->youxian=4;
q->luntime=3.5;
q->zhantime=3;
q->neirong=(node*)malloc(sizeof(node));
q->neirong=NULL;
q->zhuangtai=‘b‘;
shumu++;
int in=1;
int kjs;
j=zhixing();
int creat();
while(n==1)
{
printf(“********************************************\n“);
printf(“* 进程演示系统 *\n“);
printf(“********************************************\n“);
printf(“ 1.创建新的进程 2.查看运行进程 \n“);
printf(“ 3.换出某个进程 4.杀死运行进程 \n“);
printf(“ 5.进程之间通信 6.退出系统 \n“);
printf(“********************************************\n“);
printf(“请选择(1~6)\n“);
scanf(“%d“&i);
switch(i)
{
case 1:k=creat();
if(k==1)
printf(“进程创建成功!\n“);
if(neijin->next==NULL)
{
printf(“由于只有一个进程所以为它分配处理机.\n“);
neizhi->next=neijin;
neijin->neirong=(node*)malloc(sizeof(node));
neijin->neirong->a=3;
nei
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7530 2010-11-20 13:23 进程管理c.cpp
----------- --------- ---------- ----- ----
7530 1
- 上一篇:《测试驱动的嵌入式C语言开发》源码
- 下一篇:纯HTML5拓扑图编辑器源代码
评论
共有 条评论