2.3.2 PRTOS对处理器的功能需求
什么样的处理器才能部署半虚拟化的Hypervisor呢?通常来说,满足以下6点的处理器就可以部署半虚拟化的Hypervisor。
1)处理器必须具有足够的处理能力,以满足用户的最坏执行时间(Worst-Case Execution Time,WCET)需求。
2)处理器具有控制I/O和内存资源的能力,以便Hypervisor可以接管所有硬件资源。
3)处理器具有定时器资源,以便实现分区虚拟定时服务。
4)处理器至少具有特权模式和用户模式这两种运行模式,使Hypervisor分区可以运行在用户模式下,Hypervisor内核运行在特权模式下,以便当分区执行非法指令时,处理器可以截获非法指令,并将控制权转移到运行在特权模式下的Hypervisor内核,由Hypervisor内核接管分区系统。
5)处理器提供具有原子操作的指令。原子操作指令是不可中断的指令。在单核CPU系统中,能够在一个指令中完成的操作都可以视作原子操作,因为中断只发生在指令之间;在多核CPU系统中,原子操作应确保即使多个处理器核心同时访问同一内存位置,操作也能保持一致性和正确性。这依赖于CPU的硬件实现,比如X86 CPU提供了HLOCK引脚,允许CPU在执行LOCK前缀指令时拉低HLOCK引脚的电位,直到这个指令执行完毕才放开,从而锁住了总线。这样,在同一总线的其他CPU就暂时无法通过总线访问内存了,保证了多核处理器的原子性。
6)处理器提供MMU机制(即页式内存管理机制),以便实现分区空间隔离。严格地说,CPU只要具有MPU硬件组件即可实现内存管理。
本书介绍的PRTOS选择的是满足上述条件的Intel X86处理器平台(支持Pentium架构)。之所以选择X86处理器,一方面是因为Intel所有的处理器都兼容32位X86指令集;另一方面很多优秀的虚拟平台(比如QEMU、VMware Workstation)对X86指令集的支持都非常完善,方便读者在这些平台上运行PRTOS系统,验证软件功能。