处理器在实施任务切换时的操作——《x86汇编语言:从实模式到保护模式》读书笔记39
處理器在實(shí)施任務(wù)切換時(shí)的操作——《x86匯編語(yǔ)言:從實(shí)模式到保護(hù)模式》讀書筆記39
處理器可以通過(guò)以下四種方法實(shí)施任務(wù)切換:
1. call指令或者jmp指令的操作數(shù)是GDT內(nèi)的某個(gè)TSS描述符的選擇子;
2. call指令或者jmp指令的操作數(shù)是GDT或者LDT內(nèi)某個(gè)任務(wù)門的選擇子;
3. 一個(gè)異常或者中斷發(fā)生時(shí),中斷號(hào)指向IDT內(nèi)的某個(gè)任務(wù)門;
4. 在EFLAGS寄存器的NT位置位的情況下,當(dāng)前任務(wù)執(zhí)行了一個(gè)iret指令。
對(duì)于這四種方法,首先都可以得到一個(gè)TSS描述符的選擇子:
對(duì)于1,指令的操作數(shù)直接就是TSS選擇子;
對(duì)于2和3,任務(wù)門里包含了TSS選擇子;
對(duì)于4,當(dāng)前任務(wù)的TSS的任務(wù)鏈接域內(nèi)就是TSS選擇子。
這個(gè)TSS選擇子就決定了要切換到哪個(gè)任務(wù)。
在任務(wù)切換時(shí),處理器執(zhí)行以下操作:
1. 取得新任務(wù)的TSS描述符的選擇子(如上文所述)。
2. 檢查是否允許從當(dāng)前任務(wù)切換到新任務(wù)。
(1)數(shù)據(jù)訪問(wèn)的特權(quán)級(jí)檢查規(guī)則適用于JMP和CALL指令,當(dāng)前任務(wù)的CPL和新任務(wù)段選擇子(TSS描述符的選擇子或者任務(wù)門的選擇子)的RPL必須在數(shù)值上<=目標(biāo)TSS描述符或者任務(wù)門的DPL;
(2)異常、中斷(int n指令發(fā)起的中斷除外)和IRET指令引起的任務(wù)切換忽略目標(biāo)任務(wù)門或者TSS描述符的DPL;
(3)對(duì)于int n指令發(fā)起的中斷,要檢查DPL,要求在數(shù)值上,CPL<=任務(wù)門描述符的DPL;
3. 檢查新任務(wù)的TSS描述符是否已經(jīng)標(biāo)記為有效(P=1),并且界限也有效(>=103);
4. 檢查新任務(wù)是否可用。對(duì)于以CALL,JMP,異常或者中斷發(fā)起的任務(wù)切換,要求B=0;對(duì)于IRET發(fā)起的任務(wù)切換,要求B=1;
5. 檢查當(dāng)前任務(wù)和新任務(wù)的TSS,以及所有在任務(wù)切換時(shí)用到的段描述符已經(jīng)安排到系統(tǒng)內(nèi)存中;
6. 如果任務(wù)切換是由JMP或者IRET發(fā)起的,處理器清除當(dāng)前任務(wù)的B標(biāo)志;如果是由CALL指令、異常或者中斷發(fā)起的,當(dāng)前任務(wù)的B位保持原來(lái)的狀態(tài)(=1);
7. 處理器建立EFLAGS寄存器的一個(gè)臨時(shí)副本。如果任務(wù)切換由IRET指令發(fā)起,則清除副本中的NT標(biāo)志;如果是由CALL、JMP、異常或者中斷發(fā)起的,則保持副本中NT標(biāo)志不變。
8. 保存當(dāng)前任務(wù)的狀態(tài)到它的TSS中:所有通用寄存器、段寄存器中的段選擇子、剛才那個(gè)EFLAGS的副本,以及EIP;
9. 加載新任務(wù)的EFLAGS寄存器。如果任務(wù)切換是由CALL、異常或者中斷發(fā)起的,處理器把EFLAGS的NT標(biāo)志置位;如果是由IRET或JMP發(fā)起的,NT位不變。
10. 如果任務(wù)切換是由CALL、JMP、異常或者中斷發(fā)起的,處理器將新任務(wù)TSS描述符中的B標(biāo)志置位;如果由IRET發(fā)起,B保持原來(lái)的狀態(tài)(=1);
11. 用新任務(wù)的TSS選擇子和TSS描述符加載TR;
12. 新任務(wù)的TSS狀態(tài)數(shù)據(jù)被加載到處理器:包括LDTR寄存器、CR3、EFLAGS、EIP、通用寄存器、段選擇子;
13. 與段選擇子相對(duì)應(yīng)的描述符在驗(yàn)證后也被加載;
14. 開(kāi)始執(zhí)行新任務(wù)。
注意:任務(wù)切換時(shí),新任務(wù)的特權(quán)級(jí)別是由其段寄存器CS的低2位決定的,該寄存器的內(nèi)容取自新任務(wù)的TSS。
最后,再次給出那個(gè)表格,因?yàn)樗匾恕?
總結(jié)
以上是生活随笔為你收集整理的处理器在实施任务切换时的操作——《x86汇编语言:从实模式到保护模式》读书笔记39的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 左右伸缩_SSFB梳齿型桥梁伸缩缝安装步
- 下一篇: 第15章习题解答(一)——《x86汇编语