CPU调度其任务是控制 、协调进程对CPU的竞争。
即按一定的调度算法从就绪队列中选择一个进程,把CPU 的使用权交给被选中的进程如果 没有就绪进程,系统会安排一个 系统空闲进程或idle
2、进程切换进程切换:是指一 个进程让出处理器,由另一个进程占用处理器的 过程
进程 切换主要包括两部分工作:
切换全局页目录以加载一个新的地址空间
切换 内核栈 和硬件上下文,其中硬件上下文包括了内核执行新进程需要的全部信息 , 如CPU 相关 寄存器
切换过程包括了 对原来运行进程各种状态 的保存和对 新的进程各种状态 的恢复
3、进程上下文切换具体步骤场景:进程A 下CPU ,进程B 上CPU
保存进程A 的上下文环境(程序计数器、程序状态字、其他寄存器…… )
用新状态和其他相关信息更新进程A 的PCB
把进程A 移至合适的队列(就绪、阻塞…… )
将进程B 的状态设置为运行态
从进程B 的PCB 中恢复 上下文(程序计数器 、 程序状态字、其他寄存器…… )
直接开销:内核完成切换所用 的CPU 时间
保存和恢复寄存器……
切换地址空间 (相关指令比较 昂贵)
间接开销
- 高速缓存(Cache) 、缓冲区缓存(Buffer Cache) 和TLB(Translation Look-aside Buffer)
吞吐量 Throughput — 每单位时间完成的进程数目
周转时间TT(Turnaround Time)
每个进程从提出请求到运行完成的时间
响应时间RT(Response Time)
从提出请求到第一次回应的时间
其他
- CPU 利用率(CPU Utilization)
CPU 做有效工作的时间比例
- 等待时间(Waiting time)
每个进程在就绪队列(ready queue) 中等待的时间
不仅要决定选择哪一个 进程执行
还需要决定在 哪一个CPU 上执行
要 考虑进程在多个CPU 之间迁移时的开销
高速缓存失效、TLB 失效
尽可能使进程总是在同一个CPU 上执行
如果每个进程可以调度到所有CPU 上,假如进程上次在CPU1 上执行,本次被调度到CPU2 ,则会 增加高速缓存 失效、TLB 失效; 如果 每个 进程尽量调度到指定的CPU 上,各种失效就会减少
考虑 负载 均衡问题
先来先服务(FCFS-First Come First Serve )
最短作业优先(SJF-Shortest Job First )
最短剩余时间优先(SRTN-Shortest Remaining Time Next )
最高相应比优先(HRRN-Highest Response Ratio Next )
轮转调度(RR-Round Robin )
最高优先级调度(HPF—Highest Priority First )
多级反馈队列(Multiple feedback queue )
最短进程优先(Shortest Process Next )
本文整理自:《操作系统原理》北京大学_陈向群 讲义 四、五、六部分内容可以参考课件:课件下载地址
个人微信公众号:
作者:jiankunking 出处:http://blog.csdn.net/jiankunking