計(jì)算機(jī)操作系統(tǒng)(第二版)課件:Linux中斷處理_第1頁(yè)
計(jì)算機(jī)操作系統(tǒng)(第二版)課件:Linux中斷處理_第2頁(yè)
計(jì)算機(jī)操作系統(tǒng)(第二版)課件:Linux中斷處理_第3頁(yè)
計(jì)算機(jī)操作系統(tǒng)(第二版)課件:Linux中斷處理_第4頁(yè)
計(jì)算機(jī)操作系統(tǒng)(第二版)課件:Linux中斷處理_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

中斷的產(chǎn)生每個(gè)能夠發(fā)出中斷請(qǐng)求的硬件設(shè)備控制器都有一條稱為IRQ(InterruptReQuest)的輸出線。所有的IRQ線都與一個(gè)中斷控制器的輸入引腳相連中斷控制器與CPU的INTR引腳相連中斷控制器執(zhí)行下列動(dòng)作:1,監(jiān)視IRQ線,對(duì)引發(fā)信號(hào)檢查2,如果一個(gè)引發(fā)信號(hào)出現(xiàn)在IRQ線上a,把此信號(hào)轉(zhuǎn)換成對(duì)應(yīng)的中斷向量b,把這個(gè)向量存放在中斷控制器的一個(gè)I/O端口,從而允許CPU通過(guò)數(shù)據(jù)總線讀這個(gè)向量c,把引發(fā)信號(hào)發(fā)送到處理器的INTR引腳,即產(chǎn)生一個(gè)中斷d,等待,直到CPU應(yīng)答這個(gè)信號(hào);收到應(yīng)答后,清INTR引腳3,返回到第一步傳統(tǒng)的中斷控制器:8259A傳統(tǒng)的中斷控制器使用兩片8259A以“級(jí)聯(lián)”的方式連接在一起每個(gè)芯片可以處理最多8個(gè)不同的IRQ線主從兩片8259A的連接:從主的IRQ2引腳因此,一共可以處理最多15個(gè)不同的IRQ線5.9中斷和異常的硬件處理

進(jìn)入中斷/異常假定:內(nèi)核已經(jīng)初始化,CPU在保護(hù)模式下運(yùn)行CPU的正常運(yùn)行:當(dāng)執(zhí)行了一條指令后,cs和eip這對(duì)寄存器包含了下一條將要執(zhí)行的指令的邏輯地址。在執(zhí)行這條指令之前,CPU控制單元會(huì)檢查在運(yùn)行前一條指令時(shí)是否發(fā)生了一個(gè)中斷或者異常。如果發(fā)生了一個(gè)中斷或異常,那么CPU控制單元執(zhí)行下列操作:1,確定與中斷或者異常關(guān)聯(lián)的向量i(0~255)2,讀idtr寄存器指向的IDT表中的第i項(xiàng)3,從gdtr寄存器獲得GDT的基地址,并在GDT中查找,以讀取IDT表項(xiàng)中的段選擇符所標(biāo)識(shí)的段描述符4,確定中斷是由授權(quán)的發(fā)生源發(fā)出的。中斷:中斷處理程序的特權(quán)不能低于引起中斷的程序的特權(quán)(對(duì)應(yīng)GDT表項(xiàng)中的DPLvsCS寄存器中的CPL)編程異常:還需比較CPL與對(duì)應(yīng)IDT表項(xiàng)中的DPL5.9中斷和異常的硬件處理

進(jìn)入中斷/異常5,檢查是否發(fā)生了特權(quán)級(jí)的變化,一般指是否由用戶態(tài)陷入了內(nèi)核態(tài)。

如果是由用戶態(tài)陷入了內(nèi)核態(tài),控制單元必須開(kāi)始使用與新的特權(quán)級(jí)相關(guān)的堆棧a,讀tr寄存器,訪問(wèn)運(yùn)行進(jìn)程的tss段b,用與新特權(quán)級(jí)相關(guān)的棧段和棧指針裝載ss和esp寄存器。這些值可以在進(jìn)程的tss段中找到c,在新的棧中保存ss和esp以前的值,這些值指明了與舊特權(quán)級(jí)相關(guān)的棧的邏輯地址5.9中斷和異常的硬件處理

進(jìn)入中斷/異常6,若發(fā)生的是故障,用引起異常的指令地址修改cs和eip寄存器的值,以使得這條指令在異常處理結(jié)束后能被再次執(zhí)行7,在棧中保存eflags、cs和eip的內(nèi)容8,如果異常產(chǎn)生一個(gè)硬件出錯(cuò)碼,則將它保存在棧中9,裝載cs和eip寄存器,其值分別是IDT表中第i項(xiàng)門(mén)描述符的段選擇符和偏移量字段。這對(duì)寄存器值給出中斷或者異常處理程序的第一條指定的邏輯地址5.9中斷和異常的硬件處理

進(jìn)入中斷/異常5.9從中斷/異常返回中斷/異常處理完后,相應(yīng)的處理程序會(huì)執(zhí)行一條iret匯編指令,這條匯編指令讓CPU控制單元做如下事情:1,用保存在棧中的值裝載cs、eip和eflags寄存器。如果一個(gè)硬件出錯(cuò)碼曾被壓入棧中,那么彈出這個(gè)硬件出錯(cuò)碼2,檢查處理程序的特權(quán)級(jí)是否等于cs中最低兩位的值(這意味著進(jìn)程在被中斷的時(shí)候是運(yùn)行在內(nèi)核態(tài)還是用戶態(tài))。若是,iret終止執(zhí)行;否則,轉(zhuǎn)入35.9從中斷/異常返回3,從棧中裝載ss和esp寄存器。這步意味著返回到與舊特權(quán)級(jí)相關(guān)的棧4,檢查ds、es、fs和

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論