天天看點

Linux2.4 任務響應模型

任務2優先級高于任務1。

  • t0 — 任務1處于運作狀态,任務2處于睡眠狀态,等待被中斷喚醒。
  • t1 — 任務1請求系統服務完成某些操作,此時開始,系統進入核心空間運作。
  • t2 —産生一個中斷信号,并且此中斷的中斷服務程式喚醒任務2。但是由于系統在核心空間所進行的某些操作不可以被中斷,CPU 的進行中斷被禁止,中斷沒有立即響應(中斷延遲是由于核心在進入臨界區之前關閉CPU的中斷響應所引起的)。CPU 将繼續在核心空間執行任務1的系統服務。
  • t3 — 核心代碼使能中斷響應,Linux 核心退出臨界區,CPU 開始響應 t2 時刻産生的中斷信号。
  • t4 — 中斷服務程式開始執行。當中斷服務程式執行完後,中斷服務程式喚醒了任務2。
  • t5 — 傳回被中斷的代碼,由于此時系統運作在核心态執行任務1的系統服務請求,任務2無法搶占任務1的控制權,是以執行任務1的系統服務請求。
  • t6 — 中斷傳回結束。
  • t7 — 由于任務1的系統調用完成傳回或者執行系統服務的過程中主動請求任務排程,系統開始進行任務排程。
  • t8 — 運作任務2。
  • 中斷延遲時間【包括硬體延遲和軟體延遲,一般研究涉及到如何最大限度地減少軟體所造成的延遲時間】。從中斷産生到CPU開始響應的時間段。中斷延遲是由于核心在進入臨界區之前關閉CPU的中斷響應所引起的,此時間段内,雖然外部裝置使CPU的中斷請求有效,但CPU并不立刻響應中斷,而是繼續執行臨界區的核心代碼,直至退出臨界區使能中斷請求,才開始進行中斷響應。
  • 中斷分派階段【對于具體的平台時間确定】。CPU開始響應中斷,到開始執行中斷服務程式之間的時間段。查找中斷号、儲存寄存器、定位中斷服務程式等。
  • 中斷服務階段【時間段的長度可控】。系統開始執行中斷服務程式到中斷服務程式執行完地時間段。
  • 中斷傳回階段【對于具體的平台時間确定】。主要操作是恢複寄存器的值。
  • 排程延遲。需要進行程序排程到實際開始進行排程的時間段。
  • 程序排程時間【延遲時間可以設計】。系統開始進行排程到最高優先級的程序開始被排程運作的時間段。根據資源的利用情況、程序的優先級、程序的運作情況、選擇合适的程序進行排程。

繼續閱讀