cmpl $0,need_resched(%ebx) #ebx中存放着current指针
jne reschedule
……
reschedule:
call SYMBOL_NAME(schedule)
jmp ret_from_sys_call #反复查询need_resched
因此,只需要设置当前进程(current)的need_resched,就有机会启动调度器。通常有如下几种场合会设置need_resched:
由于启动schedule()的时机实际上由当前进程决定,因此设置了need_resched并不意味着就能及时调度,这也是"Linux内核不可抢占"的原因(详见下"Linux 2.4调度系统的一些问题"之"内核不可抢占")。
上一页 [1] [2] [3]
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18