資料介紹
Mutex 是一把鑰匙,一個人拿了就可進入一個房間,出來的時候把鑰匙交給隊列的第一個。一般的用法是用于串行化對critical section 代碼的訪問,保證這段代碼不會被并行的運行。
Semaphore是一件可以容納N人的房間,如果人不滿就可以進去,如果人滿了,就要等待有人出來。對于N=1的情況,稱為binary semaphore。一般的用法是,用于限制對于某一資源的同時訪問。
Binary semaphore與Mutex 的差異:
在有的系統(tǒng)中Binary semaphore與Mutex 是沒有差異的。在有的系統(tǒng)上,主要的差異是mutex 一定要由獲得鎖的進程來釋放。而semaphore可以由其它進程釋放(這時的semaphore實際就是個原子的變量, 大家可以加或減),因此semaphore可以用于進程間同步。Semaphore的同步功能是所有系統(tǒng)都支持的,而Mutex 能否由其他進程釋放則未定,因此建議mutex 只用于保護critical section 。而semaphore則用于保護某變量,或者同步。
另一個概念是spin lock ,這是一個內(nèi)核態(tài)概念。spin lock 與semaphore的主要區(qū)別是spin lock 是busy waiting ,而semaphore是sleep 。對于可以sleep的進程來說, busy waiting 當然沒有意義。對于單CPU的系統(tǒng), busy waiting當然更沒意義(沒有CPU可以釋放鎖) 。因此,只有多CPU的內(nèi)核態(tài)非進程空間,才會用到spin lock 。Linux kernel 的spin lock 在非SMP的情況下,只是關(guān)irq ,沒有別的操作,用于確保該段程序的運行不會被打斷。其實也就是類似mutex 的作用,串行化對critical section 的訪問。但是mutex 不能保護中斷的打斷,也不能在中斷處理程序中被調(diào)用。而spin lock 也一般沒有必要用于可以sleep 的進程空間。
?
---------------------------------------------------------------------
------------------------
內(nèi)核同步措施
為了避免并發(fā),防止競爭。內(nèi)核提供了一組同步方法來提供對共享數(shù)據(jù)的保護。我們的重點不是介紹這些方法的詳細用法, 而是強調(diào)為什么使用這些方法和它們之間的差別。
Linux 使用的同步機制可以說從2.0 到2.6 以來不斷發(fā)展完善。從最初的原子操作, 到后來的信號量, 從大內(nèi)核鎖到今天的自旋鎖。這些同步機制的發(fā)展伴隨Linux 從單處理器到對稱多處理器的過度;伴隨著從非搶占內(nèi)核到搶占內(nèi)核的過度。鎖機制越來越有效,也越來越復(fù)雜。
目前來說內(nèi)核中原子操作多用來做計數(shù)使用,其它情況最常用的是兩種鎖以及它們的變種: 一個是自旋鎖,另一個是信號量。我們下面就來著重介紹一下這兩種鎖機制。
- 嵌入式LINUX系統(tǒng)內(nèi)核和內(nèi)核模塊調(diào)試
- Linux_Kernel_Developments內(nèi)核開發(fā) 37次下載
- Linux內(nèi)核的編譯與運行 16次下載
- Linux的內(nèi)核定制方法詳細說明 22次下載
- Linux的內(nèi)核定制方法詳細說明 4次下載
- Linux內(nèi)核GPIO操作函數(shù)的詳解分析 28次下載
- Linux內(nèi)核的源代碼漫游詳細資料說明 15次下載
- 動手編譯Linux內(nèi)核的教程免費下載 14次下載
- 如何使用Linux內(nèi)核實現(xiàn)USB驅(qū)動程序框架 20次下載
- 嵌入式LINUX系統(tǒng)內(nèi)核和內(nèi)核模塊調(diào)試教程 21次下載
- 如何才能編譯Linux的內(nèi)核 8次下載
- Linux 0.01版本內(nèi)核的源碼和注釋的詳細資料免費下載 0次下載
- 嵌入式系統(tǒng)Linux內(nèi)核工程師必會題 51次下載
- Linux內(nèi)核詳細說明
- Linux 內(nèi)核0.11 詳細注釋
- 使用 PREEMPT_RT 在 Ubuntu 中構(gòu)建實時 Linux 內(nèi)核 4.7k次閱讀
- Linux內(nèi)核中RCU的用法 3.3k次閱讀
- 獲取Linux內(nèi)核源碼的方法 1.8k次閱讀
- Linux讀寫鎖邏輯解析—Linux為何會引入讀寫鎖? 1.7k次閱讀
- Linux內(nèi)核系統(tǒng)調(diào)用概述及實現(xiàn)原理 2.8k次閱讀
- Linux指令的詳細整理 2.6k次閱讀
- Linux操作系統(tǒng)修改內(nèi)核參數(shù)的三種方法詳細說明 1.2w次閱讀
- Linux:QEMU調(diào)試內(nèi)核的步驟 3.8k次閱讀
- 深入linux內(nèi)核架構(gòu) Linux內(nèi)核架構(gòu)分析解讀 4.3k次閱讀
- Linux內(nèi)核中有哪些鎖 3.8k次閱讀
- Linux內(nèi)核與Android的關(guān)系 4.9k次閱讀
- 如何自行編譯一個Linux內(nèi)核的詳細資料概述 3.7k次閱讀
- Linux內(nèi)核地址映射模型與Linux內(nèi)核高端內(nèi)存詳解 3.8k次閱讀
- Linux內(nèi)核模塊介紹,使用Linux模塊的優(yōu)點 8k次閱讀
- Linux內(nèi)核開發(fā)工具介紹 8.2k次閱讀
下載排行
本周
- 1冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 2安川A1000變頻器中文版說明書
- 20.16 MB | 3次下載 | 3 積分
- 3直流電路的組成和基本定律
- 1.67 MB | 2次下載 | 免費
- 4丹佛斯2800系列變頻器說明書
- 8.00 MB | 1次下載 | 5 積分
- 5PC8011同步開關(guān)型降壓3.5A單節(jié)鋰電池充電管理電路技術(shù)手冊
- 0.74 MB | 1次下載 | 免費
- 6ES7243E+ES8311音頻錄制與播放電路資料
- 0.06 MB | 1次下載 | 5 積分
- 7SDM02 激光測距模塊產(chǎn)品手冊
- 0.43 MB | 1次下載 | 免費
- 8SDFM 激光測距模塊模組手冊
- 0.54 MB | 1次下載 | 免費
本月
- 1CH341編程器軟件NeoProgrammer_2.2.0.10
- 20.47 MB | 170次下載 | 1 積分
- 22025智能家居傳感器市場分析及創(chuàng)新應(yīng)用
- 3.11 MB | 43次下載 | 免費
- 3RV1126B系列開發(fā)板產(chǎn)品資料
- 4.19 MB | 18次下載 | 免費
- 4CH341編程軟件下載
- 2.50 MB | 16次下載 | 5 積分
- 5全志系列-米爾基于T153核心板開發(fā)板 四核異構(gòu)、3路千兆網(wǎng),賦能多元化工業(yè)場景
- 3.05 MB | 12次下載 | 免費
- 6【開源】60余套STM32單片機、嵌入式Linux、物聯(lián)網(wǎng)、人工智能項目案例及入門學(xué)習(xí)資源包
- 10.55 MB | 8次下載 | 免費
- 7冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 8特斯拉MODEL S車載充電機主電路回路原理圖
- 0.81 MB | 4次下載 | 3 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233094次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191448次下載 | 10 積分
- 5十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183356次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81604次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73824次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評論