操作系统原理进程管理器的模拟实现.docx
《操作系统原理进程管理器的模拟实现.docx》由会员分享,可在线阅读,更多相关《操作系统原理进程管理器的模拟实现.docx(11页珍藏版)》请在冰点文库上搜索。
操作系统原理进程管理器的模拟实现
数学与计算机学院
课程设计说明书
课程名称:
操作系统原理-课程设计
课程代码:
8404161
题目:
进程管理器的模拟实现
年级/专业/班:
学生姓名:
学 号:
开始时间:
2011年12月11日
完成时间:
2011年12月24日
课程设计成绩:
学习态度及平时成绩(30)
技术水平与实际能力(20)
创新(5)
说明书撰写质量(45)
总分(100)
指导教师签名:
年月日
《操作系统原理》课程设计任务书
学院名称:
数学与计算机学院课程代码:
_8404061__
专业:
计算机科学与技术年级:
2009
一、设计题目
进程管理器的模拟实现
二、主要内容
目的:
编程模拟实现进程管理器,加深对进程、程序概念掌握,并提高编程能力。
内容:
利用Windows相关编程工具,实现进程管理器的相关功能:
(1)显示当前正在运行的进程及其占用的资源
(2)可以对某一进程进行停止;
三、具体要求及应提交的材料
1、完成系统的需求分析:
包含功能需求、数据需求、性能需求等。
2、完成系统设计:
包含系统概要设计(软件结构图)及详细设计(画出流程图)。
3、测试:
编写合适的测试用例完成系统的测试工作并分析结果。
4、完成后应上交的材料:
课程设计说明书:
包含封面、任务书、说明书(说明书见后面模板)。
包括系统设计目的要求,类的层次图(包括类成员列表)、设计思路,系统功能模块图、参考资料、程序清单、设计心得总结等。
对照自己设计的完成情况认真书写。
软件源程序光盘。
注:
学生完成课程设计后,提交课程设计报告及相关电子文档,要求将前述全部内容依先后顺序写成设计报告一份,要求文字通畅、字迹工整,文字不少于20000字,装订成册。
四、进度安排
课程设计共两周(15、16周)进行,其进度时间大致分配如下:
序号
阶段内容
地点
所需时间
1
实际需求调查
实验室、图书馆、教室
3学时
2
系统分析与设计
机房、教室
6学时
3
编程调试
机房、教室
8学时
4
设计报告文档撰写
机房、教室
3学时
合计
20学时
五、参考资料
[1].谢青松.操作系统原理.人民邮电出版社.2004
[2].曹先彬.操作系统原理与设计.机械工业出版社
[3].袁宝华.操作系统实验教程.北京交通大学出版社
指导教师签名日期年月日
系主任审核日期年月日
1引言
问题的提出
进程管理器是我们经常用到的一个工具,我们可以通过C语言编程来模拟进程管理器的功能,加深对进程、程序概念掌握,并提高编程能力
国内外研究的现状
进程管理器在各种操作系统中广泛应用,不管是windows还是linux都有进程管理器,方便用户对系统资源进行管理。
在现代计算机中,进程管理器已经成了操作系统不可缺少的一部分了。
任务与分析
本课题主要的目的是模拟一个进程管理器
编程模拟实现进程管理器,加深对进程、程序概念掌握,并提高编程能力。
内容:
利用Windows相关编程工具,实现进程管理器的相关功能:
1.显示当前正在运行的进程及其占用的资源
2.可以对某一进程进行停止
2.程序的主要功能
创建进程功能
创建一个进程,包括它的进程号,进程优先数
查看进程功能
能够查看当前正在运行的进程。
换出进程功能
能够换出某个已经创建好的进程。
杀死进程功能
能够杀死一个当前正在运行的进程。
退出功能
退出进程模拟系统。
3程序运行平台
VC++。
具体操作如下:
新建进程管理器模拟工程,添加相应的源文件进程管理器.C,再编译,链接,执行等。
4总体设计
主函数
创建模块
查看模块
换出模块
杀死模块
通信模块
退出模块
图系统总体框架图
5程序说明
进程的内容结构体
structnode
{
inta;
charch;
};
建新的进程2.查看运行进程\n");
printf("3.杀死运行进程4退出系统\n");
printf("请选择(1~6)\n");
scanf("%d",&i)
6模块分析
创建模块
系统将提示用户输入新添加的进程的信息,插入在链表中。
intcreat()
{
inti;
if(shumu>20)
{
printf("内存已满请先换出进程!
\n");
i=-1;
returni;
}
else
{
if(neijin==NULL)
{
p=(jincheng*)malloc(sizeof(jincheng));
printf("请输入新进程的名字(数字):
\n");
scanf("%d",&p->pid);
printf("请输入新进程的优先级:
(数字)\n");
scanf("%d",&p->youxian);
p->luntime=;
p->zhantime=3;
p->neirong=(node*)malloc(sizeof(node));
p->neirong=NULL;
p->zhuangtai='b';
p->next=NULL;
neijin=p;
shumu++;
i=1;
}
else
{
p=neijin;
while(p->next!
=NULL)
{
p=p->next;
}
q=(jincheng*)malloc(sizeof(jincheng));
q->next=p->next;
p->next=q;
printf("请输入新进程的名字(数字):
\n");
scanf("%d",&q->pid);
printf("请输入新进程的优先级:
(数字)\n");
scanf("%d",&q->youxian);
q->luntime=;
q->zhantime=3;
q->neirong=(node*)malloc(sizeof(node));
q->neirong=NULL;
q->zhuangtai='b';
shumu++;
i=1;
}
}
returni;
}
查看模块
查看模块将输出所有进程的主要信息
voidchakan()
{
p=neizhi->next;
printf("该执行进程的名字为:
%d\n",p->pid);
printf("该执行进程的的优先级:
%d\n",p->youxian);
printf("该执行进程的轮转时间为:
%f\n",p->luntime);
printf("该执行进程占用cpu的时间为:
%f\n",p->zhantime);
printf("%d",p->neirong->a);
printf("%c",p->neirong->ch);
printf("\n");
}
换出模块
当内存满了的时候需要换出一些进程后才能再创建新的进程。
sw,然后进入源程序,接着选择Build下的进程管理器模拟.exe即可,也可以不打开工程,直接双击文件夹下的debug或release子文件夹下的进程管理器模拟.exe文件即可运行程序。
图
图
图
图
8结论
通过这次课程设计,增强了自己的编程能力,也加深了对操作系统这门课程的理解,加深了对进程的理解。
但还是有些不足之处,例如界面不美观,若能通过图形化界面显示则效果会更好