操作系统之进程管理:10、信号量机制(整形、记录型)
10、信號量機制
- 思維導圖
- 信號量機制的引入
- 什么是信號量機制
- 信號量的分類
- 整形信號量
- 記錄型信號量
思維導圖
信號量機制的引入
來看幾個問題。
1、在用軟件實現進程互斥的時候,雙標志先檢查算法由于 “上鎖”“檢查”操作無法一氣呵成 而導致多個程序進入臨界區的問題
2、無論是硬件還是軟件實現進程互斥都無法實現“讓權等待”
為了解決上述的問題,Dijkstra提出了卓有成效的方法----------信號量機制
什么是信號量機制
信號量的分類
整形信號量
由于任然無法解決讓權等待的問題,所以整型信號量也不是優選方案
為了解決讓權等待的問題,又提出了記錄型信號量
記錄型信號量
看個例子:
場景:兩臺打印機、四個進程
初始值:S.values = 2,S.L = 0
1、進程A使用打印機,執行P(S)操作:S.values = 1,使用資源
2、進程A執行同時進程B也使用打印機,執行P(S)操作:S.values = 0,使用資源
3、進程AB執行同時進程C也使用打印機,執行P(S)操作:S.values = -1,進程C進入阻塞狀態,進入等待隊列
4、進程ABC執行同時進程D也使用打印機,執行P(S)操作:S.values = -2,進程D進入阻塞狀態,進入等待隊列
5、當進程A運行結束后,執行V(S)操作:S.values = -1,釋放資源;等待隊列中的進程C被喚醒,使用資源
6、當進程B運行結束后,執行V(S)操作:S.values = 0,釋放資源;等待隊列中的進程D被喚醒,使用資源
7、當進程C運行結束后,執行V(S)操作:S.values = 1 ,釋放資源
8、當進程D運行結束后,執行V(S)操作:S.values = 2 ,釋放資源
PS:S.values的值改變是因為執行PV操作的自加或自減,不是直接賦值操作
PS:資源數目為負,即S.values為負的含義是:等待隊列中進程的個數;S.values=-1說明等待隊列中有一個進程
信號量介紹完了,下一篇:用信號量實現進程互斥、同步
總結
以上是生活随笔為你收集整理的操作系统之进程管理:10、信号量机制(整形、记录型)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 财务管理的革新带动财务软件的变革
- 下一篇: xml simpleXML_load_f