进程管理系统操作系统课程设计报告Word文档格式.docx
《进程管理系统操作系统课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《进程管理系统操作系统课程设计报告Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
1.根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么。
2.根据实现的功能,划分出合理的模块,明确模块间的关系。
3.编程实现所设计的模块。
4.程序调试与测试。
采用自底向上,分模块进行,即先调试低层函数。
能够熟练掌握调试工具的各种功能,设计测试数据确定疑点,通过修改程序来证实它或绕过它。
调试正确后,认真整理源程序与其注释,形成格式和风格良好的源程序清单和结果;
5.结果分析。
程序运行结果包括正确的输入与其输出结果和含有错误的输入与其输出结果。
6.编写课程设计报告;
设计报告要求:
A4纸,详细设计部分主要叙述本人的工作容
设计报告的格式:
(1)封面(题目、指导教师、专业、班级、、学号)
(2)设计任务书
(3)目录
(4)需求分析
(5)概要设计
(6)详细设计(含主要代码)
(7)调试分析、测试结果
(8)用户使用说明
(9)附录或参考资料
四、进度安排
设计在学期的第15、16周进行,时间安排如下:
序号
容
时间(天)
1
系统分析
2
设计
3
编码、测试
5
4
验收
合计
10
五、成绩评定办法
成绩分为优(A)、良(B)、中(C)、与格(D)、不与格(E)五个等级。
其中设计表现占30%,验收40%,设计报告占30%。
1.设计表现:
教师可依据学生使用实验环境的能力、观察和分析实验现象的能力、实验结果和数据的正确性以与学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。
2.验收:
要求学生演示设计的程序,讲解设计思路、方法、解决的主要问题,教师根据具体情况向每个学生提问2至3个问题。
3.设计报告:
学生设计后应按时完成设计报告。
要求:
容充实、写作规、项目填写正确完整、书面整洁等。
一、需求分析………………………………………………6
1.进一步理解进程的基本概念…………………………6
2.加强进程管理的设计与算法…………………………6
3.观察和管理进程………………………………………6
二、概要设计………………………………………………6
1.实验原理………………………………………………6
2.数据结构………………………………………………6
3.算法描述………………………………………………6
4.算法流程图……………………………………………7
三、详细设计………………………………………………8
1.源程序代码……………………………………………8
四、调试分析与测试结果………………………………15
五、用户与用说明………………………………………17
六、附录或参考资料……………………………………17
一、需求分析
1.进一步理解进程的基本概念。
2.加强进程管理中主要数据结构的设计与进程调度算法。
3.观察和管理进程——系统在运行过程中可显示或打印各进程的状态与有关参数的变化情况。
二、概要设计
1.实验原理
定义PCB的数据结构,用链表的形式管理进程,采用多级反馈队列调度的算法模拟进程的控制,最终完成有创建、撤销、调度、阻塞、唤醒进程等功能。
2.数据结构
类:
classqueuenode
classqueue
函数:
voidenqueue(char&
item);
chardequeue();
voiddel(charitem);
voiddisplay();
intfind(charitem);
intisempty()
3.算法描述
1-1、创建进程,根据进程的顺序依次放入就绪队列。
2-1、执行进程——管理系统将就绪队列中的第一个进程调入运行队列;
2-2、将阻塞队列中进程调入就绪队列;
2-3、封锁进程——管理系统将就绪队列中的第一个进程调入阻塞队列;
2-4、结束进程——管理系统撤销所选进程;
2-5、结束程序。
4.算法流程图
输入进程信息
执行进程
将阻塞队列的进程调入就绪队列
封锁进程
结束进程
退出操作
输入要进行操作的功能选项
进行所选进程操作
选1且进程正在执行
Y
操作不能执行
选择#
N
选择5
开始
结束
三、详细设计
1.源程序代码
#include<
iostream.h>
{
friendclassqueue;
private:
chardata;
queuenode*link;
queuenode(chard=0,queuenode*l=NULL):
data(d),link(l){}
};
public:
queue():
rear(NULL),front(NULL){};
~queue();
voidenqueue(char&
chardequeue();
voiddel(charitem);
voiddisplay();
intfind(charitem);
intisempty(){returnfront==NULL;
}
queuenode*front,*rear;
queue:
:
~queue()
queuenode*p;
while(front!
=NULL)
{
p=front;
front=front->
link;
deletep;
}
voidqueue:
enqueue(char&
item)
if(front==NULL)front=rear=newqueuenode(item,NULL);
elserear=rear->
link=newqueuenode(item,NULL);
charqueue:
dequeue()
queuenode*p=front;
charf=p->
data;
deletep;
returnf;
display()
queuenode*p;
p=front;
while(p!
{cout<
<
p->
data<
"
->
;
p=p->
cout<
NULL"
find(charitem)
{queuenode*w;
w=front;
M:
while(w!
if(item==w->
data)
{return1;
break;
else
{w=w->
gotoM;
if(w==NULL)return0;
del(charitem)
{queuenode*q,*b;
q=front;
while(q->
data!
=item)
{b=q;
q=q->
}
if(q==front){front=front->
deleteq;
elseif(q==rear){rear=b;
rear->
link=NULL;
deleteq;
else{b->
link=q->
voidmain()
intn;
chara;
\n[-----------操作系统之进程管理模拟系统(先来先服务算法)------------]\n"
endl;
queueexecute,ready,clog;
//执行,就绪,阻塞
\n[-------请用户输入进程名与其到达cpu的顺序(结束进程数请输入x)------]\n"
charr;
r='
x'
for(inti=0;
i++)
{
chare[100];
cout<
输入进程名:
"
cin>
>
e[i];
if(e[i]!
=r)
ready.enqueue(e[i]);
else
break;
A:
\n[------------请(学号)用户()选择操作------------]\n"
\n[1、执行进程……2、将阻塞队列中进程调入就绪队列………]\n"
\n[3、封锁进程…………………4、结束进程…………………]\n"
\n[5、退出程序…………………………………………………]\n选项:
cin>
n;
if(n==1)
if(!
execute.isempty())
已经有进程在执行!
此操作不能执行\n"
charw;
如果要继续请输入#;
如果要退出按其它任意键"
要选择的操作:
w;
if(w=='
#'
)gotoL;
elsegotoE;
if(!
ready.isempty())
{
a=ready.dequeue();
if(a!
execute.enqueue(a);
gotoL;
elsegotoL;
elseif(n==2)
clog.isempty())
a=clog.dequeue();
if(a!
ready.enqueue(a);
gotoL;
elsegotoL;
elseif(n==3)
execute.isempty())
a=execute.dequeue();
clog.enqueue(a);
elseif(n==4)
\n请输入要结束的进程名:
a;
if(execute.find(a)||ready.find(a)||clog.find(a))
if(execute.find(a))
{execute.del(a);
elseif(ready.find(a))
{ready.del(a);
if(clog.find(a))
{clog.del(a);
\n结束进程成功!
\n"
}
没有此进程"
gotoL;
L:
if(n==1||n==2||n==3||n==4)
执行队列"
execute.display();
就绪队列"
ready.display();
cout<
阻塞队列"
clog.display();
gotoA;
else
if(n==5);
else
cout<
\n你的输入错误!
gotoA;
E:
}
四、调试分析与测试结果
五、用户使用说明
用户通过VC++即可运行改程序。
需说明的是主函数是实现进程管理的入口,在入口处需输入进程名称,然后输入进程的状态选项,如果完毕后,则通过相应的调度算法进行进程机的调度,同时也将结果显示在屏幕上。
本次实验通过模拟多个进程的同步运行,实现了进程就绪,运行,阻塞三个状态的转换,并可以根据用户要求改变进程的状态。
六、附录与参考资料
[1]王红,《操作系统实训》,中国水利水电,2005
[2]红光,《UNIX操作系统试验教程》,机械工程,2006
[3]史美林,《操作系统教程》,清华大学,2006
[4]殷兆麟,《计算机操作系统》,大学,2007
[5]严蔚敏,《数据结构(C语言版)》,清华大学,2007