假设我有一个超线程处理器,操作系统将它们看作是两个不同的虚拟处理器-- vp1和vp2。现在,在LWP1 on vp1中,我禁用硬件中断中断。这不等于说,除非启用,否则这两个虚拟处理器都不会得到任何中断吗?如果这是真的,这也意味着在另一个处理器vp2上启用另一个vp2上的中断也会启用vp1上的中断?我假设从内核禁用中断,只在本地处理器上禁用中断。
请解释一下这是怎么回事。
发布于 2017-10-04 16:43:47
超线程处理器的两个逻辑核都有自己的APIC ID,因此就中断而言,它们是单独的CPU。(在“骑士的登陆”/“西翁哲学”中,四个逻辑核心)
这使得可以在任何一个逻辑核心上禁用中断,而不依赖于其他任何东西,在内核模式下使用cli / sti。一切都与非SMT多核系统完全相同,因为超线程就是这样设计的。
其他任何事情都是不方便和奇怪的,有时会禁用等待的中断,从而增加另一个逻辑核心的延迟时间,因此很明显,这是英特尔设计它的明智方式。
https://stackoverflow.com/questions/46560224
复制相似问题