首页 > 系统服务 > 详细

Linux内核设计与实现 总结笔记(第四章)进程调度

时间:2018-11-15 14:27:25      阅读:188      评论:0      收藏:0      [点我收藏+]

进程调度

调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间。

调度程序没有太复杂的原理,最大限度地利用处理器时间的原则是,只要有可以执行的进程,那么就总会有进程正在执行。

 

多任务

多任务系统可以划分为两类:非抢占式多任务和抢占式多任务。

Linux提供了抢占式的多任务模式,在此模式下,有调度程序来决定什么时候停止一个进程的运行,以便其他进程能够得到执行机会。

这个强制挂起的动作就叫抢占。进程在被抢占之前,能够运行的时间是预先设置好的,叫进程的时间片。

 

Linux 的进程调度

最终在2.6.23中确定了Linux的调度算法,称为“完全公平调度算法”,简称CFS。

 

策略

I/O消耗型和处理器消耗型进程

进程可以被分为I/O消耗型和处理器消耗型。

调度策略通常要在两个矛盾的目标中间寻找平衡:进程响应速度(响应时间短)和最大系统利用率(高吞吐量)。

 

进程优先级

调度算法中最基本的一类就是基于优先级的调度。通常做法是优先级高的进程先运行,低的后运行,相同优先级的进程按轮转方式进行调度。

Linux采用了两种不同优先级范围,第一种是用nice值,从-20到+19,默认为0。nice值越大,优先级越低

第二种范围是实时优先级,其值是可配置的。范围是0到99(包括0和99),实时优先级越高,数值越大。

nice和实时优先级是两个互不相交的范畴。

 

时间片

时间片是一个数值,它表明进程再被抢占前所能持续运行的时间。过长或过短的设置时间片都不合适,会增加系统开销。

很多操作系统默认10ms,但Linux的CFS调度系统不是直接分配时间片给进程,而是按nice值比例分配进程时间片。

而Linux的抢占也是需要根据时间片的,如果消耗的使用比比当前进程小,则新进程立刻投入运行,抢占当前进程。否则,退出其运行。

 

Linux调度算法

Linux调度器是以模块方式提供的,目的是可以允许不同类型的进程可以针对性的选择调度算法。这种模块化结构被称为调度器类。

 

Linux内核设计与实现 总结笔记(第四章)进程调度

原文:https://www.cnblogs.com/ch122633/p/9963196.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!