作業系統06 臨界區

2021-08-13 11:21:01 字數 913 閱讀 3679

交錯輸出的 沒有絕對情況的

如果同時訪問共享的資料可能會破壞資料。

對這樣的事情加上防範!

併發的程式訪問共享的資料一定要注意。

對一些問題敏感的洞察

生產消費者問題:

生產者往緩衝區放東西

消費者從緩衝區拿東西

++ –

切換的可能

count++ 在彙編指令拆分為:

register1 = count

register1 = register1 + 1

count = register1

在任何一條指令結束之後都可能發生中斷

我們做到什麼保證不會發生資料破壞?

鎖! 是個重要的辦法 防止中間發生切換

就是可以規定在這段指令之間不許切換,但是帶來的問題就是,如果在這段占用過多的cpu、或者不交還cpu作業系統就沒有辦法。

競爭條件

是程式設計師自己程式設計序編出來的。自己有責任把它保護好。

就是一段**

這段**就是對共享的資料進行訪問。什麼都有可能

靠經驗的。。。

對臨界區保護的辦法:

任意時刻不會有兩個以上的程序在臨界區訪問。

最常見的就是鎖。

得到鎖就可以進入臨界區,然後把臨界區鎖上,其他程序進不來,只有進入臨界區的程序解開鎖其他程序才能進入。

怎麼加鎖?

不能用共享變數解決這個問題。

三個條件:互斥條件,進度條件,有限等待(公平性)。

終極解決方案:testandset方式實現 不可中斷原子操作

作業系統的死鎖概念,臨界區概念

作業系統中 有若干程序併發執 行,它們不斷申請 使用 釋放系統資源,雖然系統的進 程協調 通訊機構會對它們進行控制,但也可能出現 若干程序都相互等待對方釋放資源才能 繼續執行,否則就阻塞的情況 此時,若不借助外界因素,誰也不能釋放資源,誰也不能解 除阻塞狀態 根據這樣的情況,作業系統中的死鎖被定義為...

FreeRTOS臨界區操作

進入臨界保護 支援巢狀 taskenter critical 退出臨界保護 支援巢狀 taskexit critical 中斷裡進入臨界保護 支援巢狀 taskenter critical from isr 中斷裡退出臨界保護 支援巢狀 taskexit critical from isr x 進入...

作業系統概論 06

6 併發程序 6.1程序的併發性 1程序的順序性和併發性 程序的順序性是指程序在順序處理器上執行是嚴格按照順序執行 當乙個程序獨佔處理器順序執行時 具有封閉性和可再現性 若系統中存在一組可同時執行的程序 則稱為改組程序具有併發性 並把可同時執行的程序稱為 併發程序 2 併發程序相互之間可能是無關的也...