Nei*_*ill 5 x86 kvm qemu pic apic
我最近不得不解决x86 PIC的专有操作系统问题,该操作系统期望的计时器仅在CPU0上中断。我启用了IO-APIC来解决此问题,并进行了CPU引导,因此中断仅进入CPU0。问题解决了。
有人告诉我,我们的硬件坏了,无法做到这一点。即,仅使用PIC时,在所有CPU上引发定时器中断。有问题的“硬件”是QEMU / KVM。
QEMU / KVM在这里吗?操作系统是否做出了无效的假设?
我怀疑QEMU / KVM完全正确,操作系统应该能够处理CPU上的定时器中断!= 0 ...
小智 4
我认为这是真的,PIC通常只向CPU 0传递中断,包括定时器中断。大多数操作系统不会尝试使用 PIC 进行 SMP,因为 CPU1 无法获得或接收任何中断(包括用于进程调度的某种定时器中断);例如,带有“noapic”的 Linux 会禁用除 CPU0 之外的所有CPU。我认为这个操作系统在 qemu 中遇到了一个奇怪的极端情况。