【操作系统】竞争条件与临界区
Race Condition
多個(gè)進(jìn)程并發(fā)訪問(wèn)和操作同一數(shù)據(jù)且執(zhí)行結(jié)果與訪問(wèn)發(fā)生的特定順序有關(guān),稱為競(jìng)爭(zhēng)條件(Race Condition)。
為了防止上述競(jìng)爭(zhēng)條件,需要確保一段時(shí)間內(nèi)只有一個(gè)進(jìn)程能操作變量。為了實(shí)現(xiàn)這種保證,要求一定形式的進(jìn)程間同步。
Critical Section
考慮一個(gè)有n個(gè)進(jìn)程的系統(tǒng),每個(gè)進(jìn)程有一個(gè)代碼段稱為臨界區(qū)(Critical Section),在該區(qū)中進(jìn)程可能改變共同變量、更新一個(gè)表、寫(xiě)一個(gè)文件等。這種系統(tǒng)的重要特征是當(dāng)一個(gè)進(jìn)程在臨界區(qū)內(nèi)執(zhí)行,沒(méi)有其他進(jìn)程被允許在臨界區(qū)內(nèi)執(zhí)行。
臨界區(qū)問(wèn)題的解答必須滿足如下三項(xiàng)要求:
- 互斥:如果進(jìn)程Pi在其臨界區(qū)內(nèi)執(zhí)行,那么其他進(jìn)程都不能在其臨界區(qū)內(nèi)執(zhí)行。
- 前進(jìn):如果沒(méi)有進(jìn)程在其臨界區(qū)內(nèi)執(zhí)行,且有進(jìn)程希望進(jìn)入臨界區(qū),那么只有那些不在剩余區(qū)內(nèi)執(zhí)行的進(jìn)程能參加決策,以選擇誰(shuí)能下一個(gè)進(jìn)入臨界區(qū),且這種選擇不能無(wú)限推遲。
- 有限等待:在一個(gè)進(jìn)程做出進(jìn)入其臨界區(qū)的請(qǐng)求到該請(qǐng)求被允許期間,其他進(jìn)程被允許進(jìn)入其臨界區(qū)的次數(shù)存在一個(gè)上限。假定每個(gè)進(jìn)程的執(zhí)行速度不為0。不能對(duì)n個(gè)進(jìn)程的相對(duì)速度作任何假設(shè)。
進(jìn)程臨界區(qū)的執(zhí)行在時(shí)間上互斥。
臨界區(qū)問(wèn)題是設(shè)計(jì)一個(gè)進(jìn)程能用來(lái)協(xié)作的協(xié)議。
每個(gè)進(jìn)程必須請(qǐng)求允許進(jìn)入臨界區(qū)。
實(shí)現(xiàn)這一請(qǐng)求的代碼段稱為進(jìn)入?yún)^(qū)(Entry Se
總結(jié)
以上是生活随笔為你收集整理的【操作系统】竞争条件与临界区的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【C语言】数组和指针相关 * 和 总结
- 下一篇: 【操作系统】进程调度的不同层次