操作系统原理进程管理器的模拟实现.docx
- 文档编号:5836370
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:13
- 大小:160.04KB
操作系统原理进程管理器的模拟实现.docx
《操作系统原理进程管理器的模拟实现.docx》由会员分享,可在线阅读,更多相关《操作系统原理进程管理器的模拟实现.docx(13页珍藏版)》请在冰豆网上搜索。
操作系统原理进程管理器的模拟实现
数学与计算机学院
课程设计说明书
课程名称:
操作系统原理-课程设计
课程代码:
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引言
1.1问题的提出
进程管理器是我们经常用到的一个工具,我们可以通过C语言编程来模拟进程管理器的功能,加深对进程、程序概念掌握,并提高编程能力
1.2国内外研究的现状
进程管理器在各种操作系统中广泛应用,不管是windows还是linux都有进程管理器,方便用户对系统资源进行管理。
在现代计算机中,进程管理器已经成了操作系统不可缺少的一部分了。
1.3任务与分析
本课题主要的目的是模拟一个进程管理器
编程模拟实现进程管理器,加深对进程、程序概念掌握,并提高编程能力。
内容:
利用Windows相关编程工具,实现进程管理器的相关功能:
1.显示当前正在运行的进程及其占用的资源
2.可以对某一进程进行停止
2.程序的主要功能
2.1创建进程功能
创建一个进程,包括它的进程号,进程优先数
2.2查看进程功能
能够查看当前正在运行的进程。
2.3换出进程功能
能够换出某个已经创建好的进程。
2.4杀死进程功能
能够杀死一个当前正在运行的进程。
2.5退出功能
退出进程模拟系统。
3程序运行平台
VC++6.0。
具体操作如下:
新建进程管理器模拟工程,添加相应的源文件进程管理器.C,再编译,链接,执行等。
4总体设计
图4.1系统总体框架图
5程序说明
进程的内容结构体
structnode
{
inta;
charch;
};
//进程PCB结构体
structjincheng
{
intpid;
intyouxian;
floatluntime;
floatzhantime;
charzhuangtai;//a表示执行,b表示动态就绪
node*neirong;
structjincheng*next;
};
structjincheng*neijin,*neizhi,*p,*q;
主菜单
voidmain()
{
intzhixing();
voidshasi();
voidchakan();
voidtongxing(int);
neizhi=(jincheng*)malloc(sizeof(jincheng));
neizhi->next=NULL;
neijin=(jincheng*)malloc(sizeof(jincheng));
neijin->next=NULL;
neijin->pid=1;
neijin->youxian=6;
neijin->luntime=3.5;
neijin->zhantime=3;
neijin->neirong=(node*)malloc(sizeof(node));
neijin->neirong=NULL;
neijin->zhuangtai='b';
shumu++;
p=(jincheng*)malloc(sizeof(jincheng));
p->next=neijin->next;
neijin->next=p;
p->pid=2;
p->youxian=5;
p->luntime=3.5;
p->zhantime=3;
p->neirong=(node*)malloc(sizeof(node));
p->neirong=NULL;
p->zhuangtai='b';
shumu++;
q=(jincheng*)malloc(sizeof(jincheng));
q->next=p->next;
p->next=q;
q->pid=3;
q->youxian=4;
q->luntime=3.5;
q->zhantime=3;
q->neirong=(node*)malloc(sizeof(node));
q->neirong=NULL;
q->zhuangtai='b';
shumu++;
inti,n=1;
intk,j,s;
j=zhixing();
intcreat();
while(n==1)
{
printf("1.创建新的进程2.查看运行进程\n");
printf("3.杀死运行进程4退出系统\n");
printf("请选择(1~6)\n");
scanf("%d",&i)
6模块分析
6.1创建模块
系统将提示用户输入新添加的进程的信息,插入在链表中。
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=3.5;
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=3.5;
q->zhantime=3;
q->neirong=(node*)malloc(sizeof(node));
q->neirong=NULL;
q->zhuangtai='b';
shumu++;
i=1;
}
}
returni;
}
6.2查看模块
查看模块将输出所有进程的主要信息
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");
}
6.3换出模块
当内存满了的时候需要换出一些进程后才能再创建新的进程。
//换出进程函数
voidhuanchu(inta)
{
p=neijin;
while(p->pid!
=a&&p!
=NULL)
{
q=p;
p=p->next;
}
if(p==NULL)
{
printf("该进程不在内存里!
\n");
return;
}
if(p==neijin)
{
neijin=neijin->next;
}
else
{
q->next=p->next;
}
}
6.4杀死模块
杀死当前正在运行的进程,其实也就是当前链表的头指针清空即可。
//杀死正在运行进程函数
voidshasi()
{
neizhi->next=NULL;
printf("运行的进程已经杀死!
\n");
return;
}
6.5退出模块
退出模拟系统的模块
7系统测试
首先进入VC++6.0,打开工程进程管理器模拟.dsw,然后进入源程序,接着选择Build下的进程管理器模拟.exe即可,也可以不打开工程,直接双击文件夹下的debug或release子文件夹下的进程管理器模拟.exe文件即可运行程序。
图7.1
图7.2
图7.3
图7.4
8结论
通过这次课程设计,增强了自己的编程能力,也加深了对操作系统这门课程的理解,加深了对进程的理解。
但还是有些不足之处,例如界面不美观,若能通过图形化界面显示则效果会更好
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 原理 进程 管理器 模拟 实现
