1

在 linux 内核 2.6.11 中,TIF_NEED_RESCHED 标志记录在每个任务的 thread_info 结构中。

查了一下内核,发现只能由CPU上的当前线程自己设置。那么为什么不将 TIF_NEED_RESCHED 放在每个 CPU 结构中,而不是放在每个 thread_info 中呢?

如果此标志仅用于显示此 cpu 上的当前线程需要 schedule(),那么我认为也许可以为每个 CPU 而不是每个线程记录它?

谢谢~

4

1 回答 1

1

不是我写的,所以不知道是不是我认为的原因。

thread_info在内核中很容易访问。在这种情况下,它相当于每个 CPU 的数据。
它用于指示需要重新调度,并且只保留在定时器中断和实际重新调度之间。所以很明显,运行的进程之间是不能变化的,设置data onthread_info就相当于设置per-cpu。

如果您担心内存消耗,那么每个进程一位是非常小的担心。并且考虑到标志在有或没有它的情况下占用 32 位,它甚至更小。

于 2012-04-19T13:24:11.837 回答