亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Linux 內(nèi)核--硬件中斷初始化及中斷描述符表

系統(tǒng) 2824 0

本文分析基于Linux 0.11內(nèi)核,轉(zhuǎn)載請(qǐng)標(biāo)明出處 http://blog.csdn.net/yming0221/archive/2011/06/01/6459119.aspx

以下是硬件初始化函數(shù)

其中set_trap_gate是宏定義

定義如下

中斷描述符定義如下:

在實(shí)地址模式中, CPU 把內(nèi)存中從 0 開始的 1K 字節(jié)作為一個(gè)中斷向量表。表中的每個(gè) 表項(xiàng)占四個(gè) 字節(jié),由兩個(gè)字節(jié)的段地址和兩個(gè)字節(jié)的偏移量組成,這樣構(gòu)成的地址便是相應(yīng)中斷處理程序的入口地址。但是,在保護(hù)模式下,由四字節(jié)的表 項(xiàng)構(gòu)成 的中斷向量 表顯然 滿足不了要求。這是因?yàn)椋? ? 除了兩個(gè)字節(jié)的段描述符,偏移量必用四字節(jié)來表示; ? 要有反映模式切換的信息。因此,在保護(hù)模式下,中斷向量表中的表項(xiàng)由 8 個(gè)字節(jié)組成,如圖 3.2 所示,中斷向量表也改叫做中斷描述符表 IDT Interrupt Descriptor Table )。其中的每個(gè)表項(xiàng)叫做一個(gè)門描述符( gate descriptor ),“門”的含義是當(dāng)中斷發(fā)生時(shí)必須先通過這些門,然后才能進(jìn)入相應(yīng)的處理程序。

Linux 內(nèi)核--硬件中斷初始化及中斷描述符表

3.2 門描述符的一般格式

其中類型占 3 位,表示門描述符的類型,主要門描述符是:

· 中斷門( Interrupt gate

其類型碼為 110, 中斷門包含了一個(gè)中斷或異常處理程序所在段的選擇符和段內(nèi)偏移量。當(dāng)控制權(quán)通過中斷門進(jìn)入中斷處理程序時(shí),處理器清 IF 標(biāo)志,即關(guān)中斷,以避免嵌套中斷的發(fā)生。中斷門中的 DPL Descriptor Privilege Level )為 0 ,因此,用戶態(tài)的進(jìn)程不能訪問 Intel 的中斷門。所有的中斷處理程序都由中斷門激活,并全部限制在內(nèi)核態(tài)。

· 陷阱門( Trap gate

其類型碼為 111, 與中斷門類似,其唯一的區(qū)別是,控制權(quán)通過陷阱門進(jìn)入處理程序時(shí)維持 IF 標(biāo)志位不變,也就是說,不關(guān)中斷。

· 系統(tǒng)門( System gate

這是 Linux 內(nèi)核特別設(shè)置的,用來讓用戶態(tài)的進(jìn)程訪問 Intel 的陷阱門,因此,門描述符的 DPL 3 。通過系統(tǒng)門來激活 4 個(gè) Linux 異常處理程序,它們的向量是 3 4 5 128 ,也就是說,在用戶態(tài)下,可以使用 int3 into bound int0x80 條匯編指令。

最后,在保護(hù)模式下,中斷描述符表在內(nèi)存的位置不再限于從地址 0 開始的地方,而是可以放在內(nèi)存的任何地方。為此, CPU 中增設(shè)了一個(gè)中斷描述符表寄存器 IDTR ,用來存放中斷描述符表在內(nèi)存的起始地址。中斷描述符表寄存器 IDTR 是一個(gè) 48 位的寄存器,其低 16 位保存中斷描述符表的大小,高 32 位保存 IDT 的基址,如圖 3.3 所示。

| 32位基地址|界限(16位) 共48位

圖3.3

其中的函數(shù)聲明

它們是通過匯編實(shí)現(xiàn)的/kernel/asm.s或/kernel/system_call.s

就拿divide_error函數(shù)來說明

asm.s中的匯編代碼:

堆棧使用情況如下圖

Linux 內(nèi)核--硬件中斷初始化及中斷描述符表

開始時(shí),堆棧指針esp指向中斷返回地址的一欄(esp0),eip是指令寄存器,它的內(nèi)容就是下一條指令的地址。然后通過pushl,將C函數(shù)

入棧,此時(shí)棧頂指針指向esp1處,通過交換指令xchgl %eax,(%esp),將eax和esp地址的內(nèi)容(C函數(shù)地址)交換。而棧的大小沒有發(fā)生

改變。當(dāng)有數(shù)據(jù)入棧,esp寄存器大小將相應(yīng)的減小。

Linux 內(nèi)核--硬件中斷初始化及中斷描述符表


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产国语一级a毛片高清视频 | 国产一区二区精品久久岳 | 国产一级特黄aa级特黄裸毛片 | 99精品国产免费久久国语 | 久青草国产手机在线视频 | 免费区一级欧美毛片 | 婷婷操| 国产毛片一区二区三区精品 | 国产亚洲精品国产福利在线观看 | 天天狠狠弄夜夜狠狠躁·太爽了 | 国产精品入口麻豆高清在线 | 国产一区二区免费不卡在线播放 | 久久国产精品只做精品 | 黑人巨大精品战中国美女 | 日本高清在线一区二区三区 | 日本久久黄色 | 中国女人内谢69xxxxx高清 | 天天操天 | 亚洲日本va中文字幕在线不卡 | 欧美成人精品高清在线播放 | 国产在线视频凹凸分类 | 97欧美在线看欧美视频免费 | 亚洲五月婷婷 | 欧美一级精品高清在线观看 | 久久 精品 | 久久香蕉国产线看观看亚洲片 | 久久精品亚洲一区二区三区浴池 | 奶交性视频欧美 | 成人精品视频在线 | 亚洲精品久久久久久动漫剧情 | 国产福利在线看 | 日韩亚洲欧美一区二区三区 | 精品一区二区三区在线观看 | 亚洲欧美一区二区三区麻豆 | 一级一级毛片看看 | 欧美金8天国 | 久久99精品国产99久久6男男 | 久久涩综合 | 豆奶视频污 | 日韩中文字幕精品 | 瑟瑟综合 |