天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

《30天自制操作系統(tǒng)》學(xué)習(xí)筆記(六)

發(fā)布時(shí)間:2017-04-19 20:05

  本文關(guān)鍵詞:30天自制操作系統(tǒng),由筆耕文化傳播整理發(fā)布。


30天自制操作系統(tǒng)》學(xué)習(xí)筆記(六)

發(fā)表于2016/7/3 14:51:55  99人閱讀

分類: 操作系統(tǒng)

IDT學(xué)習(xí)心得

(一)什么是中斷?

    通常被定義為一個(gè)事件,該事件改變處理器執(zhí)行的指令順序。例如通過(guò)鍵盤輸入、點(diǎn)擊鼠標(biāo)等


(二)為什么要引入中斷?

    因?yàn)镃PU的處理速度遠(yuǎn)高于外圍硬件設(shè)備的響應(yīng)速度,為了提高CPU的利用率,所以引入了中斷機(jī)制。當(dāng)某個(gè)設(shè)備發(fā)生變化時(shí)便會(huì)產(chǎn)生中斷,CPU就暫時(shí)停止正在處理的事務(wù),并做好接下來(lái)能夠繼續(xù)處理的準(zhǔn)備,轉(zhuǎn)而執(zhí)行中斷程序。中斷執(zhí)行完以后,在調(diào)用事先設(shè)定好的函數(shù),返回處理中的任務(wù)。這樣CPu可以不用一直查詢外圍硬件設(shè)備的狀態(tài),而將精力放在處理任務(wù)上。


(三)由中斷機(jī)制引出的問(wèn)題--當(dāng)發(fā)生中斷時(shí),如何告訴CPU該做些什么?

    通過(guò)中斷描述,中斷描述符包括了中斷門描述符、陷阱門描述符和任務(wù)門描述符



(四)中斷描述符如何存儲(chǔ)?

    與GDT類似,中斷描述符也是在內(nèi)存中連續(xù)存儲(chǔ),形成了一個(gè)中斷描述符表(Interruptor Descriptor Table,IDT),所以要想正確使用中斷,必須正確設(shè)置GDT和IDT。


(五)CPU如何查找IDT?

    與GDT的原理一樣,利用了一個(gè)叫IDTR的寄存器(注意此處是寄存器,不是內(nèi)存了,需要和IDT區(qū)別對(duì)待)。GDTR中高32位表示GDT在內(nèi)存中的基地址,低16位表示表界限,所以就明確的給出了GDT在內(nèi)存中的存儲(chǔ)信息。


    通過(guò)中斷門描述符的結(jié)構(gòu)圖可知,其中存儲(chǔ)了16位的段選擇符(Segment Selector),CPU根據(jù)這個(gè)段選擇符,從GDT中選擇相應(yīng)的段描述符(Segment Descriptor),并執(zhí)行相應(yīng)的代碼。如下圖。

(七)中斷向量又是什么?

其實(shí)每一種中斷(異常)都會(huì)對(duì)應(yīng)一個(gè)中斷向量號(hào),具體有哪些中斷向量,可以看下表:

向量號(hào) 助記符 描述 類型 出錯(cuò)碼 源

0 #DE 除法錯(cuò) Fault 無(wú) DIV和IDIV指令

1 #DB 調(diào)試異常 Fault/Trap 無(wú) 任何代碼和數(shù)據(jù)的訪問(wèn)

2 — 非屏蔽中斷 Interrupt 無(wú) 非屏蔽外部中斷

3 #BP 調(diào)試斷點(diǎn) Trap 無(wú) 指令I(lǐng)NT 3

4 #OF 溢出 Trap 無(wú) 指令I(lǐng)NTO

5 #BR 越界 Fault 無(wú) 指令BOUND

6 #UD 無(wú)效(未定義)操作碼 Fault 無(wú) 指令UD2或無(wú)效指令

7 #NM 設(shè)備不可用(無(wú)數(shù)學(xué)協(xié)處理器) Fault 無(wú) 浮點(diǎn)或WAIT/FWAIT指令

8 #DF 雙重錯(cuò)誤 Abort 有(0) 所有能產(chǎn)生異;騈MI或INTR
的指令

9


協(xié)處理器段越界(保留) Fault 無(wú) 浮點(diǎn)指令(386后不再處理此
異常)

10 #TS 無(wú)效TSS Fault 有 任務(wù)切換或訪問(wèn)TSS時(shí)

11 #NP 段不存在 Fault 有 加載段寄存器或訪問(wèn)系統(tǒng)段時(shí)

