文档介绍:中南大学
本科生课程设计(实践)任务书、设计报告
(计算机操作系统课程设计)
题目
调度算法的模拟
学生学号
学生姓名指导教师
学院
信息科学与工程学院
专业班级
指导老师
2013年12 月
一、实验任务
。
。
——系统在运行过程中可显示或打印各进程的状态及有关参数的变化情况。
二、实验设计思想
定义PCB的数据结构,用链表的形式管理进程,采用多级反馈队列调度的算法模拟进程的控制,最终完成有创建、撤销、调度、阻塞、唤醒进程等功能。
类:
class queuenode
class queue
函数:
void enqueue( char &item);
char dequeue();
void del(char item);
void display();
int find(char item);
int isempty()
1-1、创建进程,根据进程的顺序依次放入就绪队列。
2-1、执行进程——管理系统将就绪队列中的第一个进程调入运行队列;
2-2、将阻塞队列中进程调入就绪队列;
2-3、封锁进程——管理系统将就绪队列中的第一个进程调入阻塞队列;
2-4、结束进程——管理系统撤销所选进程;
2-5、结束程序。
4. 算法流程图
输入进程信息
执行进程
将阻塞队列的进程调入就绪队列
封锁进程
结束进程
退出操作
输入要进行操作的功能选项
1
2
3
4
5
进行所选进程操作
选1且进程正在执行
Y
操作不能执行
选择#
N
N
N
选择5
Y
Y
开始
结束
三、实验实现源代码
#include<>
class queuenode //定义队列数据结构
{
friend class queue;
private:
char data;
queuenode * link;
queuenode (char d=0,queuenode * l=NULL): data(d),link(l){}
};
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)
{ cout<<p->data<<"->";
p=p->link;
}
cout<<"NULL";
}
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!=