进程创建与撤消_第1页
进程创建与撤消_第2页
进程创建与撤消_第3页
进程创建与撤消_第4页
进程创建与撤消_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上专心-专注-专业实验一:进程创建与撤消(模拟)实验一:进程创建与撤消(模拟)一、一、实验目的实验目的1、 加深对进程概念的理解和进程创建与撤消算法;2、 进一步认识并发执行的实质。二、二、实验内容实验内容本实验完成如下三个层次的任务:(1)系统级以普通用户身份认识 windows 的进程管理。通过windows 的“任务管理器”观察进程的状态,进行进程的创建、切换和撤销。文档收集自网络,仅用于个人学习(2)语言级以普通程序员身份认识高级语言 VC+/Java/C#的进程创建与撤销工具。(3)模拟级以 OS 设计师身份编程模拟实现进程创建与撤销功能,并在屏幕上观察进程活

2、动的结果。三、三、实验步骤实验步骤1、windows 的进程管理当前状态切换前切换后撤销2、VC+进程创建与撤销工具3、进程创建与撤销的模拟实现(1)总体设计:数据结构定义:结构体 PCB:进程名、ID、运行时间、优先级等,队列的排序按创建时间或优先级排序。PCB 空间结构体 PCB 数组文档收集自网络,仅用于个人学习就绪队列指针空队列指针函数CREATE()进程创建:从 PCB 空间申请一个空 PCB,填入进程参数,插入就绪队列;KILL()进程终止:将指定的就绪进程移出就绪队列,插入空队列;就绪队列输出函数 Display()输出就绪队列中的进程信息,以便观察创建或撤消活动的结果;精选优质

3、文档-倾情为你奉上专心-专注-专业主函数 Main()功能选择、输入新进程参数、调用创建函数、输出就绪队列;输入进程名称、调用终止函数、输出就绪队列;文档收集自网络,仅用于个人学习主界面设计:进程创建、进程撤销、就绪队列显示菜单;数据输入和就绪队列显示区。功能测试:从显示出的就绪队列状态,查看操作的正确与否。(2)详细设计:数据结构定义:结构体 PCB:struct PCB char NAME10;long ID;float TIME;int PRIORITY;PCB pcb100;函数设计给出 CREATE()、KILL()、Display()、Main()的流程图描述;以 CREATE()

4、为例如下:进程已存在输入进程数For 循环输入参数插入就绪队优先级大到小排序Menu()是N+1否(3)调试与测试:列出你的测试结果,包括输入和输出。四、四、实验总结实验总结通过这次试验了解到了进城创建与撤销,并对以前的知识进行了复习,精选优质文档-倾情为你奉上专心-专注-专业通过使用结构体和指针,实行进程的创建与撤销,我的程序设计能力得到提高,文档收集自网络,仅用于个人学习五、附录五、附录带注释的源程序。#include#include#include#include#define OK 1#define ERROR 0#define OVERFLOW -2struct PCB /结构体 P

5、CBchar NAME20;long ID;float TIME;int PRIORITY;PCB pcb100; /结构体数组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)mall

6、oc(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; return OK;精选优质文档-倾情为你奉上专心-专注-专业 void create()/进程创建 char name20;long id;float time; int priority; int n;QNode *p;coutn; for

7、(int i=1;i=n;i+)coutid; for(int j=i-1;j=N;j+)while(id=pcbj.ID) cout进程 ID 已存在endl; coutid; coutname;couttime;coutpriority; N+;/保存当前就绪进程数strcpy(pcbN.NAME,name);pcbN.ID =id;pcbN.TIME =time;pcbN.PRIORITY =priority; p=(QueuePtr)malloc(sizeof(QNode);/插入就绪队列 if(!p) exit(OVERFLOW); p-data=N; p-next=NULL; R.

8、rear-next=p; R.rear=p; for(i=1;i=N;i+)/按优先级排队for(int j=i+1;j=N;j+)if(pcbi.PRIORITYpcbj.PRIORITY) pcb0=pcbi; pcbi=pcbj; pcbj=pcb0;menu();void kill()/进程终止 long id; QNode *p;精选优质文档-倾情为你奉上专心-专注-专业 coutid;p=R.front-next;if(p=NULL) coutnext =NULL;N-;coutnext-next =NULL)p-next =NULL;R.rear =p;N-;coutnext ;

9、文档收集自网络,仅用于个人学习if(id=pcbp-data.ID) if(R.front=R.rear) coutendldata=pcbp-data+1;/修改 PCB 数组里的值 if(p-next -next =NULL) p-next =NULL;R.rear =p;coutnext; N-; break; p=p-next ;menu(); void display()QNode *p;p=R.front-next; coutID 名字 运行时间 优先级endl;文档收集自网络,仅用于个人学习while(p!=NULL) coutdata.IDdata.NAME data.TIME data.PRIORITYnext ;menu();void exit()/退出系统;exit(0);void main() InitQueue();pcb0.ID =0;menu();void menu()coutn1.进程创建n2.进程撤销n3.就绪队列显示n4.退出en

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论