資料介紹
Mutex 是一把鑰匙,一個(gè)人拿了就可進(jìn)入一個(gè)房間,出來的時(shí)候把鑰匙交給隊(duì)列的第一個(gè)。一般的用法是用于串行化對(duì)critical section 代碼的訪問,保證這段代碼不會(huì)被并行的運(yùn)行。
Semaphore是一件可以容納N人的房間,如果人不滿就可以進(jìn)去,如果人滿了,就要等待有人出來。對(duì)于N=1的情況,稱為binary semaphore。一般的用法是,用于限制對(duì)于某一資源的同時(shí)訪問。
Binary semaphore與Mutex 的差異:
在有的系統(tǒng)中Binary semaphore與Mutex 是沒有差異的。在有的系統(tǒng)上,主要的差異是mutex 一定要由獲得鎖的進(jìn)程來釋放。而semaphore可以由其它進(jìn)程釋放(這時(shí)的semaphore實(shí)際就是個(gè)原子的變量, 大家可以加或減),因此semaphore可以用于進(jìn)程間同步。Semaphore的同步功能是所有系統(tǒng)都支持的,而Mutex 能否由其他進(jìn)程釋放則未定,因此建議mutex 只用于保護(hù)critical section 。而semaphore則用于保護(hù)某變量,或者同步。
另一個(gè)概念是spin lock ,這是一個(gè)內(nèi)核態(tài)概念。spin lock 與semaphore的主要區(qū)別是spin lock 是busy waiting ,而semaphore是sleep 。對(duì)于可以sleep的進(jìn)程來說, busy waiting 當(dāng)然沒有意義。對(duì)于單CPU的系統(tǒng), busy waiting當(dāng)然更沒意義(沒有CPU可以釋放鎖) 。因此,只有多CPU的內(nèi)核態(tài)非進(jìn)程空間,才會(huì)用到spin lock 。Linux kernel 的spin lock 在非SMP的情況下,只是關(guān)irq ,沒有別的操作,用于確保該段程序的運(yùn)行不會(huì)被打斷。其實(shí)也就是類似mutex 的作用,串行化對(duì)critical section 的訪問。但是mutex 不能保護(hù)中斷的打斷,也不能在中斷處理程序中被調(diào)用。而spin lock 也一般沒有必要用于可以sleep 的進(jìn)程空間。
?
---------------------------------------------------------------------
------------------------
內(nèi)核同步措施
為了避免并發(fā),防止競爭。內(nèi)核提供了一組同步方法來提供對(duì)共享數(shù)據(jù)的保護(hù)。我們的重點(diǎn)不是介紹這些方法的詳細(xì)用法, 而是強(qiáng)調(diào)為什么使用這些方法和它們之間的差別。
Linux 使用的同步機(jī)制可以說從2.0 到2.6 以來不斷發(fā)展完善。從最初的原子操作, 到后來的信號(hào)量, 從大內(nèi)核鎖到今天的自旋鎖。這些同步機(jī)制的發(fā)展伴隨Linux 從單處理器到對(duì)稱多處理器的過度;伴隨著從非搶占內(nèi)核到搶占內(nèi)核的過度。鎖機(jī)制越來越有效,也越來越復(fù)雜。
目前來說內(nèi)核中原子操作多用來做計(jì)數(shù)使用,其它情況最常用的是兩種鎖以及它們的變種: 一個(gè)是自旋鎖,另一個(gè)是信號(hào)量。我們下面就來著重介紹一下這兩種鎖機(jī)制。
- 嵌入式LINUX系統(tǒng)內(nèi)核和內(nèi)核模塊調(diào)試
- Linux_Kernel_Developments內(nèi)核開發(fā) 37次下載
- Linux內(nèi)核的編譯與運(yùn)行 16次下載
- Linux的內(nèi)核定制方法詳細(xì)說明 22次下載
- Linux的內(nèi)核定制方法詳細(xì)說明 4次下載
- Linux內(nèi)核GPIO操作函數(shù)的詳解分析 28次下載
- Linux內(nèi)核的源代碼漫游詳細(xì)資料說明 15次下載
- 動(dòng)手編譯Linux內(nèi)核的教程免費(fèi)下載 14次下載
- 如何使用Linux內(nèi)核實(shí)現(xiàn)USB驅(qū)動(dòng)程序框架 20次下載
- 嵌入式LINUX系統(tǒng)內(nèi)核和內(nèi)核模塊調(diào)試教程 21次下載
- 如何才能編譯Linux的內(nèi)核 8次下載
- Linux 0.01版本內(nèi)核的源碼和注釋的詳細(xì)資料免費(fèi)下載 0次下載
- 嵌入式系統(tǒng)Linux內(nèi)核工程師必會(huì)題 51次下載
- Linux內(nèi)核詳細(xì)說明
- Linux 內(nèi)核0.11 詳細(xì)注釋
- 使用 PREEMPT_RT 在 Ubuntu 中構(gòu)建實(shí)時(shí) Linux 內(nèi)核 4.7k次閱讀
- Linux內(nèi)核中RCU的用法 3.3k次閱讀
- 獲取Linux內(nèi)核源碼的方法 1.8k次閱讀
- Linux讀寫鎖邏輯解析—Linux為何會(huì)引入讀寫鎖? 1.7k次閱讀
- Linux內(nèi)核系統(tǒng)調(diào)用概述及實(shí)現(xiàn)原理 2.8k次閱讀
- Linux指令的詳細(xì)整理 2.6k次閱讀
- Linux操作系統(tǒng)修改內(nèi)核參數(shù)的三種方法詳細(xì)說明 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次閱讀
- 如何自行編譯一個(gè)Linux內(nèi)核的詳細(xì)資料概述 3.7k次閱讀
- Linux內(nèi)核地址映射模型與Linux內(nèi)核高端內(nèi)存詳解 3.8k次閱讀
- Linux內(nèi)核模塊介紹,使用Linux模塊的優(yōu)點(diǎn) 8k次閱讀
- Linux內(nèi)核開發(fā)工具介紹 8.2k次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
電子發(fā)燒友App





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