ctime:2020-04-30 13:33:34 +0900|1588221214
標籤(空格分隔): 技術 作業系統
8086(80386)的中斷向量表並不像arm的中斷向量表放在位址0處,而是位置可變。當建好中斷向量表之後,
通過lidt指令,將中斷向量表的位址給idtr暫存器,這樣當cpu發生中斷時,他會從這個idtr暫存器獲取到中斷向量表的位置,
然後在裡面找相應的中斷服務函式的位址。
與gdt(全域性記憶體分段描述表)一樣,傳給lidt除了要給中斷向量表的位址外,還要給記憶體界限。因此也是32+16=48位。
建立idt的函式:
#define setgate(gate, istrap, sel, off, dpl)
void
idt_init
(void
)lidt
(&idt_pd)
;}
中斷門(idt gate descriptors,實際上應該翻譯成 中斷描述符表的門描述符,很拗口),共有三種門描述符。
第一種沒用到,第二種在中斷中使用,第三種在系統呼叫中使用。
中斷門(interrupt-gate)與陷阱門(trap-gate)幾乎一樣,唯一的區別時,呼叫中斷門時,cpu會關閉中斷。而呼叫陷阱門時,cpu不會更改中斷的開關。
中斷門的長度為8個位元組,以下說的是中斷門和陷阱門,任務門的分布不太一樣。
包括:
dpl(描述符特權級)
特權級檢查
或者核心態中發生中斷
如果cpl發生改變,則需要切換堆疊。核心的堆疊資訊(棧指標、棧基址)儲存在tss暫存器中。
(四)中斷系統
好了,將按鍵寫完輸入輸出就都完了,我們來看看微控制器內部那些東西,首先說說中斷。中斷系統是為使cpu具有對外界緊急事件的實時處理能力而設定的。當 處理器cpu正在處理某件事的時候外界發生了緊急事件請求,要求cpu暫停當前的工作,轉而去處理這個緊急事件,處理完以後,再回到原來被中斷的地方,繼續原來的工...
作業系統自學(四)中斷和系統呼叫
當中斷發生後,cpu會立即進入核心態 當中斷發生後,當前執行的程序暫停執行,並有作業系統核心對中斷進行處理 對於不同的中斷訊號,會進行不同的處理 發生率中斷,就意味著需要作業系統介入,開展管理工作。由於作業系統的管理工作需要特權指令,因此cpu要從使用者態轉換成核心態。中斷可以使cpu從使用者轉為核...
8086學習(四)中斷
為什麼要用io介面?答 四個不匹配 速平格時,就這樣記了,沒法記的。針對這幾個不匹配,用不同的方法,例如設定緩衝以匹配速度,設定電平轉換電路,設定格式轉換電路,設定時序控制電路等 緩衝器與鎖存器各用在什麼地方?很顯然了,緩衝器用於匯流排上,起到緩衝作用,提高匯流排驅動能力 電平匹配 鎖存器具有暫存資...