在linux内核2.6.11中,TIF_NEED_RESCHED标志记录在每个任务的thread_info结构中。
我搜索了内核并发现它只能由CPU上的当前线程自行设置。那么为什么不将TIF_NEED_RESCHED放在每个CPU结构中而不是每个thread_info中呢?
如果此标志仅用于显示此cpu上的当前线程需要schedule(),那么我想也许可以为每个CPU而不是每个线程记录它?
感谢〜
答案 0 :(得分:1)
我没有写,所以我不知道我认为是不是原因。
thread_info
在内核中非常容易访问。在这种情况下,它相当于每CPU数据
它用于指示需要重新调度,并且仅保留在定时器中断和实际重新调度之间。很明显,运行过程不会在两者之间发生变化,而thread_info
上的设置数据相当于设置per-cpu。
如果您担心内存消耗,那么每个进程一位是一个非常小的担忧。考虑到标志带或不带有32位,它甚至更小。