免费注册 查看新帖 |

Chinaunix

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

调度... [复制链接]

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-05 15:39 |显示全部楼层 |倒序浏览
10可用积分
A进程
调度策略:
SCHED_OTHER
优先级:
60

B进程:
调度策略:
SCHED_FIFO
优先级:
50

问:

同时启动A和B,那么A和B进程是如何运行的?

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
2 [报告]
发表于 2010-02-05 16:34 |显示全部楼层
像例子那样,实时进程的优先级小于普通进程的时候,那么普通进程会不会抢占实时进程而运行?

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
3 [报告]
发表于 2010-02-05 22:39 |显示全部楼层
不会,实时优先级需要绝对高于普通优先级,否则就没有意义了。另外,普通优先级不存在抢占,而是被调度,也 ...
NalaGinrut 发表于 2010-02-05 17:44



   
首先我想问的是:操作系统是按什么条件来决定调度哪个进程的?只是优先级吗?

我在aix下面试过,某个A线程的调度策略是sched_fifo,优先级是60(说明:在aix下,0是最大的优先级,127是最小的优先级),另外一个B线程的调度策略是sched_other,优先级是40,那么
按理来说,A线程应该运行完的,可实际上B线程先运行完了,感觉上B线程"抢占"了A线程,运行先了。

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
4 [报告]
发表于 2010-02-05 23:58 |显示全部楼层
回复 7# cjaizss

关于最先提出的问题,我用下面的方法来说明我的理解,不知对不对,请指教

cpu正在运行A进程,A的调度策略是SCHED_OTHER,优先级为40.此时醒来一个B进程(B的调度策略是SCHED_FIFO,
  优先级为60),那么B将抢占A得到运行(为什么能抢占呢?因为B的调度策略是SCHED_FIFO,B是个实时进程),但B运行一段时间后,调度程序发现A的优先级高于B,那么A将"抢占"B得到运行,
  运行一段时间(这段时间决定于该进程的分配的cpu时间片或者被其他更高的进程抢占或者被中断或系统调用)后,
  此时A的优先级变低了,B又将抢占A(虽然其他进程也可以抢占A,但由于B是实时进程,那么B先抢占),随着A的优先级变
  高,A最后又将抢占B,以此类推.
如此可见只要A的优先级高于B,那么就可以抢占B,所以A比B运行的快

注意:这里的优先级高低是0-129的,也就是说0是最高优先级的

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
5 [报告]
发表于 2010-02-06 00:00 |显示全部楼层
SCHED_OTHER是个什么算法?
prolj 发表于 2010-02-05 23:35



    linux内核的三种调度方法:
1,SCHED_OTHER 分时调度策略,
2,SCHED_FIFO实时调度策略,先到先服务
3,SCHED_RR实时调度策略,时间片轮转
实时进程将得到优先调用,实时进程根据实时优先级决定调度权值,分时进程则通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,也就是曾经使用了cpu最少的进程将会得到优先调度。

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
6 [报告]
发表于 2010-02-06 16:01 |显示全部楼层
从理论上说,优先级会作为调度时一个重要的权值,再根据运行时间,资源占用情况等等各种与进程运作相 ...
NalaGinrut 发表于 2010-02-06 08:12



    对于SCHED_FIFO来说,只有优先级的吧,比如:优先级是0(也就是最大优先级),它就会一直运行,知道自己终结或者遇到中断什么的

你可以看看 9楼的案例,我不明白为什么会出现这种情况

其实我问的是两个操作系统,aix或者linux 都可以讨论

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
7 [报告]
发表于 2010-02-06 17:13 |显示全部楼层
其实我问的是两个操作系统,aix或者linux 都可以讨论
------------------------------------------------- ...
NalaGinrut 发表于 2010-02-06 17:01




恩,那就讨论linux

    在linux下,SCHED_FIFO的A进程是不是一定优先于SCHED_OTHER的B进程先运行呢?

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
8 [报告]
发表于 2010-02-06 17:37 |显示全部楼层
本帖最后由 chenzhanyiczy 于 2010-02-06 17:38 编辑
恩~我本想回答,不过谨慎起见又查了一下,发现2.6.25以后又引入一些新概念如realtime bandwidth之类 ...
NalaGinrut 发表于 2010-02-06 17:29



    所言极是.现在就是理论和实践有冲突

  网上的文章很多只是说明了这几个调度策略的含义,并没有对它们的关系做解析

目前没有linux的环境,改天试试。
但可以肯定的是aix下就有这个问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP