Nucleus中斷處理過程!!!!
Nucleus的中斷分為管理的和非管理的中斷。
管理中斷:需要向作業系統註冊該中斷向量,中斷產生後通過該中斷向量註冊的低階中斷服務程式(LISR)來啟用高階的中斷服務程式(HISR)。
非管理中斷:不需要通過作業系統進行管理,直接將中斷服務程式掛到中斷向量表上,上下文的儲存與恢復都要使用者自己來做,該中斷自己不能巢狀,最好不要被管理的中斷再次中斷否則會引起堆疊出錯,而且非管理的中斷不能使用絕大多數的Nucleus系統呼叫,因為它可能會破壞作業系統某些保護的資料結構(當有執行緒在執行時)。
非管理的中斷適用於那些比較頻繁的中斷,如果通過作業系統來管理這些中斷的話,其上下文儲存與恢復的時間就比較長,中斷的實時性就不能滿足要求。
Nucleus PLUS 通過把應用程式的 ISRs 區分為低階到高階元件來處理保護問題。
低階中斷:低階中斷服務子程式(LISR)和正常的 ISR 一樣執行,包括使用當前堆疊。Nucleus PLUS 在呼叫 LISR 之前儲存上下文,在 LISR 返回之後恢復上下文(上下文的保持都是由作業系統來完成的)。Nucleus PLUS 支援多個 LISRs 的巢狀。
LISR主要完成硬體中斷的處理,及啟用HISR。
高階中斷:
1、高階中斷支援動態建立和刪除。每個 HISR 由它自己的堆疊空間和控制塊。每個的記憶體由應用程式提供。高階中斷一般都是由低階中斷啟用。
2、高階中斷不允許自掛起。
3、高階中斷分成3個優先順序:0, 1, 2.。
4、高階中斷直接是可以互相搶佔的(在一個低優先順序的 HISR 處理期間,如果一個更高優先等級的 HISR 被啟用,低優先順序的 HISR 以與任務搶先方式相同的方式搶先。)。
5、高階中斷如果被同時觸發多次,一個啟用的計數器維護著每個 HISR。這個計數器用於確保每個 HISR 為每次啟用執行一次。注意:一個已經啟用的 HISR 的每次附加觸發都通過連續呼叫 HISR 來處理。
相關文章
- MYSQL匯入中斷處理過程MySql
- ovm安裝過程及中斷處理
- Linux 核心處理中斷全過程解析Linux
- python中PCA的處理過程PythonPCA
- DOM在Ahooks中的處理過程Hook
- 中斷和中斷處理程式
- 異常處理過程
- OGG 配置過程中的錯誤處理
- ORACLE-00600 4194 斷電undo損壞處理過程Oracle
- Nucleus PLUS任務排程
- DML 語句處理過程
- oracle處理SQL的過程OracleSQL
- 【故障處理】一次RAC故障處理過程
- 【原始碼】Redis命令處理過程原始碼Redis
- 某次BW 異常處理過程
- ora-14452處理過程
- HSG80故障處理過程
- ora-04031處理過程
- SQL語句的處理過程SQL
- 分散裝運處理的過程
- 如何處理六西格瑪過程中遇到的問題?
- Linux核心實現中斷和中斷處理(一)Linux
- Linux 中斷處理淺析Linux
- Linux 中斷處理原理分析Linux
- 同事處理異常斷電資料庫狀態變為SUSPECT過程資料庫
- Linux 核心中斷和中斷處理(1)Linux
- 記一次linux主機中病毒處理過程Linux
- oracle儲存過程中單引號及字串拼接處理Oracle儲存過程字串
- MySQL儲存過程中處理陣列 UDF程式碼分享MySql儲存過程陣列
- Ceph pg unfound處理過程詳解
- ORACLE 查詢語句處理過程(Oracle
- SQL語句的處理過程修正SQL
- OnWndMsg函式的處理過程函式
- WCDMA測試庫故障處理過程
- 中斷處理和GIC-V2
- 中斷機制和中斷描述符表、中斷和異常的處理
- 《Linux核心設計與實現》——中斷和中斷處理Linux
- linux核心分析筆記----中斷和中斷處理程式【轉】Linux筆記