进程调度
背景:
1、上下文切换
·切换cpu的当前任务,从一个进程到另一个进程
·保存当前线程的资源(寄存器等)
·加载下一个进程的上下文
2、cpu调度
从就绪队列中挑选一个进程作为下一个运行进程
·通过调度策略选择进程
调度时机:
1、进程从运行状态切换到等待状态
2、一个进程被终结
3、可抢占,不可抢占
调度算法原则:
1、CPU利用率 :CPU处于忙状态所占时间的百分比
2、吞吐量:单位时间完成的进程量
3、周转时间:进程从初始化到结束所有等待时间所花费的时间
4、等待时间:进程在就绪队列中的总时间
5、响应时间:从一个请求被提交到产生第一次相应所花费的时间
调度算法:
1、FCFS(先来先服务)
2、SPN(SJF)SRT(短进程优先(短作业优先)短剩余时间优先):可能连续的短任务导致长任务饥饿。
3、HRRN(最高响应比优先): 优先权 = (等待时间 + 要求服务时间) / 要求服务时间又因为等待时间 + 要求服务时间 = 响应时间,所以优先权 = 响应时间 / 要求服务时间。
4、Round Robin(轮循):每个一段时间切换线程。
5、多级反馈队列:动态改变进程的优先级(根据线程需要CPU的时间动态改变进程,如有可能线程在IO操作),随着等待时间越长优先级就越来越高,时间短优先级就越来越低。
6、公平共享调度
实时调度:针对实时操作系统使用的调度算法
优先级反转:
低优先级任务影响到高优先级的任务执行(通过对共享资源的持有),这时后只需要将优先级传递给资源。