内容发布更新时间 : 2024/12/29 1:59:37星期一 下面是文章的全部内容请认真阅读。
天津理工大学华信软件学院 《操作系统》实验教学指导书2.2
课程代码: 课程名称: 适用专业: 指导教师:
1460350
操作系统 / Operating System 软件工程专业 张一鸣
开课院(系)、实验室:华信软件学院C408机房
实验指导书名称: 《操作系统实验教程(Linux版)》第八章
实验二
进程的建立与调度(2.2 进程的调度)
1. 实验目的
(1) 理解并比较处理机调度的常用策略。
(2) 重点掌握优先权调度和时间片轮转两种调度算法的设计与实现。 (3) 按优先权调度算法设计并实现一个处理机调度的程序。
2. 实验内容
本实验中,根据进程状态的转换图模拟多个进程在一个处理机上进行调度。本实验有两个题目,可任选其一。
(1) 设计一个按动态优先权调度算法实现处理机调度的程序。 (2) 设计一个按时间片轮转调度算法实现处理机调度的程序。
3. 准备知识
(1) 理解操作系统中处理机调度的概念和调度算法。 (2) 学习Linux下进程控制以及进程间通信的知识。
4. 实验原理
时间片轮转调度算法和优先权调度算法本质上是一直的,只是在调度时选择的策略不一样而已,故程序流程图是一致的,所以在本教程中仅给出一个流程图即可。具体算法流程图如1所示。
4.1. 时间片轮转调度算法
当系统按时间片轮转算法调度进程时,将所有的就绪进程按照一定的原则(如先来先服务原则)排列,形成一个就绪队列。每次调度为队首进程分配CPU
资源,令其执行一个时间片,该时间片的大小从几ms到几百ms。当时间片用完时,由计时器发出中断信号,通知系统剥夺当前运行进程的CPU使用权,并将此进程送入就绪队列的末尾,等待下一次执行;然后,把处理机分配给就绪队列中新的队首进程,执行重复操作。在进程运行过程中,如果时间片未用完而等待时间发生,则该进程进入等待队列,系统将CPU重新分配给就绪队列的队首进程,一旦时间发生后,等待队列的队首进程进入就绪队列末尾。这样就可以保证就绪队列中的所有进程,在可接受的等待时间内,均能获得处理机并调度执行。
时间片轮转调度算法的进程状态转换图,如图2所示。
4.2. 优先权调度算法
优先权调度算法的进程状态转换图,如图3所示。 1)优先权调度算法的类型
(1)非抢占式优先权调度算法。在非抢占式优先权算法中,处理机一旦被分配给就绪队列中优先权最高的进程,则该进程会一直执行到完成,不会被抢占;只有当发生某一事件使该进程放弃处理机时,处理机才会被分配给就绪队列中优先权最高的另一进城。一般在批处理系统中会使用该调度算法,某些对实时性要求不严的实时系统也可以使用该调度算法。
(2)抢占式优先权调度算法。在抢占式调度算法中,处理机一开始也会被分配给就绪队列中优先权最高的进程,使之执行。但如果出现了一个优先权更高的进程时,进程调度程序就会剥夺原最高优先权进程的处理机使用权,而分配给新出的优先权更高的进程。
2)优先权的类型
对于优先权调度算法,其关键是看采用的是静态优先权,还是动态优先权。 (1)静态优先权时在进程创建的时候确定的,而且优先权在进程的运行期间保持不变。一般是用某一范围内的一个整数来表示优先权大小。确定进程优先权的依据是:
①进程类型;
②进程对资源的需求;
③进程的估计执行时间及内存占用量; ④用户的需求
(2)动态优先权是指在创建进程时会被赋予一个优先权,但该优先权可以在进程的等待过程中,随某些条件的变化而改变,以便获得更好的调度性能。