时间片轮转法调度CUP_操作系统课程设计报告目录
一、需求分析 1
1、设计要求: 1
2、解决方案: 1
二、概要设计 2
1、基本原理: 2
2、数据结构及模块说明: 3
3、流程图: 4
三、详细设计: 4
主要函数设计及说明: 4
四、调试分析: 6
1、调试过程及步骤: 6
2、结果分析: 8
五、总结: 8
1、遇到问题及解决方法: 8
2、心得体会: 9
六、参考文献: 9
附录:源代码 9
计算机操作系统课程设计
——时间片轮转法进行CUP调度
一、需求分析
1、设计要求:
在多道程序或多任务系统中,系统同时处于就绪状态的进程有若干个。为了使系统中各进程能有条不紊地进行,必须选择某种调度策略,以选择一进程占用处理机。要求用时间片轮转算法模拟单处理机调度,以巩固和加深处理机调度的概念。
2、解决方案:
(1)、假设系统有5个进程,每个进程用一个进程控制块PCB来表示。PCB包括:进程名、链接指针、到达时间、估计运行时间和进程状态。其中,进程名即进程标识。链接指针指出下一个到达进程的进程控制块地址,按照进程到达的顺序排队,统设置一个队头和队尾指针分别指向第一个和最后一个进程,新生成的进程放队尾。估计运行时间:可由设计者任意指定一个时间值。到达时间:进程创建时的系统时间或由用户指定,调度时,总是选择到达时间最早的进程。进程状态:为简单起见,假定进程有两种状态,就绪和完成,并假定进程一创建就处于就绪状态,用R表示,当一个进程运行结束时,就将其置成完成状态,用C表示。
(2)、为每个进程任意确定一个要求运行时间和到达时间。
(3)、按照进程到达的先后顺序排成一个循环队列。再设一个队首指针指向第一个到达进程的首址。
(4)、执行处理机调度时,开始选择队首的第一个进程运行。另外再设一个当前运行进程的指针,指向当前正运行进程。
(5)、由于本实验是模拟实验,所以对被选中进程并不实际启动运行,而只是执行:
a)、估计运行时间减1;
b)、输出当前运行进程的名字。
用这两个操作来模拟进程的一次运行。
(6)、进程运行一次后,以后的调度则将当前指针依次下移一个位置,指向下一个进程,即调整当前运行指针指向该进程的链接指针所指进程,以指示应运行进程。同时还应判断该进程的剩余运行时间是否为零。若不为零,则等待下一轮的运行;若该进程的剩余运行时间为零,则将该进程的状态置为完成状态C,并退出循环队列。
(7)、若就绪队列不空,则重复上述(5)和(6)步骤直到所有进程都运行完为止。
(8)、在所有设计的调度程序中,应包含显示或打印语句,以便显示或打印每次选中进程的名称及运行一次后队列的变化情况。
二、概要设计
1、基本原理:
系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。时间片的大小从几MS到几百MS。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后再把处理机分配给就绪队列中的新的队首进程,同时也让他执行一个时间片。这样就可以保证就绪队列中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。换言之,系统能在给定时间内相应所有用户的请求。
2、数据结构及模块说明:
(1)、数据结构模块
主要是定义本设计中需要的两个主要的结构体PCB和node,从而定义进程控制块变量与队列指针。
(2)、函数模块
只要用于实现进程的插入,时间片的插入,轮转法的实现。
(3)、主界面模块
主要用于提示使用者怎样进行轮转法的实现。
(4)、菜单界面块
主要用于提示使用者进入时间片轮转算法系统。
3、流程图:
开始
输入进程数
输入进程
进程是否输入完?
N
输入时间片
Y
分配给执行队列队首时间片
时间片-1
是否有新进程到达
将新到进程插入队尾
Y
服务时间-1
N
是否完成
N
退出
时间片是否用完
N
Y
Y
是否所有进程都完成
Y
将未完成的插入队尾
结束
N
三、详细设计:
主要函数设计及说明:
1、创建进程;使用单链表的方法,单链表中的每个结点相当于一个进程:
typedef struct{
char name[20]; //进程名
int arrtime; //到达时间
int runtime; //运行时间
}DataType;
typedef struct node{
DataType pcb;
struct node *next;
}ListNode;
2、自定义所需进程数目:int f; cin>>f 。
3、创建一个进程单链表,作为进程队列
时间片轮转法调度CUP 操作系统课程设计报告 来自淘豆网m.daumloan.com转载请标明出处.