【OS学习笔记】十一 实模式:中断-软中断和硬中断基本原理
上一篇文章我們模擬操作系統(tǒng)的加載器程序,使用匯編語言實現(xiàn)了一個程序加載器:點擊鏈接查看上一篇文章:程序加載器的實現(xiàn)原理
本篇文章,是實模式學習的結尾。在經(jīng)過了那么多坎坷,終于學完了8086的實模式!!!最重要的是本篇文章沒有匯編代碼,只講原理~~ 今天的內(nèi)容比較簡單,學習一下中斷的原理-包括硬中斷和軟中斷。主要理解以下內(nèi)容:
- 硬中斷的工作原理
- 軟中斷的工作原理
- 中斷向量表
1、硬中斷
硬中斷一般是外部硬件中斷-就是從處理器外部來的中斷信號。
當外部設備發(fā)生錯誤或者有數(shù)據(jù)要傳送時,或者處理器交給它的任務處理完了,它都會向處理器發(fā)送信號,高速處理器。
如下圖,外部硬件中斷是通過兩個信號線引入處理器內(nèi)部的。這兩根線的名字恩別叫做NMI和INTR
當一個中斷發(fā)生時,處理器將會通過中斷引腳NMI和INTR得到通知。除此之外,處理器還需要知道發(fā)生了什么,以便采取適當?shù)奶幚泶胧?/p>
每種類型的中斷都被統(tǒng)一編號,這稱為中斷類型號、中斷向量或者中斷號。
1.1 非屏蔽中斷(不可屏蔽中斷)
NMI接收的是不可屏蔽中斷。
不可屏蔽中斷的中斷號統(tǒng)一為2(因為所有不可屏蔽中斷都幾乎是致命的無法解決,所以處理器干脆不處理的,統(tǒng)一將他們的中斷號令為2,處理器接收到2號中斷時直接放棄繼續(xù)正常工作,也不會試圖糾正已經(jīng)發(fā)生的錯誤。)。
1.2 可屏蔽中斷
和NMI不同,INTR一般接收的是可屏蔽中斷。大多數(shù)的中斷也是可屏蔽中斷。
INTR接收可屏蔽中斷。
Intel處理器允許有256個中斷。中斷號是0~255。如下圖是一個中斷控制器,它管理傳送來的中斷信號,決定是否將中斷傳送給CPU。
以上兩個8259芯片負責15個中斷號的管理。注意這里為什么是15個而不是256個呢?其實是每次它管理的中斷號不一樣的,這一次可能管理的是10-25號,下次可能管理的是其他的號。
那么在哪里屏蔽中斷或者不屏蔽中斷呢?實際上有兩個位置,一個是8259內(nèi)部,一個是處理器內(nèi)部。
**8259內(nèi)部:**在8259內(nèi)部有一個中斷屏蔽寄存器,這是個8位寄存器,對應著該芯片的8個輸入引腳,對應的位是0還是1決定了該引腳輸入的中斷是否能通過8259芯片。0表示允許 1表示阻斷
**處理器內(nèi)部:**除了要看8259內(nèi)部,最終還要看處理器。處理器內(nèi)部的標志寄存器FLAGS有一個標志IF。這是中斷標志。當IF為0時所有從INTR來的中斷都被忽略。當IF為1時處理器可以接收和相應中斷。
1.3、實模式下中斷向量表
所謂中斷處理,就是處理器要執(zhí)行一段與該中斷有關系的程序(指令)。處理器可以識別256個中斷,那么理論上就需要256個中斷程序。
這些程序的實際位置并不重要,重要的是,在實模式中,處理器要求將它們的入口點(還記得程序的入口點么?不記得話看上一篇文章)集中存放到內(nèi)存中的從物理地址0x00000處(0x0000:0x0000)到0x003ff處(0x0000:0x03ff)。共1KB的內(nèi)存空間。這就是所謂的中斷向量表。
如下圖是實模式下的中斷向量表:
中斷信號來自哪個引腳,8259芯片是最清楚的,所以他會把相應的中斷號告訴處理器,處理器拿著這個中斷號,要順序做以下幾件事:
-
保護斷點的現(xiàn)場
- 首先將FLAGS寄存器壓棧,然后清楚它的IF位(防止在中斷的時候被打斷,如果想要有嵌套中斷,可以在編寫中斷處理程序時適時使用sti指令開放中斷)
- 然后依次將CS于IP寄存器壓棧
-
執(zhí)行中斷處理程序
- 由于處理器已經(jīng)拿到了中斷號,它用中斷號乘以4(見上圖)就得到了該中斷的入口點的偏移地址和段地址
- 接著將得到的段地址與偏移地址傳送給CS和IP
-
返回到斷點接著執(zhí)行
- 所有中斷的程序的最后是一條iret指令。這將導致處理器一次從棧中彈出IP CS FLAGS的原始內(nèi)容,于是轉(zhuǎn)到主程序繼續(xù)執(zhí)行
- 由于中斷處理程序返回時已經(jīng)將FLAGS內(nèi)容恢復,所以IF標志位也恢復。也就是說可以接收新的中斷
2、軟中斷
和硬件中斷不同,軟中斷是處理器內(nèi)部產(chǎn)生的。是由執(zhí)行指令引起的。
軟中斷是由int指令引起的。這類中斷不需要中斷識別總線周期,中斷號在指令中給出。
更詳細的內(nèi)容,可以見我另一篇博客:中斷的概念與意義
3、總結
今天學會了以下內(nèi)容:
- 硬中斷
- 軟中斷
- 中斷向量表的概念與意義
筆記記得不是很全,如果有不懂的可以加我聯(lián)系方式一起交流。
學習探討加個人:
qq:1126137994
微信:liu1126137994
總結
以上是生活随笔為你收集整理的【OS学习笔记】十一 实模式:中断-软中断和硬中断基本原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 韩顺平 java 坦克大战_韩顺平坦克大
- 下一篇: 联想u盘linux安装教程,联想笔记本用