资源简介
用c++编写的程序
模拟实现进程管理
可以实现就绪、运行、阻塞三态之间的转变。
代码片段和文件信息
#include “stdio.h“
#include
#include
#define getpch(type) (type*)malloc(sizeof(type))
#define NULL 0
#include
struct pcb {
char name[10];
char state;
int super;
int ntime;
int rtime;
struct pcb* link;
}*ready=NULL*p;
typedef struct pcb PCB;
sort()
{
PCB *first *second;
int insert=0;
if((ready==NULL)||((p->super)>(ready->super)))
{
p->link=ready;
ready=p;
}
else
{
first=ready;
second=first->link;
while(second!=NULL)
{
if((p->super)>(second->super))
{
p->link=second;
first->link=p;
second=NULL;
insert=1;
}
else
{
first=first->link;
second=second->link;
}
}
if(insert==0) first->link=p;
}
}
input()
{
int inum;
printf(“\n 请输入进程个数“);
scanf(“%d“&num);
for(i=0;i {
printf(“\n 进程号No.%d:\n“i);
p=getpch(PCB);
printf(“\n 输入进程名:“);
scanf(“%s“p->name);
printf(“\n 输入进程优先数:“);
scanf(“%d“&p->super);
printf(“\n 输入进程运行时间:“);
scanf(“%d“&p->ntime);
printf(“\n“);
p->rtime=0;p->state=‘w‘;
p->link=NULL;
sort();
}
}
int space()
{
int l=0;
PCB* pr=ready;
while(pr!=NULL)
{
l++;
pr=pr->link;
}
return(l);
}
disp(PCB * pr)
{
printf(“\n队列名称 状态 优先级 所需时间 已运行时间 \n“);
printf(“|%s\t“pr->name);
printf(“|%c\t“pr->state);
printf(“|%d\t“pr->super);
printf(“|%d\t“pr->ntime);
printf(“|%d\t“pr->rtime);
printf(“\n“);
}
check()
{
PCB* pr;
printf(“\n **** 当前正在运行的进程是:%s“p->name);
disp(p);
pr=ready;
printf(“\n ****当前就绪队列状态为:\n“);
while(pr!=NULL)
{
disp(pr);
pr=pr->link;
}
}
destroy()
{
printf(“\n 进程 [%s] 已完成.\n“p->name);
free(p);
}
running(int c)
{
(p->rtime)+=c;
if(p->rtime>=p->ntime)
destroy();
else
{
if(p->rtime==4)
{
p->state=‘B‘;
printf(“\n ****当队列出现阻塞:\n“);
disp(p);
Sleep(1000);
p->state=‘w‘;
}
else{
p->state=‘w‘;
}
(p->super)--;
sort();
}
}
main()
{ char a;
int n;
int lenh=0;
char ch;
printf(“\n********************************************“);
printf(“\n* 进程演示系统 *“);
printf(“\n********************************************“);
printf(“\n 1.开始演示 2.退出程序 “);
printf(“\n********************************************“);
printf(“\n 请选择(1~2)“);
a=getche();
switch(a)
{case ‘1‘:
int c;
printf(“\n 请输入轮转时间片“);
scanf(“%d“&c);
input();
len=space();
while((len!=0)&&(ready!=NULL))
{
h++;
printf(“\n 执行次数:%d \n“h-1);
p=ready;
ready=p->link;
p->link=NULL;
p->state=‘R‘;
check();
running(c);
}
ch=getchar();
printf(“\n\n 进程已经完成.\n“);
ch=getchar();
case‘2‘: exit(0);
default: n=0;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 50176 2009-06-30 21:12 进程管理\试验\Cpp1.ncb
文件 2194 2009-06-06 21:48 进程管理\试验\Cpp1.plg
文件 3026 2009-06-06 21:48 进程管理\试验\Cpp1.cpp
文件 203 2009-06-07 18:21 进程管理\试验\Cpp1.sln
..A..H. 6656 2009-06-07 18:21 进程管理\试验\Cpp1.suo
文件 3377 2009-06-30 21:08 进程管理\试验\Cpp1.dsp
文件 48640 2009-06-30 21:12 进程管理\试验\Cpp1.opt
文件 516 2009-06-30 21:12 进程管理\试验\Cpp1.dsw
文件 222208 2009-06-30 21:08 进程管理\试验\Debug\vc60.idb
文件 77824 2009-06-06 21:48 进程管理\试验\Debug\vc60.pdb
文件 3560636 2009-06-06 21:48 进程管理\试验\Debug\Cpp1.pch
文件 196689 2009-06-06 21:48 进程管理\试验\Debug\Cpp1.exe
文件 484352 2009-06-06 21:48 进程管理\试验\Debug\Cpp1.pdb
文件 199680 2009-06-06 21:48 进程管理\试验\Debug\Cpp1.ilk
文件 22788 2009-06-06 21:48 进程管理\试验\Debug\Cpp1.obj
文件 39 2009-07-07 10:53 进程管理\说明.txt
目录 0 2009-07-07 10:51 进程管理\试验\Debug
目录 0 2009-07-07 10:51 进程管理\试验
目录 0 2009-07-07 10:53 进程管理
----------- --------- ---------- ----- ----
4879004 19
相关资源
- 进程同步与互斥C++
- C++ 进程内存搜索,特征码极速定位,
- 生产者消费者问题源码-MFC实现-进程模
- 操作系统实验 进程调度 高响应比优先
- 嗜睡的理发师进程同步与实现c++
- RTX与Windows进程通信互斥对象+共享内存
- 进程调度模拟算法C++实现
- 进程管理模拟 VC++ mfc实现
- 操作系统课设源代码 模拟进程的并
- 操作系统进程间通信,用mfc实现
- C++ > (开源) Ring3下的DLL注入工具
- 进程/作业调度:时间片轮转调度算法
- 操作系统课程设计:进程/作业调度
- 操作系统 进程调度 多级队列反馈
- 《基于LINUX的C++》教程课件,有详细的
- 操作系统八大调度算法c/c++实现
- 操作系统概念:进程调度算法FCFS、
- 获取进程信息和计算进程文件的MD5码
- IPTables(显示进程所使用的端口和远程
- VC进程杀手
- MFC两进程间内存共享源码
- 操作系统进程调度先来先服务、短进
- 操作系统课程设计 实现段页式存储管
- 操作系统进程调度模拟算法
- 操作系统 短进程调度算法 c语言文档
- 进程调度模拟实验
- C语言编写Socket编写进程间传文件
- 生产者与消费者 进程的同步与互斥模
- 进程调度 时间片轮转调度算法源代码
- 基于优先级调度进程算法的实现C语言
评论
共有 条评论