进程调度算法及代码.doc

进程调度算法及代码.doc

ID:57677434

大小:186.00 KB

页数:12页

时间:2020-08-31

进程调度算法及代码.doc_第1页
进程调度算法及代码.doc_第2页
进程调度算法及代码.doc_第3页
进程调度算法及代码.doc_第4页
进程调度算法及代码.doc_第5页
资源描述:

《进程调度算法及代码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、进程调度功能的设计与实现一、实验目的a.编程实现模拟操作系统进程调度子系统的基本功能;理解进程调度的概念,通过课程设计深入了解进程控制块的功能、进程的创建、删除以及进程各个状态间的转换过程;实现先来先服务、时间片轮转、多级反馈轮转法对进程进行的调度过程;通过观察有关的队列结构的内容的动态变化过程深入体会各个调度算法的特点;从而能够更好的巩固从书本上学到的知识。b.编程过程中需要建立队列等结构进行各种操作,通过该次试验,可以督促学生从实用的角度对《数据结构》课程内容进行更深入理解和更熟练的应用。c.实验编程语

2、言要求使用java语言或C++语言。通过对调度功能的编程实现,不但能有效训练学生对编程语言的熟练使用,还能促进学生独立思考解决问题、以及独立查新获取知识的能力。二、实验内容1)实现进程相关数据结构的创建和查看功能。2)实现多种进程调度算法:先来先服务算法、优先级调度算法、时间片轮转法、多级反馈轮转法等。3)实现对执行进程的阻塞,对等待进程的唤醒等功能。4)实现相关队列在进程调度中的动态变化过程。三、实验原理、方法和手段实验原理:现代操作系统的重要特点是程序的并发执行,无论是在批处理系统还是在分时系统中,用户

3、进程数一般都多于处理机数,这将导致进程互相争夺处理机。另外,系统进程也需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。实验中要求实现以下常见的进程调度策略:(1)先来先服务法进程产生获得所需资源后进入就绪队列,排在队首的进程获得CPU资源,排在就绪队列后面的进程必须等到前面的进程全部都执行完毕后才能被执行。单独使用先来先服务法CPU效率较低。图1.1先来先服务调度算法(2)时间片轮转法进程得到除CPU之外的所有资源后进入就绪队列,在就绪队列中,不

4、是一定要被执行完前一个进程才开始执行后一个,而只是执行一个很小的时间片,当一个进程的时间片被执行完后,会自动回到就绪队列的队尾等待下一个属于自己的时间片,如此循环,直到该进程执行完毕。图1.2时间片轮转调度算法(3)多级反馈轮转法该方法有不同的实现方案,其中常见的一种说明如下:设置多个就绪队列,分别赋予不同的优先级,如逐级降低,队列1的优先级最高。每个队列执行时间片的长度也不同,规定优先级越低则时间片越长,如逐级加倍。新进程进入内存后,先投入队列1的末尾,按FCFS算法调度;若按队列1一个时间片未能执行完,

5、则降低投入到队列2的末尾,同样按FCFS算法调度;如此下去,降低到最后的队列,则按“时间片轮转”算法调度直到完成。仅当较高优先级的队列为空,才调度较低优先级的队列中的进程执行。如果进程执行时有新进程进入较高优先级的队列,则抢先执行新进程,并把被抢先的进程投入原队列的末尾。图1.3多级反馈轮转调度算法(4)静态优先级法和多级轮转法比较类似,唯一不同的是CPU每次都要执行完一个完整的进程而不是执行一个时间片。当高优先级队列全部执行完后,才执行低优先级队列里的进程。(5)线性优先级法(动态优先级的一种)调度系统中

6、有两个队列,一个是新创建的进程队列Q1,一个是享受服务队列Q2。Q1的长度随新创建的进程而动态增加,Q2的长度是固定的。每个进程初始化时优先级都会被置为0,而随着时间的变化优先级也会变。具体的做法是:对Q1中的进程,优先级P1等于系统分配的常系数a乘上在Q1中的等待时间T1;对Q2中的进程,若该进程被执行过则优先级P2等于系统分配的常系数b乘上在Q2中等待的时间T2,若没有被执行过,则还需加上原来在Q1中的优先级P1得到新的P2。每一个新创建的进程都会被放到Q1队尾。只有当Q2为空时,新创建的进程才有机会进

7、入享受服务队列并马上执行。当享受服务队列中有空缺并且(Q1的队首进程优先级P1)>(Q2的队尾进程优先级P2)时,Q1的队首进程进程进入享受服务队列。在享受服务队列中,当一个进程执行完一个CPU时间片就必须放弃CPU资源而被放享受服务队列的队尾,其后一个进程开始执行时间片。实验方法和手段使用面向对象的设计思想进行本实验的编程。将所需要的数据结构封装为类,各种控操作可作为类中的函数进行实现,例如进程控制块可定义为一个类task_struct,它可以包含一些如下一些函数,如getMemorysize()(取得进

8、程所需内存大小),getName()(取得进程名),getNeedtime()(取得运行进程所需时间)等。四、实验条件上机环境要求安静,一人一机。操作系统平台为windows2000及以上版本,安装java编译器及相关运行环境;安装C++运行环境(VisualC++)等。五、实验步骤(1)、复习巩固所需要使用的编程语言的语法规则以及相关知识。(2)、理解操作系统进程调度的原理、各种调度方法的思想。(3)、编写程序

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。