如上圖所以 x86處理器有一個GDTR寄存器济舆,存放段描述符表的物理地址 ,在保護模式下莺债,CS DS 等段寄存器的地址會被mmu解釋成指向段描述符表項的索引滋觉,段寄存器中高13位用于指向段描述符表中的下表,而TI1位表示該表象在ldtr還是gdtr中齐邦,linux內(nèi)核中并未使用ldtr(不嚴禁的說法)椎侠,RPL位則表示該段的特權(quán)級別(操作系統(tǒng)的四個環(huán))
內(nèi)核在初始化和加載程序的時候會將cs ds等寄存技賦初值,我們來看下他們的初值 如下表:
根據(jù)段描述符表和段寄存器中的內(nèi)容可以找到相應(yīng)的段描述符措拇,從圖中來看我纪,kernel cs ds分別占用描述符表中第3,第4項,user cs ds占用5,6項
對于段描述符的解釋如下
從圖中可以看到所有的段都是從0開始丐吓,長度為4G浅悉,所以線性地址和物理地址是重合的,cpu尋址則指落在了ip寄存器的地址上券犁,從而繞過了段映射