操作系统课程设计-对处理机的调度

1970-01-01 08:00

福建农林大学金山学院

课程设计报告

课程名称: 课程设计题目: 姓 名:

系: 专 业: 年 级: 学 号: 指导教师: 职 称:

《操作系统》 对处理机的调度

信息与机电工程系 计算机科学与技术

李盼盼 助教

2013年12月31日

1

福建农林大学金山学院课程设计结果评定

序号 评定标准 分值 评定结果 1 课程设计报告符合规范,条理清晰,重点突出 20% 2 程序实现设计方案,软件可靠性好 40% 3 课程设计有自己的收获、体会、感受,等等 10% 4 能够按照要求演示课程设计 20% 5 有一定的创新性,难易程度 10% 合计 成绩: 指导教师签字: 任务下达日期:2013.6.3 评定日期: 2

目 录

1设计目的………………………………………………………………………4 2设计要求………………………………………………………………………4 3设计方案………………………………………………………………………4 3.1先到先服务算法…………………………………………………………… …4 3.2短进程优先算法…………………………………………………………… …6 4设计内容………………………………………………………………………8 4.1输入进程信息………………………………………………………… …8 4.2先到先服务算法输出……………………………………………………… …9 4.3短进程优先算法输出……………………………………………………… …9 5总结………………………………………………………………………10 6参考文献……………………………………………………………………10

3

对处理机的调度

1.设计目的

进程是操作系统最重要的概念之一,进程调度是操作系统内核的重要功能,本实验要求用C语言编写一个进程调度模拟程序,使用短作业优先调度算法,高响应比调度算法,先到先服务算法实现进程调度。可以手动阻塞与唤醒。本实验可加深对进程调度算法的理解。

在OS中,调度的实质是一种资源分配,调度算法即指:根据系统的资源分配策略所规定的资源分配算法。对于不同的系统和系统目标,通常采用不同的调度算法,如在批处理系统中,为照顾为数众多的短作业,采用短作业有限调度算法;把当前处于就绪队列之首的那个进程调度到运行状态,采用先到先服务算法。采用算法时,则要考虑多方面因素,以便达到最佳效果。

2.设计要求

对处理机的调度

设计一个有多个进程共行的进程调度程序。

进程调度算法:先到先服务算法,短作业优先调度算法

每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:到达时间,服务时间,完成时间,周转时间,帯权周庄时间,平均周转时间,平均帯权周转时间。

int ArrivalTime[Max];//到达时间 int ServiceTime[Max];//服务时间 int FinishTime[Max];//完成时间 int WholeTime[Max];//周转时间

double WeightWholeTime[Max];//帯权周转时间

double AverageWT_FCFS,AverageWT_SJF; //平均周转时间 double AverageWWT_FCFS,AverageWWT_SJF;//平均帯权周转时间

3.设计方案 3.1 先到先服务算法

4

采用先来先服务FCFS调度进程运行,计算每个进程的周转时间,带权周转时间,并且计算所有进程的平均周转时间,带权平均周转时间 void FCFS()//找最早到达的。 {

cout<

\

for(i=0;i

if(ArrivalTime[i]>NowTime)//假如进程到达的时间比现在已经运行的

时间NowTime大,说明在NowTime时刻进程未到达

{ }

NowTime+=ServiceTime[i];//把进程的服务时间加到NowTime上 FinishTime[i]=NowTime;//计算完成时间

WholeTime[i]=FinishTime[i]-ArrivalTime[i];//计算周转时间=完成

NowTime=ArrivalTime[i];//把进程的到达时间赋给NowTime

时间-到达时间

WeightWholeTime[i]=(double)WholeTime[i]/ServiceTime[i];//计算

带权周转时间=周转时间/服务时间

}

AverageWT_FCFS=SumWT/Num;//平均周转时间 AverageWWT_FCFS=SumWWT/Num;//平均帯权周转时间 for(i=0;i

cout<<\时刻\

<<\进程\开始运行 \其完成时间:\<

5

SumWT+=WholeTime[i];//计算总的周转时间

SumWWT+=WeightWholeTime[i];//计算总的帯权周转时间

}

}

<

cout<<\平均周转时间:\cout<<\平均帯权周转时间:\

3.2短进程优先算法

void SJF()//找已经到达的且服务时间最短的进程(假定输入的进程是按照到达时间先后输入的) {

cout<

NowTime=ArrivalTime[0]+ServiceTime[0];//计算第一次的NowTIme FinishTime[0]=NowTime;//计算第一个进程的完成时间 ServiceTime_SJF[0]=1000;//赋初值。

cout<<\时刻\进程\开始运

行。\

int allin=0,j,k;

for(i=1;i

k=1;min=0;

if(allin==0)//找到已经到达的进程个数 {

j=0;

while(ArrivalTime[j]<=NowTime && j

j++; if(j>=Num)

6

}

}

{ }

allin=1;

else { }

j=j-1;//j是已经到达的进程数

while(k<=j)//从已经到达的进程里找到服务时间最短的进程 {

if(ServiceTime_SJF[k]==0)//进程的服务时间如果等于0,则跳过j=Num;

该进程

k++;

else {

if(ServiceTime_SJF[min]>ServiceTime_SJF[k])//比较,找到

服务时间最短的进程

}

for(i=0;i

}

ServiceTime_SJF[min]=0;//找完后置零,便于下一次循环时使用 NowTime+=ServiceTime[min];//累加当前时间 FinishTime[min]=NowTime;//完成时间

}

min=k;

k++;

带权周转时间

7

{ }

AverageWT_SJF=SumWT/Num;//平均周转时间 AverageWWT_SJF=SumWWT/Num;//平均带权周转时间

cout<<\ 其完成时间:\ 周转时间:

WholeTime[i]=FinishTime[i]-ArrivalTime[i];

WeightWholeTime[i]=(double)WholeTime[i]/ServiceTime[i]; SumWT+=WholeTime[i]; SumWWT+=WeightWholeTime[i];

\

\

for(i=1;i

cout<<\时刻\进程\开

始运行 \ 其完成时间:\ 周转时间:\

\ }

4.设计内容 4.1 输入进程信息

}

cout<<\平均周转时间:\cout<<\平均帯权周转时间:\

8

4.2 先到先服务算法输出

4.3 短进程优先算法输出

9

5.总结

通过此次课程设计,更深入的理解了各个进程调度算法,及实现过程。增进了VC编程的水平。对进程或作业先来先服务、短作业优先算法以及进程调度的概念和算法,有了更深入的认识!初步理解了操作系统对于作业处理的基本思想!并加深了我对于操作系统理论的理解。在此过程中,遇到了困难,能及时请教同学,查询相关资料,及时解决了问题,但仍有不足之处,将会在今后学习中更加努力。

参考文献

[1] 张尧学主编.计算机操作系统教程(第三版).北京:清华大学出版社,2006

[2] 张尧学编.计算机操作系统教程(第三版)习题解答与实验指导.北京:清华大学出版社,2006

[3] 汤子瀛主编.计算机操作系统(第三版).西安:西安电子科技大学出版社,2001 [4] 张坤等编.操作系统实验教程.北京:清华大学出版社,2008 [5] 张丽芬等编.操作系统实验教程.北京:清华大学出版社,2006 [6] 屠祁等编.操作系统基础(第三版).北京:清华大学出版社,2000 [7] 冯耀霖等编.操作系统.西安:西安电子科技大学出版社,2001

[8] 左万历.计算机操作系统教程(第二版).北京:高等教育出版社,2004

10


操作系统课程设计-对处理机的调度.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于整合营销传播理论的中国电影营销运作研究

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: