x64架构的处理器支持多种工作模式,包括实地址模式、保护模式、虚拟8086模式、系统管理模式和IA-32e模式,可以让处理器从一种模式进入另一种模式,但这些模式之间不能共存。
实地址模式和保护模式我们已经学过,虚拟8086模式是为了在保护模式下运行实地址模式的程序。系统管理模式是一个特殊的模式,不管处理器当前工作在哪种模式下,正在干什么,只要SMI引脚出现了信号,就进入系统管理模式,以执行特殊的软件和系统,完成特殊的工作。完成了这些工作后,可以返回到从前的工作模式和工作状态。只要进入系统管理模式的时间足够短,就能够以不易察觉的方式完成特殊工作,比如加解密。
尽管x64架构的处理器支持这么多工作模式,但是实际上,实地址模式和虚拟8086模式已经被淘汰,已经很难找到正在运行这种程序的计算机系统。随着整个计算机产业逐步完成从32位到64位的过渡,保护模式也已经过时,取而代之的是IA-32e模式。不过,所谓的保护模式已经过时,仅仅意味着这种处理器工作模式已经被IA-32e模式取代,但并不意味着业界可以在一夜之间将所有的保护模式程序换掉,换成IA-32e模式的程序,这是不可能的,因为这需要人力、时间和金钱方面的成本,这就是为什么x64架构的处理器要兼容保护模式的原因。这种兼容是以两种方式实现的。
其一,x64架构的处理器支持保护模式。这样它就可以运行以前的32位操作系统,这些操作系统工作在保护模式下,能运行传统的保护模式程序。
其二,x64架构的处理器新增了IA-32e模式,可以运行最新的64位操作系统,这些操作系统工作在64位模式下,可以执行64位程序,也可以执行传统的保护模式程序。换句话说,保护模式和64位模式可以在IA-32e模式下共存。
在这本书里,我们主要关注IA-32e模式,而且要演示IA-32e模式下的多处理器管理和初始化、多处理器多任务和任务调度、多处理器多线程和线程调度、数据竞争和互斥锁等相关主题,而本章的任务是演示如何从加电开机,一直到进入64位模式的整个过程。