標題 [ os ] Interrupt(中斷)處理機制
時間 2011/02/26 Sat 15:18:44
───────────────────────────────────────
參考網址:
http://tw.myblog.yahoo.com/chimei-015/article?mid=189&next=178&l=f&fid=16
□ 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 執行。
--
身高不是距離
技巧不是問題
只要有"心"
人人都可 定‧三‧米
--
▅◣ Origin: 謠 言 報 bbs.csie.fju.edu.tw
▋◤ Author: ie945167 從 sclab.csie.fju.edu.tw 發表
沒有留言:
張貼留言