Intel的CPU有两种工作模式,分别是实模式(Real Mode)和保护模式(Protection Mode)。在不同的工作模式下,CPU的寻址方式是不同的。
第1章通过编写一个简单的例子,让内核程序打印Hello World,系统启动后会首先通过BIOS引导并跳转到0x7c00
的位置执行bootsect。在这个例子中,CPU直接通过段基址加偏移的寻址方式访问物理内存,这种工作方式称为实模式。实模式最早可以追溯到1978年,Intel发布首款x86架构的8086芯片。在实模式下,寻址范围不能超过1MB,也就是20位的地址空间。经过10年的发展,x86 CPU迎来了历史上使用最广泛、影响力最大的32位CPU,即后来被大家熟知的i386。i386的通用寄存器大小为32位,寻址空间最大支持4GB。除此之外,i386还引入了一种新的工作模式,通过提供对访问内存的保护机制,程序员不必直接操作物理内存,内存访问的安全性得到了提升,所以这种工作模式也被称为保护模式。
保护模式的核心在于引入了虚拟内存,使得每个进程都可以独享4GB的内存空间。本章将重点介绍保护模式内存管理的工作原理。另外,在保护模式下,中断的工作原理也发生了变化,这一章也将对保护模式下的中断机制进行详细介绍。注意,进入保护模式以后,BIOS中断将无法使用,所以在进入保护模式之前,操作系统应该充分使用BIOS中断的功能来获取足够多的信息,比如内存大小、硬盘参数等。这部分工作是由另一个独立模块setup来完成的。接下来就着手实现setup模块以获取硬件参数。