经典调度算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
经典调度算法
实践课题:
姓名:
学号:
指导老师:
学院:
课程设计实践时间
2014.3.11~2014.3.22
目录
1.设计目的----------------------------------------3
2.设计内容----------------------------------------3
3.设计要求----------------------------------------3
4.程序流程图--------------------------------------4
5.设计摘要----------------------------------------7
6.源程序------------------------------------------8
7.运行结果---------------------------------------16
一课程设计的目的:
操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。
1.进一步巩固和复习操作系统的基础知识
2.培养学生结构化程序、模块化程序设计的方法和能力。
3.提高学生调试程序的技巧和软件设计的能力。
4.提高学生分析问题、解决问题以及综合利用C语言进行程序设计的能力。
二设计内容:
实现以下几种调度算法
1.FCFS
2.SJF
3.高响应比优先调度算法。
三.设计要求:
1.不同的功能使用不同的函数实现(模块化),对每个函数的功能和调用接口要注释清楚。对程序其它部分也进行必要的注释。
2.对系统进行功能模块分析、画出总流程图和各模块流程图。3.用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功能可以反复使用,最好使用菜单。
4.通过命令行相应选项能直接进入某个相应菜单选项
的功能模块。
5. 所有程序需调试通过。
四、设计结束需提交下列资料:
1、课程设计报告。报告中至少应包括:相关操作系统的知识介绍,程序总的功能说明、程序各模块的功能说明、程序设计的流程图源程序清单。
2、源程序和编译连接后的可执行程序文件。
五、进程调度模拟程序流程图
主函数流程图1-1
先来先服务算法调度1-2
短作业优先调度1-3
高响应比优先调度1-4
六、设计摘要及背景
利用高级语言,实现经典进程调度算法,有先来先服务、短作业优先、响应比高优先,进一步理解了进程调度各种算法的概念及含义。
在OS中,调度的实质是一种资源分配,调度算法即指:根据系统的资源分配策略所规定的资源分配算法。对于不同的系统和系统目标,通常采用不同的调度算法,如在批处理系统中,为照顾为数众多的短作业,采用短作业有限调度算法;采用算法时,则要考虑多方面因素,以便达到最佳效果。
七、源程序代码
#include
#include
using namespace std;
#define MAX 8
struct task_struct
{
char name[10]; /*进程名称*/
float come_time; /*到达时间*/
float run_begin_time; /*开始运行时间*/
float run_time; /*运行时间*/
float run_end_time; /*运行结束时间*/
int order; /*运行次序*/
int run_flag; /*调度标志*/
}tasks[MAX],a[MAX];
int counter; /*实际进程个数*/ int fcfs(); /*先来先服务*/ int sjf(); /*短作业优先*/
int hrrn(); /*高响应比优先*/
int pinput(); /*进程参数输入*/
int poutput();
void main()
{
system("color 6a");
int option;
pinput();
while(1)
{
printf("请选择调度算法(0~3):\n");
printf("1.先来先服务\n");
printf("2.短作业优先\n");
printf("3. 高响应比优先\n");
printf("0.退出\n");
scanf("%d",&option);
switch (option)
{
case 0:
//save();
printf("运行结束。\n");
exit(0);
break;
case 1:
printf("对进程按先来先服务调度。\n\n");
fcfs();
poutput();
break;
case 2:
printf("对进程按短作业优先调度。\n\n");
sjf();
poutput();
break;
case 3:
printf("对进程按高响应比优先调度。\n\n");
hrrn();
poutput();
break;