系统调度问题

一、什么是调度

  当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状,这个分配CPU时间的过程就是调度

二、调度的方式

  2.1 非剥夺方式:分派程序一旦把CPU分配给某进程后便让它一直运行下去,直到进程完成或发生某事件而阻塞时,才把处理机分配给另一个进程。

    2.2 剥夺方式

  当一个进程正在运行时,系统可以基于某种原则,剥夺已分配给它的CPU,将之分配给其它进程。剥夺原则有:优先权原则、短进程优先原则、时间片原则。
  例如,有三个进程P1、P2、P3先后到达,它们分别需要20、4和2个单位时间运行完毕。
假如它们就按P1、P2、P3的顺序执行,且不可剥夺,则三进程各自的周转时间分别为20、24、
26个单位时间,平均周转时间是23.33个时间单位。
假如用时间片原则的剥夺调度方式,可得到:
可见:P1、P2、P3的周转时间分别为26、10、6个单位时间(假设时间片为2个单位时间),平均周转时间为14个单位时间。
衡量进程调度性能的指标有:周转时间、响应时间、CPU-I/O执行期
 

三、为什么出现调度不过来?

  3.1调度不过来,简单来说,就是要求CPU在1小时内做1.5小时的工作量,CPU在1小时做不过来,就导致部分任务无法做;

  3.2为什么出现?

  CPU性能(工作效率:跟频率,cpu核数相关)不足以胜任这份工作量

  工作量太大,减少工作量

  程序占用太多CPU,要写出好的程序,1.尽量少调用效率低的接口(哪些是接口比较耗cpu???),2.线程/进程不需要CPU时,主动让出来;

原文地址:https://www.cnblogs.com/jly594761082/p/10310424.html