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