linux核心的優先順序繼承協議(pip)和μC/OSII2.52核心的優先順序置頂協議(pcp)
在實時系統中,不確定的阻塞是盡力要避免的,因為這可能影響到任務的實時性,在常規的系統中,如果一個低優先順序的任務佔有了一個獨佔式資源,那麼高優先順序任務請求該資源時必然要阻塞,這是可以的,因為系統相信這個低優先順序的任務總會釋放該資源的,但是在實時系統中,即使再相信資源總會被釋放,實時的要求也 不允許任務被長時間的阻塞,更糟糕的是不確定時長的阻塞,那麼就有必要讓低優先順序任務儘快完成任務釋放資源,在實施中可以用到兩種協議來做到這一點:1. 優先順序繼承協議(pip);2.優先順序置頂協議(pcp)。關於什麼是優先順序反轉我就不多說了,這個概念在任何作業系統都有解釋,可以嘲笑一下 windows nt關於優先順序反轉的解決辦法,極其老土。
在linux核心中的/kernel/rtmutex.c原始檔實現了pip。所謂的pip就是當一個高優先順序程式請求一個已經被低優先順序程式佔有的資源時,此低優先順序程式繼承高優先順序程式的優先順序。我們先來熟悉一下資料結構,每個資源都表示為一個
struct rt_mutex {
本文轉自 dog250 51CTO部落格,原文連結:http://blog.51cto.com/dog250/1274042
相關文章
- 華為路由協議優先順序路由協議
- CSS的三大特性(繼承、層疊和優先順序)CSS繼承
- CSS優先順序CSS
- C++運算子優先順序C++
- 中斷優先順序
- python運算子及優先順序順序Python
- C++操作符的優先順序C++
- [譯]HTTP/2的優先順序HTTP
- CSS的處理優先順序CSS
- CSS三個特性:層疊性、繼承性、優先順序CSS繼承
- C 語言運算子優先順序
- C語言運算子優先順序C語言
- C++運算子優先順序特例C++
- C++ 運算子優先順序表C++
- HttpClient和HttpGet 引數的優先順序HTTPclient
- Android程式優先順序Android
- SQL 優先順序join>whereSQL
- java運算子優先順序Java
- nginx快取優先順序Nginx快取
- php運算子優先順序PHP
- css優先順序彙總CSS
- html優先順序和層疊性HTML
- 可口可樂的RGM戰略核心:智慧優先順序模型模型
- css選擇器的優先順序CSS
- 談Nginx的Location匹配優先順序Nginx
- 警惕執行緒的優先順序執行緒
- 併發請求的優先順序
- CSS 選擇器的優先順序CSS
- Linux排程器:程序優先順序Linux
- java setPriority()設定優先順序Java
- 封裝優先順序佇列封裝佇列
- Yarn任務優先順序配置Yarn
- gitignore優先順序小結Git
- css 選擇器優先順序CSS
- java執行緒優先順序Java執行緒
- 資料型別優先順序資料型別
- 深入理解css優先順序CSS
- NLS引數優先順序解析