进程管理系统设计_第1页
进程管理系统设计_第2页
进程管理系统设计_第3页
进程管理系统设计_第4页
进程管理系统设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、word 专业资料目录一、设计系统目的 .1二设计系统要求.1三、系统分析.1四、系统设计.2五、程序设计流程图 .6六、源程序清单.7七、调试过程中的问题及系统测试情况 .1.7仁调试过程.172、系统测试结果.1.7八、系统设计总结.1.8.word 专业资料一、设计系统目的本设计的目的是加深对进程概念及进程管理各部分内容的理解,熟悉进程管理中主要数据结构的设计及进程调度算法、进程控制机构、同步机构及通讯机构实施。二设计系统要求设计一个允许n个进程并发运行的进程管理模拟系统。该系统包括有简单的进 程控制、同步与通讯机构,其进程调度算法可任意选择。每个进程用一个PCB表示,其内容根据具体情况

2、设置。各进程之间有一定的同步关系可选。系统在运行过程中应 能显示或打印各进程的状态及有关参数的变化情况,以便观察诸进程的运行过程及系 统的管理过程。三、系统分析本系统实现的功能有1、 进程控制和同步等可以控制进程的就绪执行和阻塞三种状态等基本功能。2、 进程调度调度算法采用的是先来先服务算法。3、进程锂彳葩程中状态变化的屏総出输出的内容包括 一就绪的进程队列,当前cup正在执行的进程,被阻塞的进程队列。word 专业资料四、系统设计本系统所包括的数据结构是对列类本系统由于需要输出就绪队列,执行队列,阻塞对列,故需要利用对列来实现。最好利用队列类来实现,这样可以充分利用类的继承来简化程序。队列类

3、的定义如下class queuepublic:queue():rear(NULL),fro nt(NULL);queue();void enq ueue( char &item);char dequeue。;void del(char item);void display。;int fin d(char item);int isempty()retur n fron t=NULL;private:queue node *fron t,*rear;队列类的析构函数攵吓queue:queue() queuenode * p;word 专业资料while(fro nt!=NULL)p=fro

4、n t;fro nt=fron t-li nk;delete p;队列类的成员函数的定义如下:void queue:e nq ueue(char &item)if(fr on t=NULL)fron t=rear =new queue no de(item,NULL);elserear=rear-li nk=new queue no de(item,NULL);char queue:dequeue()queue node *p=fro nt;char f=p-data;fron t=fr on t-li nk;delete p;return f;void queue:display()

5、word 专业资料queue node *p;p=fro nt;while(p!=NULL)coutdata; p=p-li nk;coutdata)return 1;break;elseword 专业资料w=w-li nk;goto M;if(w=NULL)return 0;void queue:del( char item)queue node *q,*b;q=front;while(q-data!=item)b=q;q=q-li nk;if(q=fro nt)fron t=fr on t-li nk;delete q;else if(q=rear)word 专业资料rear=b;rear

6、-li nk=NULL;delete q;elseb-li nk=q-li nk;delete q;五、程序设计流程图word 专业资料六、源程序清单源删下#in cludeclass queue;class queue no defriend class queue; /*定义队列的友类*/private:char data;queue node * link;queue node (char d=0,queue node * l=NULL): data(d),li nk(l)word 专业资料;class queue/*定义队列类以利于执行就绪*/*阻塞队列的继承*/public:queu

7、e():rear(NULL),front(NULL);/*构造函数*/queue();void enq ueue( char &item);char dequeue。;void del(char item);void display。;int fin d(char item);int isempty()return front=NULL;/*判断队列是否为空*/private:queue node *fron t,*rear;/*队列的头指针和指向下一结点的指针*/;queue:queue()/*定义析构函数*/queuenode * p;while(fro nt!=NULL)p=fr

8、on t;fr ont=fron t-li nk;delete p;void queue:e nq ueue(char &item)I*定义入队列函数*/word 专业资料if(fron t=NULL)fron t=rear= new queue no de(item,NULL);elserear=rear-li nk=new queue no de(item,NULL);char queue:dequeue()/*出队列函数*/queue node *p=fr ont;char f=p-data;fr ont=fron t-li nk;delete p;return f;void q

9、ueue:display()queuenode *p;p=front;while(p!=NULL)/*如果队列非空输出数鮮使指针捋向*/*下一数据*/ coutdata;p=p-li nk;coutdata) return 1;break;else w=w-li nk;goto M;if(w=NULL)return 0;void queue:del( char item)/*删除某值的函数*/queue node *q,*b;q=front;word 专业资料while(q-data!=item)b=q;q=q-li nk;if(q=fr ont)front=fron t-li nk; del

10、ete q; elseif(q=rear)rear=b;rear-li nk=NULL;delete q;elseb-li nk=q-li nk;delete q;void mai n()int n;char a;queue zhix in g,jiuxu,zuse;coutn*注意:*n1.若想结束输入请输入R。n2.本模拟系统进程调度采用的是先来先服务算法输入进程名coutn*进程管理小模拟系统*n endl;word 专业资料的顺序即为到达cpu的顺序nendl;char r;r=R;for(i nt i=O;i+)char e100;cout输入进程名: ei;if(ei!=r)jiu

