文章目录
2.6 处理机调度的概念和层次
基本概念
当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题
(补)【作业:一个具体的任务】
暂时调到外存等待的进程状态为挂起状态。(存在就绪挂起、阻塞挂起)被挂起的进程PCB会被组织成挂起队列
三个层次
2.7 进程调度
进程调度的时机
临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源。
临界区:访问临界资源的那段代码
内核程序临界区一般是用来访问某种内核数据结构的,比如进程的就绪队列(由各就绪进程的PCB组成)
进程调度方式
- 非剥夺式调度方式(非抢占式)
- 剥夺调度方式(抢占式)
进程的切换与过程
狭义的进程调度指的是从就绪队列中选中一个要运行的进程。(这个进程可以是刚刚被暂停执行的进程, 也可能是另一个进程,后一种情况就需要进程切换)
进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。
广义的进程调度包含了选择一个进程和进程切换两个步骤
进程切换的过程:
- 对原来运行进程各种数据的保存
- 对新的进程各种数据的恢复
进程调度、切换是有代价的,过于频繁的进行进程调度、切换,会使整个系统的效率降低
2.8 调度算法的评价指标
CPU利用率
CPU“忙碌”的时间占总时间的比例
利用率=忙碌时间/总时间
系统吞吐量
单位时间内完成作业的数量
系统吞吐量=总共完成了多少道作业/总共花了多少时间
周转时间
从作业被提交给系统开始,到完成为止的时间间隔
周转时间=完成时间-提交时间
平均周转时间=各周转时间和/作业数
带权周转时间=周转时间/实际运行时间
平均带权周转时间=带权周转时间/作业数
等待时间
进程/作业处于等待处理机状态时间之和
对于进程,等待被服务的时间之和
对于作业,在外存后备队列中等待的时间+建立进程后的等待时间
响应时间
提出请求到首次产生响应所用的时间
2.9 调度算法
先来先服务(FCFS)
短作业优先(SJF)
高响应比优先(HRRN)
以上算法不关心“响应时间”,也并不区分任务的紧急程度,因此对于用户来说,交互性很糟糕。因此这三种算法一般适合用于早期的批处理系统
时间片轮转调度算法(RR)
时间片太大,可能会使其退化为先来先服务调度算法,并且会增大进程的响应时间;时间片太小,导致进程切换过于频繁,过多的进程切换导致实际用于进程执行的时间比例减少。
优先级调度算法
补充:
就绪队列未必只有一个,可以按照不同优先级来组织。另外,也可以把优先级 高的进程排在更靠近队头的位置
根据优先级是否可以动态改变,可将优先级分为静态优先级和动态优先级两种。
静态优先级:创建进程时确定,之后一直不变。
动态优先级:创建进程时有一个初始值,之后会根据情况动态地调整优先级
- 通常:
- 系统进程优先级 高于 用户进程
- 前台进程优先级 高于 后台进程
- 操作系统更偏好 I/O型进程(或称 I/O繁忙型进程)
注:与I/O型进程相对的是计算型进程(或称 CPU繁忙型进程)
多级反馈队列调度算法
这三种算法适合用与交互式系统(eg:UNIX使用多级反馈队列调度算法)