Interrupt(中斷)處理機制
□ Interrupt(中斷)處理機制
為了快速處理常見的中斷,OS 給予一個表格,儲存中斷服務函式的進入點,
如果有中斷發生,可以快速查表,找到要服務的函式,此表格稱之為中斷處
理(Interrupt Handler),通常都置於記憶體開始的地方。每個中斷事件會提供
一小段程式去服務此中斷,稱之為中斷服務常式(Interrupt Service Routine;
ISR)。而中斷向量(Interrupt vector)是一個由00H 到FFH 的數字,用來判
斷中斷的種類。
● Interrupt 的種類
I. External Interrupt(外部中斷): CPU 外的週邊元件所引起的。
(I/O Complete Interrupt, I/O Device error)
II. Internal Interrupt(內部中斷):不合法的用法所引起的。
(Debug、Divide-by-zero、overflow)
III. Software Interrupt(軟體中斷):使用者程式在執行時,若需要OS 提供服
務時,會藉由System Call 來呼叫OS 執行對應的service routine,完成服務請求
後,再將結果傳回給使用者程式。
● Interrupt 的處理流程
Setps
1. 暫停目前process 之執行。
2. 保存此process 當時執行狀況。
3. OS 會根據Interrupt ID 查尋Interrupt vector。
4. 取得ISR(Interrupt Service Routine)的起始位址。
5. ISR 執行。
6. ISR 執行完成,回到原先中斷前的執行。
□ I/O 結構
● Synchronous I/O(同步式I/O)
當I/O 啟動時,直到I/O 完成,控制權才交回給使用者程式。
優點:一個時間內最多只有一個I/O 要求,如此當中斷發生時,OS 就
知道是那個Device 引發的中斷。
● Asynchronous I/O(非同步式I/O)
當I/O 啟動後,之即將控制權交回給使用者程式,而不必等待I/O
Complete,如此,在同一段時間內,可以有許多I/O 請求同時發生。
優點:允許並行的I/O 處理。
□ I/O 運作處理方式
● Polling I/O(詢問式I/O)
又稱為Busy-waiting I/O、Program I/O。
其運作處理方式如下
Steps
1. 發出I/O 要求給CPU(OS)
2. CPU 設定I/O commands 給I/O Device controller。
3. I/O Device 運作執行。
4. PA 等待 I/O 完成。
5. PB 取得CPU 執行,但CPU 實際上沒有專屬於PB 執行。
6. CPU 仍不斷地去詢問I/O Device 其交付的I/O 工作完成與否。
缺點
CPU 表面是Busy,但實際上是在等待I/O 完成,花費大量時間在I/O
運作的監督,真正用於process 的執行時間(execution time)不多。
● Interrupt I/O(中斷式I/O)
其運作處理方式如下
Steps
1. 發出I/O 要求給CPU(OS)。
2. CPU 設定I/O commands 給I/O Device controller。
3. I/O Device 運作執行。
4. PA 等待 I/O 完成。
5. PB 取得CPU 執行。
6. 當I/O 運作完成,則I/O 會發出一個「I/O Complete Interrupt」(I/O完成中斷)
通知OS。
7. OS 暫停目前process 的執行。
8. OS根據Interrupt ID 去查詢Interrupt vector,取出對應的ISR(Interrupt
Service Routine)的起始位址。
9. CPU 執行ISR。
10.ISR 執行完畢,OS 通知PA 其I/O 要求完成,將PA 的狀態改成Ready。
11.由CPU 排班挑選process 執行。
No comments:
Post a Comment