内存管理寄存器
處理器提供了4個內存管理寄存器(GDTR、LDTR、IDTR和TR),用于指定分段內存管理所使用的系統表的基地址。處理器為這些寄存器加載和保存提供了特定的指令。
GDTR、LDTR、IDRTR和TR都是段基址寄存器,這些段中包含分段機制的重要信息表,GDTR、IDTR和LDTR用于尋址存放段描述符的段。TR用于尋址一個特殊任務狀態段TSS(Task State Segment)。TSS段中包含當前窒息感任務的重要信息。 1.全局描述符表寄存器GDTR GDTR寄存器中用于存放全局描述符表GDT的32位線性基地址和16位表長度值。基地址指定GDT表中字節0在線性地址空間中的地址,表長度指明GDT表的字節長度值。指令LGDT和SGDT用于加載和保存GDTR寄存器的內容。在機器剛加電或處理器復位后,默認基地址設置為0,而長度被設置成0XFFFF,在保護模式初始化過程中必須給GDTR加載一個新值。 2.中斷描述符表寄存器IDTR 與GDTR的作用類似,IDTR寄存器用于存放中斷描述符表IDT的32位線性基地址和16位表長度值,指令LIDT和SIDT分別用于加載和保存IDTR寄存器的內容。在機器剛加電或者處理復位后,基地址被默認設置為0,而長度值設置為0XFFFF。 3.局部描述符表寄存器LDTR LDTR寄存器中用于存放局部描述符LDT的32位線性基地址、16位段限長和描述符屬性值。LLDT和SLDT分別用于加載和保存LDTR寄存器的段描述符部分。包含LDT表的段必須在GDT表中有一個段描述符項,當使用LLDT指令把含有LDT表段的選擇符加載進LDTR時,LDT段描述符的段基地址、段限長度以及描述符屬性會被自動加載到LDTR中。當進行任務切換時,處理器會把新任務的段選擇符合段描述符自動加載近LDTR中。在機器剛加電或者處理復位后,基地址被默認設置為0,而長度值設置為0XFFFF。 4.任務寄存器TR TR寄存器用于存放當前任務TSS段的16位段選擇符、32位基地址、16位段長度和描述符屬性值。它引用GDT表中一個TSS類型的描述符。指令LTR和STR分別用于加載和保存TR寄存器的段選擇符部分。當使用LTR指令把選擇符加載近任務寄存器時,TSS描述符中的段基地址、段限長度以及描述符屬性會被自動的加載到任務寄存器中。當執行任務切換時,處理器會把新任務TSS的段選擇符和段描述符自動加載到TR寄存器中。
GDTR、LDTR、IDRTR和TR都是段基址寄存器,這些段中包含分段機制的重要信息表,GDTR、IDTR和LDTR用于尋址存放段描述符的段。TR用于尋址一個特殊任務狀態段TSS(Task State Segment)。TSS段中包含當前窒息感任務的重要信息。 1.全局描述符表寄存器GDTR GDTR寄存器中用于存放全局描述符表GDT的32位線性基地址和16位表長度值。基地址指定GDT表中字節0在線性地址空間中的地址,表長度指明GDT表的字節長度值。指令LGDT和SGDT用于加載和保存GDTR寄存器的內容。在機器剛加電或處理器復位后,默認基地址設置為0,而長度被設置成0XFFFF,在保護模式初始化過程中必須給GDTR加載一個新值。 2.中斷描述符表寄存器IDTR 與GDTR的作用類似,IDTR寄存器用于存放中斷描述符表IDT的32位線性基地址和16位表長度值,指令LIDT和SIDT分別用于加載和保存IDTR寄存器的內容。在機器剛加電或者處理復位后,基地址被默認設置為0,而長度值設置為0XFFFF。 3.局部描述符表寄存器LDTR LDTR寄存器中用于存放局部描述符LDT的32位線性基地址、16位段限長和描述符屬性值。LLDT和SLDT分別用于加載和保存LDTR寄存器的段描述符部分。包含LDT表的段必須在GDT表中有一個段描述符項,當使用LLDT指令把含有LDT表段的選擇符加載進LDTR時,LDT段描述符的段基地址、段限長度以及描述符屬性會被自動加載到LDTR中。當進行任務切換時,處理器會把新任務的段選擇符合段描述符自動加載近LDTR中。在機器剛加電或者處理復位后,基地址被默認設置為0,而長度值設置為0XFFFF。 4.任務寄存器TR TR寄存器用于存放當前任務TSS段的16位段選擇符、32位基地址、16位段長度和描述符屬性值。它引用GDT表中一個TSS類型的描述符。指令LTR和STR分別用于加載和保存TR寄存器的段選擇符部分。當使用LTR指令把選擇符加載近任務寄存器時,TSS描述符中的段基地址、段限長度以及描述符屬性會被自動的加載到任務寄存器中。當執行任務切換時,處理器會把新任務TSS的段選擇符和段描述符自動加載到TR寄存器中。
總結
- 上一篇: 操作系统类指令
- 下一篇: 控制寄存器和系统地址寄存器