我最近不得不解决 x86 PIC 的专有操作系统问题,其中操作系统预期定时器中断仅在 CPU0 上。我启用了 IO-APIC 来解决这个问题并进行了 CPU 控制,因此中断仅到达 CPU0。问题解决了。
有人告诉我,我们的硬件已经损坏,无法做这样的事情。即,当仅使用 PIC 时,在所有 CPU 上引发定时器中断。这里所说的“硬件”是 QEMU/KVM。
QEMU/KVM 是否有问题?操作系统是否做出了无效的假设?
我怀疑 QEMU/KVM 这样做是完全正确的,并且操作系统应该能够处理 CPU 上的定时器中断!= 0...
我认为这是真的,PIC通常只向CPU 0传递中断,包括定时器中断。大多数操作系统不会尝试使用 PIC 进行 SMP,因为 CPU1 无法获得或接收任何中断(包括用于进程调度的某种定时器中断);例如,带有“noapic”的 Linux 会禁用除 CPU0 之外的所有CPU。我认为这个操作系统在 qemu 中遇到了一个奇怪的极端情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)