【学习笔记】第二章——进程同步、进程互斥、进程互斥的硬件/软件实现方法
生活随笔
收集整理的這篇文章主要介紹了
【学习笔记】第二章——进程同步、进程互斥、进程互斥的硬件/软件实现方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 一. 進程同步 && 進程互斥
- 四個區(qū)域
- 四個原則
- 總結(jié):
- 二. 進程互斥的軟件實現(xiàn)方法
- 1)單標志法
- 2)雙標志先檢查法
- 3)雙標志后檢查法
- 4)Peterson 算法
- 總結(jié)
- 三. 進程互斥的硬件實現(xiàn)方法
- 1)中斷屏蔽方法
- 2)TestAndSet 指令
- 3)Swap 指令
- 總結(jié)
一. 進程同步 && 進程互斥
-
由于進程有異步性,因此需要有同步存在。
同步也叫直接制約關(guān)系,指為完成某任務(wù)而建的兩或多個進程,需要在某些位置協(xié)調(diào)各自的工作次序而產(chǎn)生的制約關(guān)系。進程間的直接制約關(guān)系就是源于他們之間的相互合作。 -
各個并發(fā)進程總要共享一些系統(tǒng)資源(內(nèi)存、打印機等)
-
兩種資源共享方式:互斥 && 同時
-
互斥共享方式:同一時間段,只允許一個進程訪問
-
同時共享方式:同一時間段,可允許多個進程訪問
-
臨界資源:同一時間段,只允許一個進程使用的資源(攝像頭、內(nèi)存緩沖區(qū)等)
-
對臨界資源的訪問,必須互斥地進行
四個區(qū)域
- 進入?yún)^(qū):負責檢查是否可以進入臨界區(qū);可進則設(shè)置正在訪問臨界資源的標志(上鎖),以阻止其他進程同時進入臨界區(qū)。
- 臨界區(qū):訪問臨界資源的代碼段
- 退出區(qū):負責解除正在訪問臨界資源的標志(解鎖)
- 剩余區(qū):做其他處理
四個原則
- 四個原則:空閑讓進、忙則等待、有限等待、讓權(quán)等待
總結(jié):
二. 進程互斥的軟件實現(xiàn)方法
1)單標志法
- 每個進程進入臨界區(qū)的權(quán)限,只能被另一個進程賦予
- 可以實現(xiàn):同一時刻最多允許一個進程訪問臨界區(qū)
- 問題:違背空閑讓進原則
2)雙標志先檢查法
- 思想:用布爾型數(shù)組,標記各進程想進入臨界區(qū)的意愿
- 各進程進入臨界區(qū)前,先檢查當前有沒有別的進程想進入臨界區(qū),無則設(shè)flag[i],然后訪問
- 問題:違反忙則等待原則
- 原因:進入?yún)^(qū)的檢查 && 上鎖無原子性。
3)雙標志后檢查法
- 結(jié)合前兩個算法而成
- 解決了忙則等待的問題,但是違反了空閑讓進和有限等待。會產(chǎn)生饑餓
4)Peterson 算法
- 讓讓讓!解決了之前的問題
- trun:優(yōu)先讓該進程進入臨界區(qū)
- 問題:未遵循讓權(quán)等待原則
總結(jié)
三. 進程互斥的硬件實現(xiàn)方法
1)中斷屏蔽方法
- 利用開/關(guān)中斷指令實現(xiàn)
- 簡單高效,但不適用于多處理機。不適用于用戶進程
2)TestAndSet 指令
這里沒怎么看,日后發(fā)現(xiàn)重要的話再復習吧 T T
3)Swap 指令
- 原子性
總結(jié)
總結(jié)
以上是生活随笔為你收集整理的【学习笔记】第二章——进程同步、进程互斥、进程互斥的硬件/软件实现方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新手如何学习C语言/C++,教你一年时间
- 下一篇: 【LeetCode笔记】3. 无重复字符