11、xu.enqueue(ei);/*将输入插入就绪队列*/elsebreak;A: coutn请选择鮮1、执行进程2、将阻塞队列中进程调入就绪队列3、珈进程4、繰进程5、退出程序。;cinn;if(n=1)if(!zhixi ng.isempty ()cout已经有进程鉀行,此操作不能执行n;char w;coute ndl;word 专业资料cout如果要继续请输入#如果要退岀按其它任意键e ndl;cout w;if(w=#)goto L;/*无条件转移至L*/elsegoto E;elseif(!jiuxu.isempty()a=jiuxu.dequeue();if(a!=r)zhix i

12、n g.e nq ueue(a);goto L;elsegoto L;elseif(n=2)word 专业资料if(!zuse.isempty()a=zuse.dequeue (); if(a!=r)jiuxu.e nq ueue(a);goto L;elsegoto L;elseif(n=3)if(!zhixi ng.isempty()a=zhix in g.dequeue ();if(a!=r)zuse.e nq ueue(a);goto L;elsegoto L;elseword 专业资料if(n=4)coutn请输入要结束的进程名;cin a;if(zhix in g.fi nd (a

13、)|jiuxu.fi nd (a)|zuse.fi nd (a)/*有a若有结束进理a*/if(zhix in g.fi nd(a)zhix in g.del(a);elseif(jiuxu.fi nd(a)jiuxu.del(a);if(zuse.fi nd(a)zuse.del(a);coutn纟进程成功n e ndl;goto L;/*查找所有队列中是否含*/word 专业资料elsecout没有此进程endl;gotoL;L:if(n=1| n=2| n=3| n=4)cout执行队列endl;zhixi ng.display();coute ndl;cout就绪队列endl;jiux

14、u.display();coute ndl;cout阻塞队列endl;zuse.display();coute ndl;goto A;elseif(n=5);elsegoto A;E:;广输出执行就绪阻塞队列*/word 专业资料七、调试过程中的问题及系统测试情况仁调试过程调试时一开始老是出错,尤其是c语言和VC+有区别的地方。比如类的定义后要加分号,而函数的定义则不用。在调试时,有时候出现警告信息,有时候没有。可能是因为机房和宿舍的编译器的版本不同导致的吧。在调试的过程中,出现的问题不是很多, 主要是因为本系统采用的数据结构比较少,而且进程调度算法是先来先服务算法, 用程序比较容易实现。 若

15、用高响应比优先等算法, 估计 难度会比这大。2、系统测试结果进入系统,首先系统会有提示信息,提示信息如下:1按系统的提示输入数据以后,输入结束符按enter键后系统如下图所示:執MW A讪貉R菊入进骼C锹进程名:D和憐务iF献勰名;GWAWS: E懿择辭L肺勰2.雜塞队艸进程调入藏卿、封锁幌 4、聯般 5、退出程策如上图所示,如果我们输入1按Enter键以后结果如下图所示,以此类推,按入其 他的数字进行其他操作:word 专业资料1八、系统设计总结通过这次课程设计,使我们对操作系统有了更进一步的认识和了解,实践,要通过不断的实践才能更好地学习它,我们也发现我们的好多不足之处,有所改进;因为是亲

16、自在做,所以每一步比起学习理论知识更管用多了。在做的过程中,不 光是收获本课的知识,也了解了不少计算机的一些我们不太会关注的东西。如什么叫进程, 它是如何工作的,为什么会有它的产生呢!平时,我们都知道计算机会莫名其妙的很卡,那是因为什么呢?就是因为进程,是因为我们打开的软件太多了,我们都知道计算机不是同时一起对所有运行界面一起实现,而是它在用很快速的速度对我们操作的那一块出现的执行, 这种速度可以让我们感觉到是同时在运作的。作为学习这个专业的学生,我觉得这些认识都是我们最基本的,所以深入学习进程如何管理和工作情况是必须的。再有就是对操作系统的一些系统调用不太了解,还有对操作系统中经常出现的错误

17、也不了解,所以在以后的学习过程中,我们会更加注视实践操作。在课程设计过程中,收获知识,提高能力的同时,我们也懂得怎么样去制定、 实现计划, 课程设计是培养学生综合运用所学知识发现提出分析和解决实际问题锻炼实践能力的重要 环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,自从要想学好它要重在word 专业资料拿到题目到完成整个编程,从理论到实践,可以学到很多很多的东西, 同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的, 只有把所学的理论知识与实践相结合起来,在设计的过程中发现自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,在设计中我们遇到了很多编程问题,最后在老师的辛勤指导下,我们慢慢的进入状态, 我们做的是一个进程调用的设计,内容包括很多。函数设计也是非常的复杂,所以设计程序一定要仔细,不容一点的马

温馨提示

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

评论

0/150

提交评论