课程来源《操作系统_清华大学(向勇、陈渝)》
处理器和CPU调度
1.背景(CPU调度、CPU调度时间)、
2.调度准则(调度策略、程序执行模型、比较调度算法的准则、吞吐量VS延迟、公平的目标)、
3.调度算法(一般性的调度算法、针对嵌入式系统的特殊调度算法、多CPU多内核的调度算法)、
4.实时调度(实时系统、可调度性、单调度性(RM)、截至日期最早优先(EDF))、
5.多处理器调度、
6优先级反转
1.背景
上下文切换:
1.切换CPU的当前任务,从一个进程/线程到另一个,
2.保存当前进程/线程在PCB/TCB中的执行上下文(CPU状态),
3.读取下一个进程/线程的上下文
CPU什么时候上下文切换,怎么切换,主要看CPU调度。
CPU调度:
1.从就绪队列中挑选一个进程/线程作为CPU将要运行的下一个线程/进程
2.调度程序:挑选进程/线程的内核函数(通过一切调度策略)使得效率最高,满足用户需求
在进程/线程的生命周期中的什么时候进行调度? 从一个状态变为另一个状态,特别是和运行(running)相关的状态。
内核运行调度程序的条件:
1.进程从运行状态切换到等待状态
2.or终结了(done)
不可抢占调度,调度必须等待事件/进程结束,早期OS。
现在多为可以抢占的进程,OS决定在何时打断进程,调度程序在中断被响应后执行,当前进程从运行切换到就绪,或者一个进程从等待切换到就绪,可以被换出。
针对的是用户态的进程。
进程在内核中通过系统调用执行,因为系统调用返回时是到发起这个调用的进程继续执行,所以内核中不会切换,抢占。只要进程在系统调用时不存在从运行态到阻塞态的变化,OS可以确保返回正常。
如果在内核中也允许这种抢占,系统调用返回时不是原来的进程而是另一个优先级更高的进程,就是内核中的抢占。
早期是完全不可抢占,后来用户态进程允许抢占,现在内核态进程也可以抢占。
2.调度原则
调度原则:调度策略、程序执行模型、比较调度算法的准则、吞吐量VS延迟、公平的目标
CPU的占用率是波状,CPU大量运算是高峰,而读写I/O时是平稳的低值。
执行模型,程序在CPU突发和I/O中交替:
1.每个调度决定都是关于下一个CPU突发时将哪个工作交给CPU,
2.在时间分片下,线程可能在结束当前CPU突发前被迫放弃CPU。
程序在CPU突发和I/O中交替,CPU占用率高说明是在充分地使用CPU。
选择调度方法的评价指标:
CPU使用率:CPU处于忙状态的时间百分比
吞吐量:单位时间内完成的进程数量
周转时间:一个进程从初始化到结束包括(所有等待时间)所花费的时间,周转时间=等待时间+服务时间
等待时间:进程在就绪队列中的总时间,进程从就绪态到运行态的时间。
响应时间:一个请求被提交到第一次响应所花费的总时间
NEED SPEED FO