考虑Cell / B.E的情况。处理器运行多个SPU上下文/线程,其中该数量超过系统上的SPU数量。因此,Linux调度程序将运行给定的上下文,直到它到达其时间片的末尾,然后将其交换为运行不同的上下文。
在我们的系统中,我们有一些概念上处于“等待”状态的SPU上下文 - 我们不希望它们现在运行,但我们希望稍后重新激活它们。因此,我们希望Linux调度程序不要交换它们并驱逐当前正在运行的其他SPU上下文。
我们已经通过让SPU上下文执行spu_readch内部函数来实现这种等待状态,该函数在来自PPU的“信号1”通信信道中进行阻塞读取。然后,当我们想要唤醒SPU上下文时,我们会向该频道写一些内容。
因此,问题是:如果SPU上下文正在等待通信通道上的阻塞读取,Linux调度程序是否会将其分页到SPU上,或者调度程序是否会识别它并且不会将其写入,直到某些内容写入频道?
(如果您能指出我在Linux内核代码中实现此功能的地方,那么可以获得奖励!)