文档介绍:操作系统
课程设计报告
专业
计算机科学与技术
学生姓名
班级
学号
指导教师
完成日期
博雅学院
题目:进程调度的模拟实现的模拟实现
一、设计目的
本课程设计是学习完“操作系统原理”课程后进行的一次全面的综合训练,通过课程设计,更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。
在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。
二、设计内容
1)概述
选择一个调度算法,实现处理机调度。
设计要求:
1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。
2)可选择进程数量
3)本程序包括三种算法,用C或C++语言实现,执行时在主界面选择算法(可用函数实现),进入子页面后输入进程数,(运行时间,优先数由随机函数产生),执行,显示结果。
2)设计原理
:
进程名
进程状态
要求运行时间
优先数
链接指针
其中优先数是赋给进程的优先级
调度时总是选取优先数最大的进程优先运行
,运行时间,由程序任意指定。
,把进程按给定优先级(动态优先级算法中)从小到大排成一个队列。按给定运行时间(短作业优先)从小到大排成一个队列用一个变量作为队首指针,指向队列的第一个进程。
。由于本实验是模拟处理机调度,所以被选中的进程并不实际的启动运行,而是执行:
优先数-1(动态优先级算法中)
要求运行时间-1
来模拟进程的一次运行。
,若要求运行时间不等于0,则再将它加入队列(动态优先级算法中:按优先数大小插入。),且改变队首指针:若要求运行时间=0,则把它的状态改为完成(C)状态,且退出队列。
,则重复上述的4和5,直接所有的进程成为完成状态。
,以显示或打印每次被选中的进程的进程名以及运行一次后进程队列的变化。
3)详细设计及编码
N
开始
初始化PCB,输入进程信息
各进程按优先数从高到低排列
Y
N
就绪队列为空
就绪队列首进程投入运行
时间片到,运行进程已占用CPU时间加1
运行进程已占用CPU时间已达到所需的运行时间
使运行进程的优先数减1把运行进程插入就绪队列
Y
进程已完成撤销改进程
结束
流程图如下
2. 实验分析
(1)PCB结构通常包括以下信息:进程名,进程优先数,轮转时间片,进程已占用的CPU时间,进程还需要的CPU时间,进程的状态,当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删
(2)本程序用两种算法对五个进程进行调度,每个进程可有三个状态:就绪、执行、完成。并假设初始状态为就绪状态。
(3)为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。
(4)在优先数算法中,优先数可以先取值为一个常数减去进程所需要的时间片数目,进程每执行一次,优先数减3,CPU时间片数加1,进程还需要的时间片数减1。在轮转算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了2个单位),这时,CPU时间片数加2,进程还需要的时间片数减2,并排列到就绪队列的尾上。
(5)对于遇到优先数一致的情况,采用FIFO策略解决。
(1)本程序用两种算法对五个进程进行调度,每个进程可有三个状态,并假设初始状态为就绪状态。
(2)为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需运行的时间片数的初始值均由用户给定。
(3)在优先数算法中,优先数的值为50与运行时间的差值,即P_TIME-process->needtime。进程每执行一次,优先数减3,CPU时间片数加1,进程还需要的时间片数减1。在轮转算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了2个单位),这时,CPU时间片数加2,进程还需要的时间片数减2,并排列到就绪队列的尾上。
(4)对于遇到优先数一致的情况,采用FIFO策略解决
(1)struct pcb() 定义pcb块
(2)Void display() 显示结果信息函数
(3)int process_finish(pcb *q) 进程完成标示
(4)void display_round(