Linux 内核的同步方式
原因
在現(xiàn)代操作系統(tǒng)里,同一時(shí)間可能有多個(gè)內(nèi)核執(zhí)行流在執(zhí)行,因此內(nèi)核其實(shí)象多進(jìn)程多線程編程一樣也需要一些同步機(jī)制來(lái)同步各執(zhí)行單元對(duì)共享數(shù)據(jù)的訪問(wèn)。尤其是在多處理器系統(tǒng)上,更需要一些同步機(jī)制來(lái)同步不同處理同步方式
?原子操作
?信號(hào)量(semaphore)
?讀寫信號(hào)量(rw_semaphore)
?自旋鎖(spinlock)
?大內(nèi)核鎖(BKL,Big Kernel Lock)
?讀寫鎖(rwlock)
?大讀者鎖(brlock-Big Reader Lock)
?讀-拷貝修改(RCU,Read-Copy Update)
?順序鎖(seqlock)器上的執(zhí)行單元對(duì)共享的數(shù)據(jù)的訪問(wèn)。
死鎖
原因
?系統(tǒng)資源不足
?資源分配不當(dāng)
?進(jìn)程運(yùn)行推進(jìn)順序不合適
產(chǎn)生條件
?互斥
?請(qǐng)求和保持
?不剝奪
?環(huán)路
預(yù)防
?打破互斥條件:改造獨(dú)占性資源為虛擬資源,大部分資源已無(wú)法改造。
?打破不可搶占條件:當(dāng)一進(jìn)程占有一獨(dú)占性資源后又申請(qǐng)一獨(dú)占性資源而無(wú)法滿足,則退出原占有的資源。
?打破占有且申請(qǐng)條件:采用資源預(yù)先分配策略,即進(jìn)程運(yùn)行前申請(qǐng)全部資源,滿足則運(yùn)行,不然就等待,這樣就不會(huì)占有且申請(qǐng)。
?打破循環(huán)等待條件:實(shí)現(xiàn)資源有序分配策略,對(duì)所有設(shè)備實(shí)現(xiàn)分類編號(hào),所有進(jìn)程只能采用按序號(hào)遞增的形式申請(qǐng)資源。
?有序資源分配法
?銀行家算法
文件系統(tǒng)
?Windows:FCB 表 + FAT + 位圖
?Unix:inode + 混合索引 + 成組鏈接
總結(jié)
以上是生活随笔為你收集整理的Linux 内核的同步方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 全国有多少叫刘冬冬的人?
- 下一篇: Linux下C程序的内存映像