+ -
当前位置:首页 → 问答吧 → preempt_disable后在schedule是调度不了的?

preempt_disable后在schedule是调度不了的?

时间:2010-11-10

来源:互联网

如题,实验了一下,是不能调度的

我的想法就是关闭抢占后,除非这进程的代码执行完自己preempt_enable,

之后自己调用schedule或者中断或者哪里执行了schedule才会使这个进程放弃cpu

否则,如果此进程一直没有preempt_enable的话就会一直在这个进程里,我这个理解对吗?



还有哪位同学能告诉我除了返回用户态之前会schedule,还有哪些地方会schedule? ----- 这是个初级问题,我知道,但是还希望拿出来讨论下,这样效果好,请勿见怪,多谢

作者: unbutun   发布时间: 2010-11-10

up

up

作者: unbutun   发布时间: 2010-11-11

本帖最后由 snail_314 于 2010-11-11 10:49 编辑

回复 unbutun


    关闭抢占只是关闭内核态的抢占,即当进程运行在内核态时是不会被莫名其妙的调度出去的,但是,自己显示地调用schedule(比如一些wait_event,sleep_on函数等)向os表达主动放弃cpu,还是可以被调度走的.

除了从系统调用返回,从中断返回时是调用点外;所有运行在用户态的时间都是调用点啊

作者: snail_314   发布时间: 2010-11-11