淺述同步和互斥機制

2021-08-19 21:38:59 字數 693 閱讀 3050

1.以下幾種情況可能發生競態:對稱多處理器的多個cpu共同訪問外設和儲存器;中斷與程序訪問共享資源;高優先順序程序搶占低優先順序程序;高優先順序中斷打斷低優先順序中斷。

解決 競爭狀態 途徑是保證對共享資源的互斥訪問。解決的關鍵是 分析並發源,劃定臨界區,選擇適合的作業系統提供的機制。

2.互斥機制:

遮蔽中斷:由於linux核心的程序排程也是通過中斷實現的,所以遮蔽中斷也可以避免程序的併發,實質上,除了對稱多處理器的多cpu共同訪問外設和儲存器,其他的都可以歸為中斷引起的併發。

原子操作:執行過程中不會被別的**打斷,一系列指令在處理器上執行時等同於一條指令

自旋鎖spin_lock:自旋鎖就是原地打轉,一直忙等待。特點:在獲得乙個自旋鎖時,cpu執行的**需要先執行乙個原子操作。只有在占用鎖極短時間使用自旋鎖才合理,因為忙等待是白白浪費cpu資源。乙個已經擁有乙個自旋鎖的cpu像第二次獲得這個自旋鎖必將引起死鎖,所以不能連續在沒有釋放的情況下獲得同乙個自旋鎖。程序獲得自旋鎖後阻塞,也有可能死鎖,引起阻塞的函式:copy_from_user,copy_to_user,kmalloc

訊號量:當獲取不到訊號量是進入休眠狀態。

3.同步機制:即按照順序執行,乙個事情要等待另乙個事情做完之後再進行。緣由:當程序需要某個資源而不可得時,就需要等待而進入睡眠狀態,核心由此生成乙個新的等待佇列節點將睡眠程序掛載到等待佇列中,從而讓出cpu,當程序被喚醒時從等待佇列中取出。

程序的同步和互斥反映了 程序同步和互斥機制

程序同步的幾種機制 多程序的系統中避免不了程序間的相互關係。本講將介紹程序間的兩種主要關係 同步與互斥,然後著重講解解決程序同步的幾種機制。程序互斥是程序之間發生的一種間接性作用,一般是程式不希望的。通常的情況是兩個或兩個以上的程序需要同時訪問某個共享變數。我們一般將發生能夠問共享變數的程式段稱為臨...

同步機制 互斥鎖

互斥鎖指代相互排斥,它是最基本的同步形式。互斥鎖用於保護臨界區,以保證任何時刻只有乙個執行緒在執行其中的 或者任何乙個時刻只有乙個程序在執行其中的 保護乙個臨界區的 的通常輪廓大體如下 lock the mutex 臨界區unlock the mutex posix互斥鎖被宣告為具有pthread ...

執行緒的同步 互斥機制

整理執行緒同步的 api函式及其作用 執行緒同步的方式和機制 臨界區 互斥量 事件 訊號量四種方式 臨界區 critical section 互斥量 mutex 訊號量 semaphore 事件 event 的區別 1 臨界區 通過對多執行緒的序列化來訪問公共資源或一段 速度快,適合控制資料訪問。在...