Linux内核的同步机制是什么?
從最初的原子操作,到后來的信號(hào)量,從大內(nèi)核鎖到今天的自旋鎖。
這些同步機(jī)制的發(fā)展伴隨Linux從單處理器到對(duì)稱多處理器的過渡;伴隨著從非搶占內(nèi)核到搶占內(nèi)核的過度。Linux的鎖機(jī)制越來越有效,也越來越復(fù)雜。Linux的內(nèi)核鎖主要是自旋鎖和信號(hào)量。自旋鎖最多只能被一個(gè)可執(zhí)行線程持有,如果一個(gè)執(zhí)行線程試圖請(qǐng)求一個(gè)已被爭(zhēng)用(已經(jīng)被持有)的自旋鎖,那么這個(gè)線程就會(huì)一直進(jìn)行忙循環(huán)——旋轉(zhuǎn)——等待鎖重新可用。
要是鎖未被爭(zhēng)用,請(qǐng)求它的執(zhí)行線程便能立刻得到它并且繼續(xù)進(jìn)行。
自旋鎖可以在任何時(shí)刻防止多于一個(gè)的執(zhí)行線程同時(shí)進(jìn)入臨界區(qū)。Linux中的信號(hào)量是一種睡眠鎖。如果有一個(gè)任務(wù)試圖獲得一個(gè)已被持有的信號(hào)量時(shí),信號(hào)量會(huì)將其推入等待隊(duì)列,然后讓其睡眠。這時(shí)處理器獲得自由去執(zhí)行其它代碼。
當(dāng)持有信號(hào)量的進(jìn)程將信號(hào)量釋放后,在等待隊(duì)列中的一個(gè)任務(wù)將被喚醒,從而便可以獲得這個(gè)信號(hào)量。
總結(jié)
以上是生活随笔為你收集整理的Linux内核的同步机制是什么?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cm系统是什么?
- 下一篇: 听说果冻手机用的是CM厘米系统,什么是C