Interrupt(中斷)處理機制@ 程式專欄 - 隨意窩

文章推薦指數: 80 %
投票人數:10人

I. External Interrupt(外部中斷): CPU 外的週邊元件所引起的。

(I/O Complete Interrupt, I/O Device error) II. Internal Interrupt(內部中斷):不合法的用法所引起 ... 程式專欄1234日誌相簿影音好友名片 200805041409Interrupt(中斷)處理機制?作業系統基本概念□Interrupt(中斷)處理機制為了快速處理常見的中斷,OS給予一個表格,儲存中斷服務函式的進入點,如果有中斷發生,可以快速查表,找到要服務的函式,此表格稱之為中斷處理(InterruptHandler),通常都置於記憶體開始的地方。

每個中斷事件會提供一小段程式去服務此中斷,稱之為中斷服務常式(InterruptServiceRoutine;ISR)。

而中斷向量(Interruptvector)是一個由00H到FFH的數字,用來判斷中斷的種類。

●Interrupt的種類 I.ExternalInterrupt(外部中斷):CPU外的週邊元件所引起的。

   (I/OCompleteInterrupt,I/ODeviceerror) II.InternalInterrupt(內部中斷):不合法的用法所引起的。

   (Debug、Divide-by-zero、overflow) III.SoftwareInterrupt(軟體中斷):使用者程式在執行時,若需要OS提供服     務時,會藉由SystemCall來呼叫OS執行對應的serviceroutine,完成服務請求     後,再將結果傳回給使用者程式。

     ●Interrupt的處理流程Setps 1.暫停目前process之執行。

 2.保存此process當時執行狀況。

 3.OS會根據InterruptID查尋Interruptvector。

 4.取得ISR(InterruptServiceRoutine)的起始位址。

 5.ISR執行。

 6.ISR執行完成,回到原先中斷前的執行。

□I/O結構●SynchronousI/O(同步式I/O) 當I/O啟動時,直到I/O完成,控制權才交回給使用者程式。

 優點:一個時間內最多只有一個I/O要求,如此當中斷發生時,OS就 知道是那個Device引發的中斷。

●AsynchronousI/O(非同步式I/O) 當I/O啟動後,之即將控制權交回給使用者程式,而不必等待I/O Complete,如此,在同一段時間內,可以有許多I/O請求同時發生。

 優點:允許並行的I/O處理。

□I/O運作處理方式●PollingI/O(詢問式I/O) 又稱為Busy-waitingI/O、ProgramI/O。

 其運作處理方式如下 Steps 1.發出I/O要求給CPU(OS) 2.CPU設定I/Ocommands給I/ODevicecontroller。

 3.I/ODevice運作執行。

 4.PA等待I/O完成。

 5.PB取得CPU執行,但CPU實際上沒有專屬於PB執行。

 6.CPU仍不斷地去詢問I/ODevice其交付的I/O工作完成與否。

缺點 CPU表面是Busy,但實際上是在等待I/O完成,花費大量時間在I/O 運作的監督,真正用於process的執行時間(executiontime)不多。

●InterruptI/O(中斷式I/O) 其運作處理方式如下 Steps 1.發出I/O要求給CPU(OS)。

 2.CPU設定I/Ocommands給I/ODevicecontroller。

 3.I/ODevice運作執行。

 4.PA等待I/O完成。

 5.PB取得CPU執行。

 6.當I/O運作完成,則I/O會發出一個「I/OCompleteInterrupt」(I/O完成中斷)    通知OS。

 7.OS暫停目前process的執行。

 8.OS根據InterruptID去查詢Interruptvector,取出對應的ISR(Interrupt    ServiceRoutine)的起始位址。

 9.CPU執行ISR。

 10.ISR執行完畢,OS通知PA其I/O要求完成,將PA的狀態改成Ready。

 11.由CPU排班挑選process執行。

大頭/Xuite日誌/回應(0)/引用(0)沒有上一則|日誌首頁|沒有下一則回應 加我為好友 日誌相簿影音 我的相簿 tzeng015's新文章ARM編譯後記憶體分布includeheader檔的使用和介紹fgets改成fread資料讀取就會變正確rotate_180方法的作用就是把buffer中的數據按像素倒轉過來(如果說一個PIXEL=R,G,B)rotate_180方法的作用就是把buffer中的數據按像素倒轉過來(如果說一個PIXEL=R,G,B,A)Recovery和Charger模式下屏幕旋轉180度,尚未進入androidmemset/memcpy/memcmp---簡單的實作把陣列資料反轉有關C語言的struct進階初始化GPSinformation 全部展開|全部收合 tzeng015's新回應沒有新回應! 關鍵字



請為這篇文章評分?