操作系统第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  公平共享调度

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 小结:

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

  

 

 

 多处理器的调度:

 现象:优先级反转

 

 

 

 

 

posted @ 2020-03-07 17:24  LinBupt  阅读(191)  评论(0)    收藏  举报