进程创建与撤消
更新时间:2024-01-23 03:05:01 阅读量: 教育文库 文档下载
- 不能触发进程撤消事件推荐度:
- 相关推荐
实验一:进程创建与撤消
一、实验目的
1、 加深对进程概念的理解和进程创建与撤消算法; 2、 进一步认识并发执行的实质。
二、实验内容
本实验完成如下三个层次的任务: (1)系统级—以普通用户身份认识windows的进程管理。通过windows的“任务管理器”观察进程的状态,进行进程的创建、切换和撤销。
(2)语言级—以普通程序员身份认识高级语言VC++/Java/C#的进程创建与撤销工具。
(3)模拟级—以OS设计师身份编程模拟实现进程创建与撤销功能,并在屏幕上观察进程活动的结果。
三、实验步骤
1、windows的进程管理 当前状态
切换前
1
切换后
2
撤销
2、VC++进程创建与撤销工具 3、进程创建与撤销的模拟实现 (1)总体设计: ①数据结构定义:
结构体PCB:进程名、ID、运行时间、优先级等,队列的排序按创建时间或优先级排序。 PCB空间—结构体PCB数组
就绪队列指针 空队列指针 ②函数
CREATE()—进程创建:从PCB空间申请一个空PCB,填入进程参数,插入就绪队列;
KILL()—进程终止:将指定的就绪进程移出就绪队列,插入空队列; 就绪队列输出函数Display()—输出就绪队列中的进程信息,以便观察创建或撤消活动的结果;
主函数Main()—功能选择、输入新进程参数、调用创建函数、输出就绪队列;输入进程名称、调用终止函数、输出就绪队列;
3
③主界面设计:进程创建、进程撤销、就绪队列显示菜单;数据输入和就绪队列显示区。
④功能测试:从显示出的就绪队列状态,查看操作的正确与否。 (2)详细设计: ①数据结构定义: 结构体PCB: struct PCB {
char NAME[10]; long ID; float TIME; int PRIORITY;
};PCB pcb[100]; ②函数设计 给出CREATE()、KILL()、Display()、Main()的流程图描述; 以CREATE()为例如下:
输入进程数 For循环 N+1 优先级大到小排序 输入参数 是 进程已存在 否 (3)调试与测试:列出你的测试结果,包括输入和输出。
Menu() 插入就绪队 4
四、实验总结
5
通过这次试验了解到了进城创建与撤销,并对以前的知识进行了复习,通过使用结构体和指针,实行进程的创建与撤销,我的程序设计能力得到提高,
五、附录
带注释的源程序。 #include
#define OK 1 #define ERROR 0
#define OVERFLOW -2
struct PCB //结构体PCB {char NAME[20];
long ID;
float TIME; int PRIORITY;
};PCB pcb[100]; //结构体数组 typedef struct QNode //单链表 { int data;
struct QNode *next; }QNode,*QueuePtr;
typedef struct LinkQueue //链队列 { QueuePtr front; QueuePtr rear;
}LinkQueue;LinkQueue R,E; int N,m;// N为当前进程数
void menu();
int InitQueue()// 就绪队、空队的初始化
{ R.front=R.rear=(QueuePtr)malloc(sizeof(QNode)); E.front=E.rear=(QueuePtr)malloc(sizeof(QNode)); if(!R.front) exit(OVERFLOW); if(!E.front) exit(OVERFLOW); R.front->next=NULL;
E.front ->next =NULL;
6
return OK;
}
void create()//进程创建
{ char name[20];long id;float time; int priority; int n; QNode *p; cout<<\请输入要创建进程的数目:\
cin>>n;
cin>>id;
for(int i=1;i<=n;i++) { cout<<\进程ID:\
for(int j=i-1;j<=N;j++)
{ while(id==pcb[j].ID) { cout<<\进程ID已存在\ cout<<\进程ID:\cin>>id;
} }
cout<<\进程名:\
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(OVERFLOW); p->data=N; p->next=NULL; R.rear->next=p; R.rear=p;
}
for(i=1;i<=N;i++)//按优先级排队 { }
for(int j=i+1;j<=N;j++)
if(pcb[i].PRIORITY pcb[j]=pcb[0]; menu(); } void kill()//进程终止 7 { long id; QNode *p; cout<<\请输入要终止的进程ID:\ cin>>id; p=R.front->next; if(p==NULL) cout<<\就绪进程为空!\ while(p!=NULL) { if(id==pcb[N].ID)//终止进程是队列最后一个 { if(N==1) //队列中只有一个进程,且是终止进程 {R.front =R.rear;R.front ->next =NULL;N--;cout<<\进程已终else //队列中进程多个 { while(p!=NULL) {if(p->next->next ==NULL) {p->next =NULL;R.rear =p;N--;cout<<\进程已终止! \ } } p=p->next ; 止!\ } if(id==pcb[p->data].ID) { if(R.front==R.rear) cout< while(p!=NULL) { pcb[p->data]=pcb[p->data+1];//修改PCB数组里的值 if(p->next ->next ==NULL) {p->next =NULL;R.rear =p;cout<<\进程已终止!\ p=p->next; } N--; break; } p=p->next ; } menu(); } void display() { QNode *p; p=R.front->next; cout<<\名字\运行时间\优先级\ while(p!=NULL) { cout< \ \ \ 8 p=p->next ; } menu(); } void exit()//退出系统; {exit(0);} void main() { InitQueue(); } void menu() { cout<<'\\n'<<\进程创建\进程撤销\就绪队列显示\退出\ } int choice; cout<<\请选择:\cin>>choice; switch(choice) { case 1:create();break; case 2:kill();break; case 3:display();break; case 4:exit(); default :exit(); } pcb[0].ID =0; menu(); 9
正在阅读:
进程创建与撤消01-23
应用回归分析上机指导09-19
时髦白领的经典英语口语100句06-29
河南工程学院 2009- 2010学年第 2 学期线性代数B卷12-26
童言无忌的语录02-13
一年级数学上册10的认识和加减法测试题(新版)新人教版09-09
Java内存分配原理09-12
IPv6 6PE和6VPE的实现和配置06-23
高职汽修专业模拟试卷(一) - 图文11-25
李建 化工原理课程设计 参考 - 图文05-12
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 撤消
- 进程
- 创建
- 《听话和说话》测试题2
- 中文数字图书馆检索
- 初中化学中考复习课前5分钟基础性小测的有效性的研究
- 2014现代教育技术总复习资料(精)
- 看图写话教案
- 大学生村官入职记
- 关于编制荧光陶瓷生产建设项目可行性研究报告编制说明
- 结构化面试问题库
- 检验项目参考范围与医学决定水平
- 私募基金管理人的声明与承诺合同协议书范本
- 2(科技风)对生物质锅炉管道高温腐蚀问题有效解决研究
- 商业发票(填写说明中英文对照客户参考版)
- 台府办〔2010〕73号-关于印发台山市小型建设工程承(发)包管理办法的通知
- 融资融券业务的二套考题及答案
- 管铺头小学冬季施工方案
- 高度重视加强领导 突出主题确保实效
- 模拟电子秤仿真实验报告 - 图文
- 北京市不动产登记档案管理暂行办法
- 华为EHS安全生产考试题
- 云计算系统运维高技能人才现状及需求、岗位能力及技能要求调研报告