linux核心態和使用者態的訊號量

2022-08-12 04:48:15 字數 786 閱讀 3946

在linux的核心態和使用者態都有訊號量,使用也不同,簡單記錄一下。

1> 核心訊號量,由核心控制路徑使用。 核心訊號量是struct semaphore型別的物件,它在中定義

struct semaphore {

atomic_t count;

int sleepers;

void sema_init (struct semaphore *sem, int val); 申請核心訊號量所保護的資源:

void down(struct semaphore * sem); // 可引起睡眠 釋放核心訊號量所保護的資源:

void up(struct semaphore * sem);

2> 使用者態訊號量分為兩種,一種為posix,另一種為 system v

posix訊號量的引用標頭檔案是,而system v訊號量的引用標頭檔案是

從使用的角度,system v訊號量是複雜的,而posix訊號量是簡單。比如,posix訊號量的建立和初始化或pv操作就很非常方便。

這裡只是簡單列舉posix訊號量

int sem_init(sem_t *sem, int pshared, unsigned int value);  

int sem_wait(sem_t *sem); // 這是乙個阻塞的函式,訊號量減1 

int sem_post(sem_t *sem); //把指定的訊號量sem的值加1; 呼醒正在等待該訊號量的任意執行緒。

以上內容均摘錄部落格:

inux 核心訊號量使用者態訊號量 詳解

Linux使用者態和核心態

一 unix linux的體系架構 如上圖所示,從巨集觀上來看,linux作業系統的體系架構分為使用者態和核心態 或者使用者空間和核心 核心從本質上看是一種軟體 控制計算機的硬體資源,並提供上層應用程式執行的環境。使用者態即上層應用程式的活動空間,應用程式的執行必須依託於核心提供的資源,包括cpu資...

Linux 核心態和使用者態

1.核心態 當乙個任務 程序 執行系統呼叫而陷入核心 中執行時,我們就稱程序處於核心執行態 或簡稱為核心態 此時處理器處於特權級最高的 0級 核心 中執行。當程序處於核心態時,執行的核心 會使用當前程序的核心棧。每個程序都有自己的核心棧。2.使用者態 當程序在執行使用者自己的 時,則稱其處於使用者執...

Linux 使用者態和核心態

系統呼叫是通向作業系統本身的介面,是面向底層硬體的。通過系統呼叫,可以使得使用者態執行的程序與硬體裝置 如cpu 磁碟 印表機等 進行互動,是作業系統留給應用程式的乙個介面。由作業系統實現 執行時,需要從使用者態切換到核心態 使用者態 當乙個程序在執行使用者自己的 時處於使用者執行態 使用者態 此時...