linux-kernel - 为什么《深入理解Linux内核》说APIC当仲裁优先级寄存器大于15时,就把它置为获胜CPU的前一个仲裁优先级加1的值
迷茫
迷茫 2017-04-17 14:41:27
0
0
345

最近在看《深入理解Linux内核》,看到第四章中断和异常中的这一段,关于APIC优先级仲裁,原文如下

来自外部硬件设备的中断请求以两种方式在可用CPU之间分发:

静态分发,IRQ信号传递给重定向表和相应项中所列出的本地APIC,中断立即传递给一个特定的CPU或一组CPU,也可以通过广播的方式发送给所有CPU。

动态分发,如果处理器正在执行最低优先级的进程,IRQ信号就传递给这种处理器的本地APIC,每个本地APIC都有一个可编程任务优先级寄存器TPR,TPR用来计算当前运行进程的优先级。

如果两个或多个CPU共享最低优先级,就利用仲裁技术在这些CPU之间分配负荷,在本地APIC的仲裁优先级寄存器中,给每个CPU都分配一个0~15范围内的值,其中0最低,15最高。

每当中断传递给一个CPU时,其相应的仲裁优先级就自动设置为0,而其他的每个CPU的仲裁优先级都增加1,当仲裁优先级寄存器大于15时,就把它置为获胜CPU的前一个仲裁优先级加1的值。因此中断以轮转方式在CPU之间分发,具有相同的任务优先级。

不太理解为什么

当仲裁优先级寄存器大于15时,就把它置为获胜CPU的前一个仲裁优先级加1的值

求指教
或者推荐下相关的分析文章,我自己去看看。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!