免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1513 | 回复: 1
打印 上一主题 下一主题

[进程管理] 运行队列 优先级数组 数组大小是100还是140 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之山东
日期:2016-08-09 14:05:01
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-12 20:15 |只看该作者 |倒序浏览
2.6.24 版本的内核  kernel/sched.c (3.11也是):
/*
* This is the priority-queue data structure of the RT scheduling class:
*/
struct rt_prio_array {
        DECLARE_BITMAP(bitmap, MAX_RT_PRIO+1); /* include 1 bit for delimiter */
        struct list_head queue[MAX_RT_PRIO];  
};
其中 MAX_RT_PRIO = 100;

《linux 内核编程》 P80 :    (我没找到这本书是针对哪个内核版本的,是不是有些早了?   2011年出版的)
struct prio_array {
        int nr_active;
        unsigned long bitmap[BITMAP_SIZE]; /* include 1 bit for delimiter */
        struct list_head queue[MAX_PRIO];
};

其中 MAX_PRIO = 140;

我的问题是:
   是不是可以认为2.6.24及以后的内核版本中只针对实时进程的就绪进程才有优先级队列,共100项,
而普通进程的就绪队列中只要进程的静态优位于100-139之间,就不再有优先级队列,所有优先级别的就绪进程都在一个就绪队列中

毕竟内核代码里面已经找不到140个数组这样的定义了,包括3.11版本

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
2 [报告]
发表于 2013-09-13 13:49 |只看该作者
回复 1# 1w2b3l
是不是可以认为2.6.24及以后的内核版本中只针对实时进程的就绪进程才有优先级队列,共100项,
而普通进程的就绪队列中只要进程的静态优位于100-139之间,就不再有优先级队列,所有优先级别的就绪进程都在一个就绪队列中

毕竟内核代码里面已经找不到140个数组这样的定义了,包括3.11版本


You're right!

优先级0-99表示rt进程,100-139表示普通进程。

对于实时进程,属于rt_prio_array[MAX_RT_PRIO] 100个队列中。

对于普通进程,使用cfs调度算法,存放在rbtree中。struct cfs_rq



   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP