操作系统课程设计(2015)
进程调度算法的模拟实现
PAGE 2
PAGE 1
操作系统课程设计报告
题目: 进程调度算法的模拟实现_
专业
计算机科学与技术
学生姓名
班级
学号
指导教师
发放日期
2015.1.30
信 息 工 程 学 院
目 录
TOC \o "1-2" \h \z \u HYPERLINK \l _Toc28843 1 概述 PAGEREF _Toc28843 1
HYPERLINK \l _Toc7961 2 设计原理 PAGEREF _Toc7961 1
HYPERLINK \l _Toc18029 2.1先来先服务算法 PAGEREF _Toc18029 1
HYPERLINK \l _Toc17098 3 详细设计与编码 PAGEREF _Toc17098 1
HYPERLINK \l _Toc6166 3.1 模块设计 PAGEREF _Toc6166 1
HYPERLINK \l _Toc5304 3.2 系统流程图 PAGEREF _Toc5304 2
HYPERLINK \l _Toc14012 3.3 系统详细设计 PAGEREF _Toc14012 2
HYPERLINK \l _Toc21238 4 结果与分析 PAGEREF _Toc21238 6
HYPERLINK \l _Toc15992 4.1 测试方案 PAGEREF _Toc15992 6
HYPERLINK \l _Toc28242 4.2 测试结果 PAGEREF _Toc28242 6
HYPERLINK \l _Toc11989 4.3 测试结果分析 PAGEREF _Toc11989 9
HYPERLINK \l _Toc18316 5 设计小结 PAGEREF _Toc18316 12
HYPERLINK \l _Toc20308 6 参考文献 PAGEREF _Toc20308 13
HYPERLINK \l _Toc24610 附录 程序代码 PAGEREF _Toc24610 14
进程调度算法的模拟实现
1 概述
选择一个调度算法,实现处理机调度,进程调度算法包括:先来先服务算法,短进程优先算法,时间片轮转算法,动态优先级算法。可选择进程数量,本程序包括四种算法,用C或C++语言实现,执行时在主界面选择算法(可用函数实现),进入子页面后输入进程数,(运行时间,优先数由随机函数产生),执行,显示结果。
2 设计原理
2.1先来先服务(FCFS)算法
每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源创建进程,然后放入就绪队列
2.2 时间片轮转法(RR)算法
系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。时间片的大小从几ms到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。
2.3短作业优先(SJF)算法
短作业优先调度算法是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。
2.4最高优先权优先(HRRN)算法
优先权调度算法是为了照顾紧迫型作业,使之在进入系统后便获得优先处理,引入最高优先权优先调度算法。动态优先权是指在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。
3 详细设计与编码
3.1 模块设计
(1) 进入系统模块,进入登陆界面。
(3) 菜单选择模块。选择相应的进程调度方式,选择相应的数字,进入相应的功能。
(4) 算法模块。选择相应的进程调度算法。
(5) 显现输出模块。显示每种进程调度算法情况。
(6) 平均周转时间与平均带权周转时间的计算结果。
(7) 退出系统模块。
开始3.2 系统流程图
开始
FCFS算法,对于先到达的进程优先分配CPU
FCFS算法,对于先到达的进程优先分配CPU
SJF算法,每次都从未完成的队列中选取服务时间最短的作业进行调度
SJF算法,每次都从未完成的队列中选取服务时间最短的作业进行调度
RR算法,每次调度时将CPU 分派给队首进程,按照时间片依次执行进程
RR算法,每次调度时将CPU 分派给队首进程,按照时间片依次执行进程
HRRN算法,考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出
HRRN算法,考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选