实验一进程创建与撤销
更新时间:2023-05-21 05:19:01 阅读量: 实用文档 文档下载
#include<iostream>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#include<iomanip>
using namespace std;
typedef struct QNode
{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct PCB
{
char NAME[20];
long ID;
float TIME;
int PRIORITY;
}PCB;
PCB pcb[100];
typedef struct LinkQueue
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
LinkQueue R;//消息缓冲队列
int N,m;//N为当前进程数,m用来存放用户是否返回主菜单的选择
void menu();
int InitQueue()//就绪队列初始化
{
R.front=R.rear=(QueuePtr)malloc(sizeof(QNode));
if(!R.front)
exit(-2);
R.front ->next =NULL;
return 1;
}
void returnMenu()
{
cout<<endl<<"是否回到主菜单(1.是,2.否)"<<endl<<"请选择:";
cin>>m;
if(m==1)
menu();
else if(m==2)
exit(0);
}
void create()//进程创建
{
//pcb[0].ID =0;
char name[20];
long id;
float time;
int priority;//定义这些变量用来接收用户输入的进程信息
QNode *p;//用来存放缓冲队列的指针
cout<<"请输入要创建进程的数目:";
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"进程ID:";
cin>>id;
for(int j=n-(i-1);j<n;j++)
{
while(id==pcb[j].ID)
{
cout<<"进程ID已存在"<<endl;
cout<<"进程ID:";
cin>>id;
}
}
cout<<"进程名:";
cin>>name;
cout<<"运行时间:";
cin>>time;
cout<<"优先级:";
cin>>priority;
N++;//保存当前就绪进程数
strcpy(pcb[N].NAME,name);
pcb[N].ID =id;
pcb[N].TIME =time;
pcb[N].PRIORITY =priority;
p=(QueuePtr)malloc(sizeof(QNode));//插入就绪队列
if(!p)
exit(-2);
p->data=N;
p->next=NULL;
R.rear->next=p;
R.rear=p;
}
for(int i=1;i<=N;i++)//按优先级排队
{
for(int j=i+1;j<=N;j++)
if(pcb[i].PRIORITY<pcb[j].PRIORITY)
{
pcb[0]=pcb[i];
pcb[i]=pcb[j];
pcb[j]=pcb[0];
}
}
returnMenu();
}
void kill()//进程终止
{
long id;
QNode *p;
cout<<"请输入要终止的进程ID:";
cin>>id;
p=R.front ;
if(p==NULL) cout<<"就绪进程为空!";
while(p->next!=NULL)//遍历就绪队列
{
if(id==pcb[p->next->data].ID)
{
p->next =p->next->next ;
if(p->next==NULL)//说明只有一个进程就绪
{
R.rear =p;//队列为空的条件
}
while(p->next!=NULL)
{
p->next ->data --;
pcb[p->next->data]=pcb[p->next->data+1];
p=p->next ;
}
if(R.front->next==NULL)
{
R.front =R.rear;//只有一个就绪进程,删除后变空队列
}
N--;
break;
}
p=p->next ;
}
returnMenu();
}
void display()
{
QNode *p;
p=R.front;
cout<<"ID"<<" "<<"名字"<<" "<<"运行时间"<<" "<<"优先级"<<endl;
while(p->next!=NULL)//遍历就绪队列
{
cout<<pcb[p->next->data].ID<<" "<<pcb[p->next->d
ata].NAME<<" "<<pcb[p->next->data].TIME <<" "<<pcb[p->next->data].PRIORITY<
<endl;
p=p->next ;
}
returnMenu();
}
void main()
{
InitQueue();
menu();
}
long c;
void menu()
{
system("cls");
QNode *p;//消息队列的结点指针
p=R.front;
cout<<""<<"进程创建与撤销"<<endl;
cout<<endl<<"1.进程创建"<<endl;
cout<<"2.进程撤销";
cout<<endl<<"3.就绪进程"<<endl;
int choice;
cout<<"请选择:&
quot;;
cin>>choice;
switch(choice)
{
case 1:create();break;
case 2:kill();break;
case 3:display();break;
default :exit(0);
}
}
正在阅读:
实验一进程创建与撤销05-21
福建省建筑工程标准勘察招标文件(2018年版)专用本 - 图文01-24
大学生职业生涯规划《成就故事》03-05
论信托法与物权法的关系01-17
小学推广普通话倡议书06-06
脉冲除尘器的PLC控制04-20
电气设备检修停送电工作票规定(标准版)04-16
三级训练试题正确答案01-16
高度责任心主要表现在以下三个方面09-21
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 撤销
- 进程
- 创建
- 实验
- 立场文件--核问题
- _社区支持农业_模式的统筹城乡经济发展作用论析_张红
- 私募股权基金法律服务
- 树童英语天河体育中心 【PRT教研】继往开来,蓄势待发——PRT项目组回访天河区华阳小学
- 一例非完整约束轮式移动机器人控制系统的设计
- 二、团委学生会工作概述
- (新版)环保监理实施细则
- 关于新医改形势下公立中小医院的几点思考
- 中国云计算产业发展前景及投资分析报告2016-2022年
- 钢箱梁安装安全专项施工方案
- 家电企业“家电下乡”营销策略浅析
- 市农业局内设机构主要职能及岗位职责
- 水泥混凝土面板 施工方案
- 中石化招聘考试《创新能力》相关知识
- 初三 二模 优秀作文
- 寒假 安全教育讲稿
- Dell 服务器 R710磁盘阵列配置手册
- 个人博客系统项目毕业设计论文
- 当代大学生如何继承与弘扬革命精神
- 同望科技清单计价软件