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