Erlang ERTS的Trap机制的设计及其用途

 

需要进程调度的理由很简单,即充分利用计算机系统中的CPU资源,让计算机系统能够多快好省地完成我们让它做的各种任务。为此,可在内存中可存放数目远大于计算机系统内CPU个数的进程,让这些进程在操作系统的进程调度器的调度下,能够让进程高效(高的吞吐量--throughput)、及时(低延迟--latency)、公平(fairness)地使用CPU。为此调度器可设计不同的调度算法来选择进程,这体现了进程调度的策略,同时还需并进一步通过进程的上下文切换(context switch)来完成进程切换,这体现了进程调度的机制。总体上说,我们需要何时调度(调度的时机)、是否能够在内核执行的任意位置进行调度(调度的方式)、如何完成进程切换(上下文切换)、如何选择“合适”的进程执行(调度策略/调度算法)、如何评价选择的合理性(进程调度的指标)。了解上述细节,也就可以说是了解了进程调度。 

 

进程调度的方式

  • 可抢占式(可剥夺式,preemptive):就绪队列中一旦有某进程的优先级高于当前正在执行的进程的优先级时,操作系统便立即进行进程调度,完成进程切换。
  • 不可抢占式(不可剥夺式non_preemptive):即使在就绪队列存在有某进程优先级高于当前正在执行的进程的优先级时,当前进程仍将占用处理机执行,直到该进程自己进入阻塞状态,或时间片用完,或在执行完系统调用后准备返回用户进程前的时刻,才重新发生调度让出处理机。

显然,可抢占式调度可有效减少等待时间和响应时间,但会带来较大的其他管理开销,使得吞吐量等的性能指标比不可抢占式调度要低。所以一般在桌面计算机中都支持可抢占式调度,使得用户可以得到更好的人机交互体验,而在服务器领域不必非要可抢占式调度,而通常会采用不可抢占式调度,从而可提高系统的整体吞吐量。

 

参考:

Erlang ERTS的Trap机制的设计及其用途

github: process schedule principle 

posted @ 2014-12-28 23:35  等风来。。  Views(511)  Comments(0Edit  收藏  举报
------------------------------------------------------------------------------------------------------------ --------------- 欢迎联系 x.guan.ling@gmail.com--------------- ------------------------------------------------------------------------------------------------------------