核心中的競爭狀態和互斥(簡述)

2021-08-13 18:33:29 字數 388 閱讀 3456

(1)競爭狀態(簡稱竟態);

(2)臨界段(某一段**,該**有可能造成併發,因此應該新增鎖。這段**應該盡可能地短)、互斥鎖、死鎖(由於互斥鎖使用不對,導致的後果);

(3)同步與併發(多cpu、(單cpu下)多工、中斷)。

(1)原子操作(automic_t,即不可分割的操作(以前認為原子不可以分割))

(2)訊號量、互斥鎖;

(3)自旋鎖;

(1)自旋鎖不能遞迴

(2)自旋鎖可以用在中斷上下文(即中斷處理程式)(訊號量不可以,因為當執行條件不滿足時,可能造成睡眠),但是在中斷上下文中獲取自旋鎖之前要先禁用本地中斷;

(3)自旋鎖的核心要求

(4)

臨界資源 互斥訪問 核心中的up和down函式

訊號量 semaphore 是用於保護臨界區的一種常用方法。只有得到訊號量的程序才能執行臨界區 而沒有得到訊號量的程序進入休眠等待狀態。linux系統中與訊號量相關的操作主要有如下4種。下面 定義名為sem的訊號量。struct semaphore sem struct semaohore結構體在核...

核心中的likely和unlikely巨集的使用

在核心 中經常會看到unlikely和likely的蹤影。他們實際上是定義在 linux compiler.h 中的兩個巨集。define likely x builtin expect x 1 define unlikely x builtin expect x 0 這裡的 built expec...

linux核心中的BUG 和 BUG ON

文章出處 在核心 中,經常會看到一些除錯函式,如bug,bug on等。使用前,先在核心配置中把kernel debug選上 make menuconfig kernel hacking kernel debug 作用 一些核心呼叫可以用來方便標記bug,提供斷言並輸出資訊。最常用的兩個是bug 和...