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