
操作系统(system模块中的head.s程序)接管CPU后,会使CPU进入保护模式.
包括CPU权限分级. 多任务,内存分页等各种功能。
地址转换:查全GDT --> 查LDT --> 找到段(确定段基址) --> 确定线性地址 = 段基址 + 偏移 --> 物理地址 = 线性地址 + 分页
段寄存器中存放的不再是被寻址段的基地址,而是一个段描述符表中某一描述符项在表中的索引值。
全局段描述符表:线性地址空间上一个数组。每个结构单元代表一个“段”
一“段”的含义:段基地址 (BASE)和大小(LIMIT),它们会参与到逻辑地址的转换过程。
局部段描述符表:通常每个任务使用一个LDT表。作为对GDT表的扩充。
(在Linux中,4个最主要的段描述符-用户态代码段/用户态数据段/内核态代码段/内核态数据段都被设置成 BASE=0x0000000, LIMIT=0xffffffff)