免费注册 查看新帖 |

Chinaunix

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

[中断] 中断与抢占的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-20 21:57 |只看该作者 |倒序浏览
应该怎么理解中断与抢占的关系呢,书上说禁止中断就禁止抢占,这个要怎么理解啊,从内核抢占的几个时机来理解么?那关中断的时候preempt_count有没有变化,源码里面没看到呢?

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
2 [报告]
发表于 2014-04-21 08:36 |只看该作者
抢占的时机(具体记不住了~)应该都与中断相关,关闭中断,意味着没有了抢占时机。

论坛徽章:
0
3 [报告]
发表于 2014-04-21 19:14 |只看该作者
书上的抢占关于抢占时机的解释,有一条是“重新变为可抢占的时候” 这个该怎么理解,我理解就是preempt_count重新变为0的时候,哪关中断难道也会改变preempt_count?源码里面没看到,不是很理解啊回复 2# humjb_1983


   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
4 [报告]
发表于 2014-04-22 09:05 |只看该作者
ykai229 发表于 2014-04-21 19:14
书上的抢占关于抢占时机的解释,有一条是“重新变为可抢占的时候” 这个该怎么理解,我理解就是preempt_cou ...

#define preempt_enable() \
do { \
        preempt_enable_no_resched(); \
        preempt_check_resched(); \
} while (0)
在preempt_enable的时候,会有抢占的时机。

论坛徽章:
0
5 [报告]
发表于 2014-04-22 15:56 |只看该作者
回复 1# ykai229
中断返回,以及preempt_enable的时候。


   

论坛徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16赛季CBA联赛之广东
日期:2018-02-05 11:22:1215-16赛季CBA联赛之八一
日期:2016-07-04 12:26:1815-16赛季CBA联赛之青岛
日期:2016-06-08 11:15:4115-16赛季CBA联赛之辽宁
日期:2016-04-05 10:10:1415-16赛季CBA联赛之辽宁
日期:2016-03-11 11:11:48酉鸡
日期:2014-12-18 14:35:48狮子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16赛季CBA联赛之广夏
日期:2018-03-21 08:51:10
6 [报告]
发表于 2014-04-22 16:52 |只看该作者
Linux 3.4,
asmlinkage void __sched notrace preempt_schedule(void)
{
        struct thread_info *ti = current_thread_info();

        /*
         * If there is a non-zero preempt_count or interrupts are disabled,
         * we do not want to preempt the current task. Just return..
         */
        if (likely(ti->preempt_count || irqs_disabled()))
                return;
..................
}

很怀疑在关中断的时候会调用preempt_enable? 不管怎样,关中断是无法调度的。

论坛徽章:
0
7 [报告]
发表于 2014-04-24 01:00 |只看该作者
看得我头晕,好复杂的概念。

论坛徽章:
0
8 [报告]
发表于 2014-04-24 23:01 |只看该作者
主动放弃CPU呢?我理解的是关中断就关闭了抢占式调度回复 6# daniel_11


   

论坛徽章:
0
9 [报告]
发表于 2014-04-24 23:03 |只看该作者
哪关中断和preempt_disable有关系?我想你说的preempt_enable的时候的抢占时机就是改变preempt_count的值吧回复 4# humjb_1983


   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
10 [报告]
发表于 2014-04-25 09:27 |只看该作者
ykai229 发表于 2014-04-24 23:03
哪关中断和preempt_disable有关系?我想你说的preempt_enable的时候的抢占时机就是改变preempt_count的值吧 ...

关中断,即没有了抢占的时机。关抢占即禁止抢占。没有直接关系。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP