时间片轮转调度法进行CPU调度.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
时间片轮转调度法进行CPU调度

目 录 一、设计目的 1 二、设计内容 1 三、设计原理 2 四、 算法实现 3 五、流程图 4 六、源程序 5 七、运行示例及结果分析 20 八、 实验总结 22 九、参考资料 23 选题名称 时间片轮转法进行CPU调度 一、设计目的 处理机调度是操作系统中非常重要的部分。为深入理解进程管理部分的功能,设计时间片轮转法进行CPU调度算法,模拟实现处理机的调度。通过本次课程设计理解进程调度的概念,深入理解进程控制的功能、进程的创建以及进程各个状态之间的转换过程,实现时间片轮转算法调度进程。 学会使用C#语言编写和调试一个简单的时间片轮转法进行CPU调度的 程序。 加深理解时间片轮转法的执行逻辑。 体会时间片轮转算法的具体实现方法。 二、设计内容 1、具体内容 (1)假设系统有5个进程,每个进程用一个进程控制块PCB来代表。PCB包括:进程名、链接指针、到达时间、估计运行时间和进程状态。其中,进程名即进程标识。链接指针指出下一个到达进程的进程控制块地址,按照进程到达的顺序排队,统设置一个队头和队尾指针分别指向第一个和最后一个进程,新生成的进程放队尾。估计运行时间:可由设计者任意指定一个时间值。到达时间:进程创建时的系统时间或由用户指定,调度时,总是选择到达时间最早的进程。进程状态:为简单起见,假定进程有两种状态,就绪和完成,并假定进程一创建就处于就绪状态,用R表示,当一个进程运行结束时,就将其置成完成态,用C表示。 (2)为每个进程任意确定一个要求运行时间和到达时间。 (3)按照进程到达的先后顺序排成一个循环队列。再设一个对首指针指向第一个到达进程的首址。 (4)执行处理机调度时,开始选择对首的第一个进程运行。另外再设一个当前运行进程的指针,指向当前正运行的进程。 (5)由于本实验是模拟实验,所以对被选中进程并不实际启动运行,而只是执行: a)估计运行时间减1; b)输出当前运行进程的名字。 用这两个操作来模拟进程的一次运行。 (6)进程运行一次后,以后的调度则将当前指针依次下移一个位置,指向下一个进程,即调整当前运行指针指向该进程的链接指针所指进程,以指示应运行进程。同时还应判断该进程的剩余运行时间是否为零。若不为零,则等待下一轮的运行;若该进程的剩余运行时间为零,则将该进程的状态置为完成态C,并退出循环队列。 (7)若就绪队列不空,则重复上述的(5)和(6)步骤直到所有进程都运行完为止。 (8)在所设计的调度程序中,应包含显示或打印语句。以便显示或打印每次选中进程的名称及运行一次后队列的变化情况。 2、需求分析 程序可以设置时间片的长短。 程序可以创建进程控制块pcb信息(包括进程名、进程状态、到达时间、运行时间等),其中进程名是进程的标识。到达时间:进程创建时的系统时间或用户指定,调度时,总是选择到达时间最早的进程。进程状态:为简单起见,假定进程有两种状态,就绪和完成,并假定进程创建即处于就绪状态,当进程运行结束时,将其置为完成态。 输出显示当前进程块的执行状态,通过列表控件显示出进程名、进程到达时间、完成时间、进程状态(就绪或完成)等信息以及它的变化。 三、设计原理 在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。时间片的大小从几ms到几百ms。当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。换言之,系统能在给定的时间内响应所有用户的请求。 算法实现 1、数据变量说明: public int l = 0;//判断进程添加是否完成 public static int x;//获取进程的数量 public static string[,] array1 = new string[100, 3];//定义存放进程数据数组 public static int n;//时间片大小 int[] array2 = new int[x];//用于获取进程到达时间的大小 int[] array4 = new int[x];//用于给array2排序 int[] array5 = new int[x];//用于获取进程的运行时间 string[,] array6 = new string[x, 3];//用于表示执行队列 int time=0; //用于计时 int s = 0;//用于获取所有进程的总共的运行时间 string[] name=new string[1]; int com=0;//表示当前执行进程

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档