操作系统第8章进程调度

上下文切换:
切换CPU的当前任务,从一个进程/线程到另一个-->保存当前进程/线程在PCB/TCB中的执行上下文(CPU状态)-->读取下一个进程/线程的上下文。
CPU调度:
从就绪队列中挑选一个进程/线程作为CPU将要运行的下一个进程/线程
调度程序:挑选进程/线程的内核函数(通过一些调度策略)
什么时候进行调度?

就绪状态:等待被调度,等待CPU时间
运行状态:
阻塞状态:等待资源
注意:只有就绪态和运行态可以相互转换,其它的都是单向转换。就绪状态的进程通过调度算法从而获得CPU时间,转为运行状态;而运行状态的进程,在分配给它的CPU时间片用完之后就会转为就绪状态,等待下一次调度
阻塞状态是缺少需要的资源从而由运行状态转换而来,但是该资源不包括CPU时间,缺少CPU时间会从运行态转换为就绪态


调度原则:充分利用CPU -->IO繁忙CPU利用率很低
进程:访问内存/访问IO/进行计算
评价指标:
1.CPU使用率:越高越好。定义:CPU处于忙状态所占时间的百分比
2.吞吐量:在单位时间内完成的进程数量。越高意味着进程的效率越好。
3.周转时间:一个进程从初始化到结束,包括所有等待时间所花费的时间。等待时间+服务时间。
4.等待时间:进程在就绪队列中的总时间。不是指阻塞态到被唤醒的时间。
5.响应时间:从一个请求被提交到产生第一次响应(还是到处理完毕?)所花费的时间。

这些指标之间是相互矛盾的,需要根据不同的场景设计不同的调度算法:

比如:Linux在桌面系统和服务器的调度策略就是不一样的

调度算法:一般系统中常用的调度算法
1.FCFS:First Come,First Served -->先来先服务
2.SPN(SJF) Shortest Process Next(Shortest Job First) 短进程(作业)优先
SRT Shortest Remaining Time 短剩余时间优先
3.HRRN Highest Response Ratio Next 最高响应比优先
4.Round Robin 轮循 使用时间切片和抢占来轮流执行任务 -->考虑公平性
5.Multilevel Feedback Queues 多级反馈队列 优先级队列中的轮循 -->强调公平、动态调整
6.Fair Share Scheduling 公平共享调度










小结:

实时调度:面向实时系统 确定性和可预测性



多处理器的调度:

现象:优先级反转




浙公网安备 33010602011771号