- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用标准文案
精彩文档
操作系统课程设计报告
题目: 进程调度算法
院 系: 信息学院
班 级: 信管11-2
姓 名: 王裕辰
学 号: 1101051024
指导教师: 赵 华
一、概述
本次设计的程序主要功能是模拟CPU的进程调度过程,实现先来先服务调度算法、短作业优先调度算法、非抢占优先权调度算法、时间片轮转法四个进程调度算法,并根据输入的数据和相应的调度算法计算每个进程的调度结果,对四个算法的平均周转时间进行比较和评价。
本程序主要解决的是CPU的四种进程调度算法的评价和比较问题,包括平均周转时间和平均等待时间。通过这四种调度算法的比较,有利于加深对四种算法的理解,使用户能够更好、更快的运用四种调度算法。
二、设计的基本概念和原理
1、基本概念
到达时间:指进程到达CPU的时间点。
服务时间:指进程需要CPU执行的时间长度。
完成时间:指进程执行完成的时间。
周转时间:指进程从到达到执行完成所经过的时间。
带权周转时间:进程的周转时间与服务时间的比值,用于反映长短进程的差别。
平均周转时间:指一个调度算法中所有进程的周转时间的平均值。用于衡量不同调度算法对相同进程的调度性能。
平均带权周转时间:指一个调度算法中所有进程的带权周转时间的平均值。用于比较调度算法对不同进程的调度性能。
2、基本原理
FCFS调度算法
按照进程的到达时间从小到大进行排序,放入就绪队列中,每次调度都是从就绪队列中选择对头的进程进入内存,运行此程序至完成,然后继续从就绪队列中再次调入一个进程,运行,结束。重复上述过程直到就绪队列中所有进程全部运行完成。
SPF调度算法
从就绪队列中选出一个服务时间最短的进程,将其调入内存,将CPU分配给它,使它立即执行并一直执行到完成,然后再从当前就绪队列中选出一个服务时间最短的进程,调入内存执行到完成。重复此过程直到所有进程全部执行完成。
非抢占高优先权优先调度算法
从就绪队列中选出一个优先权最高的进程,将其调入内存,并为其分配CPU,该进程一直执行直至完成。然后再次重复上述过程。
基于时间片的轮转调度算法
将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并执行一个时间片。当执行的时间片用完,调度进程便停止该进程的执行,并将它送往就绪队列的末尾,然后再把CPU分配给就绪队列中新的队首进程,同时也让它执行一个时间片。
三、总体设计
本程序才用了结构化程序设计方法,首先将进程抽象为一个类,用用户所输入的每个进程的信息来把每个对象来初始化。然后分块地调用不同的函数实现不同的调度算法。
本程序包括以下三个模块:
预定义及进程类定义模块
定义程序所用到的头文件和常量。定义进程类的类成员,成员函数以及进程的构造函数和析构函数。
主程序模块
包括以下五个步骤
= 1 \* GB3 ① 选择进程调度算法
= 2 \* GB3 ② 输入进程相关信息
= 3 \* GB3 ③ 调用所选的进程调度算法
= 4 \* GB3 ④ 计算每个进程的完成时间、周转时间、带权周转时间
= 5 \* GB3 ⑤ 输出每个进程的时间参数,计算并输出所选算法的平均周转时间和平均带权周转时间
其它函数模块
定义了四种调度算法和程序中调用的其他函数。
程序流程图:
四、详细设计
每个模块的代码及分析如下:
1、预定义及进程类定义模块
#include stdafx.h
#include iostream
#include string
#include iomanip
#define MAX 100 //进程的最大数量
class Process{
private:
int arritime,sevtime,finitime,zhtime,sevtime1,priority;//arritime---到达时间,sevtime、sevtime1--服务时间,finitime---完成时间,zhtime---周转时间,priority---优先权
double qtime;// 带权周转时间
public:
string pname;// 进程名
Process()//无参构造函数,用于构造对象数组
{
arritime=0;
sevtime=0;
sevtime1=0;
finitime=0;
zhtime=0;
qtime=0;
priority=0;
}
int getarritime(){return arritime;}//返回到达时间
int getsevtime(){return sevtime;}//返回服务时间时间
int getsevtime1()
文档评论(0)