[TOC]
处理机调度
主要内容
进程调度概念
进程调度算法
Linux进程调度
教学重点
典型调度算法
Linux调度机制
课堂知识小结
6.1进程调度概念
定义:在合适的时候以一定策略选择一个就绪程序运行
调度分类:
长程调度/宏观调度/作业调度 【作业/磁盘】
中程调度/交换调度【进程/内存/磁盘】
短程调度/进程调度【进程/内存】
I/O调度/设备调度 【进程/设备】
进程调度的目标
![](https://img-blog.csdnimg.cn/img_convert/ddd63fb829858665a0a6fb47762cda18.png)
【红线连接部分会自相矛盾】
两个可以量化的衡量指标
周转时间/平均周转时间
带权周转时间/平均带权周转时间
周转时间
进程提交给计算机到完成所花费的时间(t)
t = tc- ts
ts——进程的提交时间(Start)
tc——进程的完成时间(Complete )
说明了进程在系统中停留时间的长短
平均周转时间
t = (t1 + t2 + … + tn)/ n
所有进程的周转时间的平均
平均周转时间越短,意味着所有进程在系统内停留的时间越短,因而系统吞吐量也就越大,资源利用率也越高
带权周转时间及平均周转时间
6.2进程调度算法(重点)
先来先服务调度(First Come First Serve)
按照作业进入系统的时间先后次序来挑选作业。先进入系统的作业优先被运行
特点:
缺点:晚来的作业会等待较长时间。
只考虑作业的等候时间,而没考虑运行时间的长短。因此,一个晚来但是很短的作业可能需要等待很长时间才能被运行,因而本算法不利于短作业。
短作业优先调度(Short Job First)
参考运行时间,选取时间最短的作业投入运行。
特点:
缺点:早来的长作业会长时间等待
忽视了作业等待时间,一个早来但是很长的作业将会在很长时间得不到调度,易出现资源“饥饿”的现象
响应比高者优先调度
响应比定义
作业的响应时间和与运行时间的比值
算法思想:调度作业时计算作业列表中每个作业的响应比,选择响应比最高的作业优先投入运行
特点
响应比 = 1 + 等待时间 / 运行时间
有利于短作业
有利于等候已久的作业。
兼顾长作业
优先数调度算法
根据进程优先数,把CPU分配给最高的进程。
进程优先数 = 静态优先数 +动态优先数
静态优先数
进程创建时确定,在整个进程运行期间不再改变。
动态优先数
动态优先数在进程运行期间可以改变。
循环轮转调度(ROUND-ROBIN)
把所有就绪进程按先进先出的原则排成队列。新来进程加到队列末尾
进程以时间片q为单位轮流使用CPU。刚刚运行了一个时间片的进程排到队列末尾,等候下一轮调度
优点
公平性:每个就绪进程有平等机会获得CPU
交互性:每个进程等待(N-1)* q的时间就可以重新获得CPU
时间片q的大小
如果q太大:
交互性差
甚至退化为FCFS(先来先服务)调度算法。
如果q太小:
进程切换频繁,系统开销增加
改进
时间片的大小可变(可变时间片轮转调度法)
组织多个就绪队列(多重时间片循环轮转)
Linux进程调度(重点)
基本特点:
1)基于优先级调度。
2)支持普通进程,也支持实时进程;
3)实时进程优先于普通进程;
4)普通进程公平使用CPU时间
Linux进程类型
Linux进程的优先级
调度方式
当一进程正在CPU上运行时,若有更高优先级的进程需要运行,系统如何分配CPU?
非抢占方式
让正在运行的进程继续执行,直到**该进程完成或发生某事件而进入“完成”或“阻塞”**状态时,才把CPU分配给新来的更高优先级的进程。
抢占方式
当更高优先级的进程来到时,便暂停正在运行的进程,立即把CPU分配给新来的优先级更高的进程。
Linux进程优先级(task_struct成员变量)
priority
counter
优先级 = priority + counter
nice (nice = 0)
priority = priority - nice
counter
进程在当前一轮调度中还能连续运行的时间片数量
进程counter越大则优先级越高,可获得越多的CPU时间
一般把counter看作动态优先级
新一轮调度开始时:counter = priority
时钟中断服务程序:counter - -
所有进程的counter都减到0后 :重新开始新一轮调度
调度函数(schedule函数)
在可运行队列中找到一个进程给它分配CPU
简答
MOOC单元作业
1.进程调度的目标有哪些
响应速度尽可能快;
进程处理的时间尽可能短;
系统吞吐量尽可能大;
资源利用率尽可能高;
对所有进程要公平;
避免饥饿;
避免死锁
2.什么是周转时间,什么是带权周转时间
周转时间是指进程提交给计算机到最终完成所花费的时间,说明了进程在系统中停留时间的长短。
带权周转时间是指进程的周转时间与运行时间的比值,说明了进程在系统的相对停留时间。
3.什么是响应比?响应比高者优先调度算法有什么特点
响应比是指作业的响应时间与运行时间的比值,响应时间为等待时间加运行时间。
相同等待时间,运行时间越短的作业响应比越高;相同作业时间,等待时间越长的作业响应比越高。
响应比高者优先调度算法有利于短作业和等候长的作业
4.试述优先数调度的算法概念?何为静态优先数,何为动态优先数?
优先数调度算法根据进程的优先数,把CPU分配给最高的进程。
进程优先数等于静态优先数加动态优先数。
静态优先数在创建进程时确定,基于进程所需的资源多少、运行时间长短、进程类型(IO/CPU、前台/后台、核心/用户)。
动态优先数在进程运行期间可以改变,基于使用CPU时长、I/O操作、等待时长。
5.试述循环轮转调度的概念和其优点
循环轮转调度是指把所有就绪进程按先进先出的原则排成队列,所有进程按时间片为单位轮流使用CPU,运行过但没结束的进程排队到队列末尾,等候下一轮运行。
该调度方式保证了进程调度的公平性和交互性
补充简答
1.动态优先数如何确定的?譬如:当使用CPU超过一定时长时,就减少(或增加)的动态优先数
与静态优先数的理念相同,本质上都是在基于进程类型分配优先级,额外处理了静态优先级可能存在的饥饿现象。
1、当使用CPU超过一定时长时,就减少的动态优先数,降低进程优先级,目的是保证不阻碍其他IO任务的处理;
2、当进行I/O操作后,就增加的动态优先数,主观上认为这个进程可能与IO操作有关,日后大概率还会需要IO操作提高进程优先级进程I/O操作;
3、当进程等待超过一定时长时,就增加的动态优先数,处理了可能出现的饥饿现象