8086cpu地址总线长为20。为了兼容所有之前的cpu,新的32位cpu设置了a20控制器,a20控制器关闭时,地址长度为20位,内存寻址空间为0 - 1MB。因此在bios初始化时,打开a20控制器,就能寻址32位空间。
cpu在bios初始化硬件后,会接着执行硬盘中第一个扇区中的指令(bootloader),扇区大小为512B。第一个扇区中的指令首先打开a20控制器,进入保护模式,接着再加载整个操作系统内核。但是对于现今的大型操作系统,512B太小无法加载整个系统,第一个扇区就需要再加载另外的操作系统加载程序,比如grub。然后由操作系统加载程序(grub)加载操作系统。
参考:https://max.book118.com/html/2018/0424/162911313.shtm