一、实验目的(1)在单处理器情况下按时间片轮转算法实现处理器调度,输出运行动态变化过程。(2)通过算法的实现加深了解处理器调度的工作。二、实验内容输入实现处理器调度的几个进程信息,任意确定一组“要求运行时间”,启动所设计的处理器调度程序,显示逐次被选中进程的进程名以及进程控制块的动态变化过程。实验步骤1、任务分析:时间片轮转的主要思想就是按顺序为每一个进程一次只分配一个时间片的时间。算法要完成的功能就是将各个进程按照时间片轮转运行的动态过程显示出来。时间片轮转算法的主要实现过程是首先为每一个进程创建一个进程控制块,定义数据结构,说明进程控制块所包含的内容,有进程名、进程所需运行时间、已运行时间和进程的状态以及指针的信息。实现的过程即运用指针指向某一个进程,判断当前的进程是否是就绪状态“r”,如果是,则为该进程分配一个时间片,同时,已运行时间加一且要求运行的时间减一,如此循环执行,当某一个进程的所需要运行的时间减少至0时,则将该进程的状态设置为“e”。然后,将指针指向下一个未运行完成的进程,重复判断,直至所有的进程都运行结束。2、概要设计:(1)所用数据结构及符号说明typedefstructPCB{ charname[10];//进程名 structPCB*next;//循环链指针 intneed_time;//要求运行时间 intworked_time;//已运行时间,初始为0 charcondition;//进程状态,只有“就绪”和“结束”两种状态 intflag;//进程结束标志,用于输出}PCB;PCB*front,*rear;//循环链队列的头指针和尾指针intN;//N为进程数(2)主程序的流程图:开始输入进程数N输入各进程信息为每个进程创建PCB并初始化形成一个循环链队列指针指向循环链队列第一个进程进程是否’r’运行时间+1且剩余时间-1Y剩余时间=0?Y将进程状态置为’e’(完成)指针指向队列中下个进程所有进程是否完成N结束Y(3)程序说明:处理器调度总是选择指针指示的进程运行。由于本实验是模拟处理器调度的功能,所以,对被选中的进程并不实际的启动运行,而是执行:已运行时间+1来模拟进程的一次运行,表示进程已经运行过一个单位的时间。3、详细设计(1)首先每一个进程用一个进程控制块PCB来代表。进程控制块的格式为:进程名指针要求运行时间已运行时间状态其中,进程名——作为进程的标识,如Q1、Q2等。指针——进程按顺序排成循环链队列,用指针指出下一个进程的进程控制块的首地址,最后一个进程的指针指出第一个进程的进程控制块首地址。要求运行时间——假设进程需要运行的单位时间数。已运行时间——假设进程已经运行的单位时间数,初始值为“0”。状态——有两种状态,“就绪”和“结束”,初始状态都为“就绪”,用“R”表示。当一个进程运行结束后,它的状态为“结束”,用“E”表示。(2)每次运行所设计的处理器调度程序前,为每个进程任意确定它的“要求运行时间”。把五个进程按顺序排成循环链队列,用指针指出队列连接情况。用指针表示轮到运行的进程,如下图描述所示:K1Q1K2Q2K3Q3K4Q4K5Q5 K2 K3 K4 K5 K1 2 4 3 1 2 0 0 0 0 0 R R R R R PCB1 PCB2 PCB3 PCB4 PCB5(3)程序详细设计步骤:
时间片轮转算法资料 来自淘豆网m.daumloan.com转载请标明出处.