x86 PIC, QEMU在所有cpu上引发中断是否正确?



我最近不得不解决x86 PIC的专有操作系统问题,操作系统期望计时器只在CPU0上中断。我启用IO-APIC来解决这个问题,并进行CPU转向,这样中断就只会到达CPU0。问题解决了。

我被告知我们的硬件坏了,不能做这样的事情。即,当只有一个PIC正在使用时,在所有cpu上引发定时器中断。这里的"硬件"是QEMU/KVM。

QEMU/KVM有问题吗?操作系统是否做了一个无效的假设?

我怀疑QEMU/KVM在这方面是完全正确的,操作系统应该能够处理CPU上的定时器中断!= 0…

我认为这是真的,PIC通常只向CPU 0提供中断,包括定时器中断。大多数操作系统不会尝试使用PIC进行SMP,因为CPU1-whatever不能获得或接收任何中断(包括用于进程调度的某种定时器中断);例如,带有"noapic"的Linux禁用除CPU0之外的所有内容。我认为这个操作系统在qemu中遇到了一个奇怪的角落。

最新更新