作業系統筆記(四)中斷

2021-10-05 20:51:09 字數 826 閱讀 8751

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介面?答 四個不匹配 速平格時,就這樣記了,沒法記的。針對這幾個不匹配,用不同的方法,例如設定緩衝以匹配速度,設定電平轉換電路,設定格式轉換電路,設定時序控制電路等 緩衝器與鎖存器各用在什麼地方?很顯然了,緩衝器用於匯流排上,起到緩衝作用,提高匯流排驅動能力 電平匹配 鎖存器具有暫存資...