关于linux O(1)调度的一些疑问
时间:2011-02-28
来源:互联网
最近在阅读robert love《linux kernel development》里的进程调度,里面有些地方介绍的不是很清晰,我理解出现了偏差,希望大家能帮我解惑一下。因为我是一个初学者,可能会有些啰嗦,大家见谅。
1、调度为提高重新计算时间片的效率,维护了active和expired两个数组,书中没有明确指出何时互换,但我假设它是在active数组的所有在TASK_RUNNING上的进程用完时间片时(我觉得等所有进程用完时间片不现实,我认为休眠的进程应该还持有时间片),这下就存在一个问题:在数组互换的时候,那些原先存在于active中的非TASK_RUNNING就会被放入expired中,而这些睡眠的进程有可能是阻塞于IO的强交互性进程,它们被放入expired中会影响它们被及时调度,它说这个调度是侧重交互性的。
2、这个调度中还有一个机制,交互性极强的进程只要在expired不饥饿时就会继续留在active中,我再假设它在这里被重新计算了时间片。那么我是不是可以这样认为,只要存在这个调度认为交互性足够强的进程存在,那active和expired的交换有很可能会在expired饥饿之后(若这个强交互进程是active中最后一个有时间片的TASK_RUNNING进程,也有可能在expired饥饿之前离开TASK_RUNNING)?这样不就极大影响了别的进程,我觉得是不是太极端了。
3、这个调度强调交互性,那在一些网络服务器上的网络IO是否也会被认为是交互性?若不是,这些服务器往往没有多少其他的交互操作,那还为交互进程留出这么多资源岂不是很浪费?
1、调度为提高重新计算时间片的效率,维护了active和expired两个数组,书中没有明确指出何时互换,但我假设它是在active数组的所有在TASK_RUNNING上的进程用完时间片时(我觉得等所有进程用完时间片不现实,我认为休眠的进程应该还持有时间片),这下就存在一个问题:在数组互换的时候,那些原先存在于active中的非TASK_RUNNING就会被放入expired中,而这些睡眠的进程有可能是阻塞于IO的强交互性进程,它们被放入expired中会影响它们被及时调度,它说这个调度是侧重交互性的。
2、这个调度中还有一个机制,交互性极强的进程只要在expired不饥饿时就会继续留在active中,我再假设它在这里被重新计算了时间片。那么我是不是可以这样认为,只要存在这个调度认为交互性足够强的进程存在,那active和expired的交换有很可能会在expired饥饿之后(若这个强交互进程是active中最后一个有时间片的TASK_RUNNING进程,也有可能在expired饥饿之前离开TASK_RUNNING)?这样不就极大影响了别的进程,我觉得是不是太极端了。
3、这个调度强调交互性,那在一些网络服务器上的网络IO是否也会被认为是交互性?若不是,这些服务器往往没有多少其他的交互操作,那还为交互进程留出这么多资源岂不是很浪费?
作者: jeung 发布时间: 2011-02-28
看 sched.c 中的schedule()函数 那个函数里面都写了 什么时候交换,及相关的信息(源代码)
作者: shenyanxxxy 发布时间: 2011-02-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28