- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
. . .
目录
TOC \o 1-3 \h \z \u 一、设计系统目的 1
二、设计系统要求 1
三、 系统分析 1
四、系统设计 1
五、程序设计流程图 5
六、 源程序清单 5
七、调试过程中的问题及系统测试情况 12
1、调试过程 12
2、系统测试结果 12
八、 系统设计总结 14
一、设计系统目的
本设计的目的是加深对进程概念及进程管理各部分内容的理解,熟悉进程管
理中主要数据结构的设计及进程调度算法、进程控制机构、同步机构及通讯机构实施。
二、设计系统要求
设计一个允许n个进程并发运行的进程管理模拟系统。该系统包括有简单的进
程控制、同步与通讯机构,其进程调度算法可任意选择。每个进程用一个PCB表示,其内容根据具体情况设置。各进程之间有一定的同步关系可选。系统在运行过程中应能显示或打印各进程的状态及有关参数的变化情况,以便观察诸进程的运行过程及系统的管理过程。
三、 系统分析
本系统实现的功能有
1、进程控制和同步等
可以控制进程的就绪执行和阻塞三种状态等基本功能。
2、进程调度
调度算法采用的是先来先服务算法。
3、进程在运行过程中状态变化的屏幕输出
输出的内容包括—就绪的进程队列,当前cup正在执行的进程,被阻塞的进程队
列。
四、系统设计
本系统所包括的数据结构是对列类
本系统由于需要输出就绪队列,执行队列,阻塞对列,故需要利用对列来实现。
最好利用队列类来实现,这样可以充分利用类的继承来简化程序。
队列类的定义如下
class queue
{
public:
queue():rear(NULL),front(NULL){};
~queue();
void enqueue( char item);
char dequeue();
void del(char item);
void display();
int find(char item);
int isempty(){return front==NULL;}
private:
queuenode *front,*rear;
};
队列类的析构函数如下
queue::~queue()
{
queuenode * p;
while(front!=NULL)
{
p=front;front=front-link;delete p;
}
队列类的成员函数的定义如下:
void queue::enqueue(char item)
{
if(front==NULL)
front=rear=new queuenode(item,NULL);
else
rear=rear-link=new queuenode(item,NULL);
}
char queue::dequeue()
{
queuenode *p=front;
char f=p-data;
front=front-link;
delete p;
return f;
}
void queue::display()
{
queuenode *p;
p=front;
while(p!=NULL)
{
coutp-data-;
p=p-link;
}
coutNULL;
}
queue::find(char item)
{
queuenode *w;
w=front;
M:while(w!=NULL)
{
if(item==w-data)
{
return 1;
break;
}
else
{
w=w-link;
goto M;
}
}
if(w==NULL)
return 0;
}
void queue::del( char item)
{
queuenode *q,*b;
q=front;
while(q-data!=item)
{
b=q;
q=q-link;
}
if(q==front)
{
front=front-link;
delete q;}
else
if(q==rear)
{
rear=b;rear-link=NULL;delete q;}
els
文档评论(0)