gpt4 book ai didi

linux - 在 Linux 内核 [2.4] 中使用 need_resched 标志和 schedule() 例程

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:19 24 4
gpt4 key购买 nike

根据我的理解,当内核发现当前正在运行的进程应该剥离 CPU 时,它会启用 need_resched 标志。然后在返回用户空间之前检查该标志,如果该标志启用,内核将启动对 schedule() 的调用。但是我注意到,在 sys_sched_yield() 例程中,我们不使用 need_resched 标志,而是显式调用 schedule() 例程。为什么?

最佳答案

如所述here , need_resched 标志用于 外部 标记进程:在 scheduler_tick() 中断内,或者当进程被其他进程使用 try_to_wake_up 唤醒时()。需要标志,因为进程本身可能还没有准备好重新安排,所以重新安排被推迟到安全静止状态

如果进程自身请求重新调度,通过内核空间的schedule()调用,或者通过用户空间的sched_yield()系统调用,内核立即执行请求。假设进程知道它做什么。在最后一种情况下(当在用户空间调用 sched_yield() 时),内核知道在用户空间处理时重新安排总是安全的。

关于linux - 在 Linux 内核 [2.4] 中使用 need_resched 标志和 schedule() 例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31103362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com