一、需求分析
1.进一步理解进程的基本概念。
2.加强进程管理中主要数据结构的设计及进程调度算法。 3.观察和管理进程——系统在运行过程中可显示或打印各进程的状态及有关参数的变化情况。
二、概要设计
1.实验原理
定义PCB的数据结构,用链表的形式管理进程,采用多级反馈队列调度的算法模拟进程的控制,最终完成有创建、撤销、调度、阻塞、唤醒进程等功能。
2.数据结构
类:
class queuenode class queue 函数:
void enqueue( char &item); char dequeue(); void del(char item); void display(); int find(char item); int isempty()
3.算法描述
1-1、创建进程,根据进程的顺序依次放入就绪队列。
2-1、执行进程——管理系统将就绪队列中的第一个进程调入运行队列; 2-2、将阻塞队列中进程调入就绪队列;
2-3、封锁进程——管理系统将就绪队列中的第一个进程调入阻塞队列; 2-4、结束进程——管理系统撤销所选进程; 2-5、结束程序。
4. 算法流程图
开始 输入进程信息 1 执行进程 2 将阻塞队列的进程调入就绪队列 3 封锁进程 4 结束进程 5 退出操作 输入要进行操作的功能选项 进行所选进程操作 Y N 选择5 选1且进程正在执行 N Y 操作不能执行 Y 选择# N 结束
三、详细设计
1.源程序代码 #include<> class queuenode {
friend class queue;
private: };
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;} char data; queuenode * link;
queuenode (char d=0,queuenode * l=NULL): data(d),link(l){}
private: };
queue::~queue() {
queuenode *front,*rear;
}
queuenode * p; while(front!=NULL) { }
p=front;front=front->link;delete p;
void queue::enqueue(char &item) { }
char queue::dequeue() {
queuenode *p=front;
if(front==NULL)front=rear=new queuenode(item,NULL); else rear=rear->link=new queuenode(item,NULL);
char f=p->data;front=front->link; }
void queue::display() { }
queuenode *p; p=front; while(p!=NULL)
{ cout<
cout<<\delete p; return f;
queue::find(char item) { queuenode *w; w=front;
M:while(w!=NULL) {
if(item==w->data) }
void queue::del( char item) { queuenode *q,*b; q=front; }
while(q->data!=item)
{b=q; q=q->link; }
{ return 1;break; } else
{ w=w->link; } }
if(w==NULL) return 0;
goto M;
if(q==front) {front=front->link; delete q;} else if(q==rear) {rear=b;rear->link=NULL;delete q;} else {b->link=q->link; delete q;}