启用分段:
就是在内存里面建立段描述符表,将寄存器里面的段寄存器变成段选择子,指向某个段描述符,这样就能实现不同进程的切换了。
启动分页:
能够管理的内存变大了,就需要将内存分成相等大小的块,
打开Gate A20:
- 8086 地址线20根 -> 可用内存 0 ~ FFFFF
寄存器却是16位,寻址模式为 segment(16位):offset(16位), 最大范围变成 0FFFF0(左移了4位) + 0FFFF =10FFEF
后果是多出来了 100000 ~ 10FFEF (访问这些地址时会回绕到 0 ~ FFEF) - 80286 开始地址线变多,寻址范围大大增大,但是又必须兼容旧程序,8086在访问 100000 ~ 10FFEF时
会回绕,但是 80286 不会 ,因为有第21根线的存在,会访问到实际的 100000 ~ 10FFEF 地址的内存。 - 于是 Gate A20 开关就诞生了,它的作用是:
1.实模式下 (存在的唯一理由是为了兼容8086):
打开 -> 寻址100000 ~ 10FFEF会真正访问
关闭-> 回绕到 0 ~ FFEF
2.保护模式下:
打开 -> 可连续访问内存
关闭 -> 只能访问到奇数的1M段,即 00000-FFFFF, 200000-2FFFFF,300000-3FFFFF…