Linux进程调度(Linux内核设计与实现学习笔记)

1. 进程优先级

调度算法中最常见的一类就是优先级调度。Linux采用两种不同的优先级范围,一种是用nice值,其范围从-20到+19,默认值为零,越大的nice值意味着越低的优先级。在MacOS中,nice值代表进程时间片的绝对值,而Linux系统中,nice值表示时间片的比例。另一种是采用实时优先级,其值是可配置的,默认范围从0到99,越高的实时优先级意味着进程的优先级越高。任何实时进程的优先级都高于普通进程,也就是说nice值和实时优先级处于互不相交的两个范畴。

2. 时间片

时间片是一个数值,表示进程被抢占前所能持续的时间。调度策略会规定一个默认的时间片,时间片过长会导致系统的交互性能欠佳,而时间片过短会带来进程切换的处理耗时。调度算法根据是普通进程还是实时进程有很大的不同,对于普通进程来说,基本时间片的确定和静态优先级有关,静态优先级是内核采用的从100到139的数值来表示的,越小的数字代表了越高的静态优先级:


新进程总是继承父进程的静态优先级,不过进程可以通过nice()和setpriority()系统调用来改变自己的静态优先级。

3. Linux公平调度算法

公平调度(CFS)的做法是允许每个进程运行一段时间、循环运行、选择运行最少的进程作为下一个运行进程,而不再采用分配时间片给进程的做法了。CFS的做法是在可运行进程总数上计算出一个进程应该运行多久,而不是依靠nice值来计算时间片。nice值作为进程获取时间片的权重:越高的nice值获得越低的处理器权重。CFS设立了一个‘目标延迟’,根据进程间nice值的差值来计算时间片,假设目标延迟为20ms,那么nice值为0和5的两个进程和nice值为10和15的两个进程所获得时间片是一样的,都是高nice值获得5ms的时间片,低nice值获得15ms的时间片。

4. 进程选择

当CFS选择下一个运行进程时,它会选择具有最小虚拟运行时间(vruntime)的进程,这就是CFS调度算法的核心。CFS通过红黑树来组织运行进程队列,通过键值来寻找最小虚拟运行时间。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值