12 #SS 堆棧段錯(cuò)誤 Fault 有 堆棧操作或加載SS時(shí)

13 #GP 常規(guī)保護(hù)錯(cuò)誤 Fault 有 內(nèi)存或其他保護(hù)檢驗(yàn)

14 #PF 頁(yè)錯(cuò)誤 Fault 有 內(nèi)存訪問(wèn)

15 — Intel保留,未使用




16 #MF x87FPU浮點(diǎn)錯(cuò)(數(shù)學(xué)錯(cuò)) Fault 無(wú) x87FPU浮點(diǎn)指令或WAIT/FWAIT指令

17 #AC 對(duì)齊檢驗(yàn) Fault 有(0) 內(nèi)存中的數(shù)據(jù)訪問(wèn)(486開始支持)

18 #MC Machine Check Abort 無(wú) 錯(cuò)誤碼(若有的話)和源依賴于
具體模式(奔騰CPU開始支持)

19 #XF SIMD浮點(diǎn)異常 Fault 無(wú) SSE和SSE2浮點(diǎn)指令(奔騰三
開始支持)

20~31 — Inter保留,未使用




32~255 — 用戶定義中斷 Interrupt


外部中斷或int n指令

上表中除了兩個(gè)Interrupt(中斷)外,其他還有三種Fault、Trap、Abort異常。我們這里討論的中斷主要是用戶定義中斷,這種中斷產(chǎn)生的原因有兩種:一是外部中斷,就是由硬件產(chǎn)生的中斷;另一種是由指令int n產(chǎn)生的中斷。

外部中斷的情況則復(fù)雜一些,因?yàn)樾枰⒂布袛嗪拖蛄刻?hào)之間的對(duì)應(yīng)關(guān)系。外部中斷的簡(jiǎn)單示意圖如下:


(八)如何將中斷向量與中斷描述聯(lián)系起來(lái)

1.通過(guò)對(duì)8259A的配置,可將IRQ0~IRQ7對(duì)應(yīng)到中斷向量20h~27h,同樣地IRQ8~IRQ15可對(duì)應(yīng)到中斷向量28h~2Fh。書中給出的代碼如下:

void init_pic(void)

/* PIC初始化 */

{

    io_out8(PIC0_IMR,  0xff  ); /* 禁止所有中斷,主片 */

    io_out8(PIC1_IMR,  0xff  ); /* 禁止所有中斷,從片*/

    //主片設(shè)置

    io_out8(PIC0_ICW1, 0x11  ); /* 沿邊觸發(fā)模式 */

    io_out8(PIC0_ICW2, 0x20  ); /* IRQ0-7由INT20-27接收*/

    io_out8(PIC0_ICW3, 1 << 2); /* PIC1由IRQ2連接*/

    io_out8(PIC0_ICW4, 0x01  ); /*無(wú)緩沖區(qū)模式*/

    //從片設(shè)置

    io_out8(PIC1_ICW1, 0x11  ); 

    io_out8(PIC1_ICW2, 0x28  ); /* IRQ8-15由INT28-2f接收 */

    io_out8(PIC1_ICW3, 2     ); /*PIC1由IRQ2連接*/

    io_out8(PIC1_ICW4, 0x01  ); 


    io_out8(PIC0_IMR,  0xfb  ); /* 11111011 PIC1以外全部禁止 */

    io_out8(PIC1_IMR,  0xff  ); /* 11111111 禁止所有中斷*/


    return;

}


2.制作中斷處理程序


3.注冊(cè)到IDT中

void set_gatedesc(struct GATE_DESCRIPTOR *gd, int offset, int selector, int ar)

{

    gd->offset_low   = offset & 0xffff;

    gd->selector     = selector;

    gd->dw_count     = (ar >> 8) & 0xff;

    gd->access_right = ar & 0xff;

    gd->offset_high  = (offset >> 16) & 0xffff;

    return;

}

struct GATE_DESCRIPTOR *gd--表示要注冊(cè)的IDT位置

int offset--偏移(這個(gè)偏移是在代碼段中的偏移)

int selector--對(duì)應(yīng)的段描述符的選擇子


4.調(diào)用

例如set_getdesc(idt+0x21,(int)asm_inthandler21,2*8,AR_INTGATE32)



  本文關(guān)鍵詞:30天自制操作系統(tǒng),由筆耕文化傳播整理發(fā)布。

,

本文編號(hào):317020

資料下載
論文發(fā)表

本文鏈接:http://sikaile.net/wenshubaike/mishujinen/317020.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶a64c7***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com