二 、sem_op 詳解
這個結構記錄了單一訊號量的一些資訊。
struct sem
sem結構每個域的含義:
域
含義semval
訊號量的值
sempid
最近一次執行操作的程序的程序號
semncnt
等待訊號值增長,即等待可利用資源出現的程序數
semzcnt
等待訊號值減少到零,即等待全部資源可被獨佔的程序數
struct sembuf
sembuf結構每個域的含義:
域
含義sem_num
要處理的訊號量在訊號量集中的序號
sem_op
它可以去正值,負值或者零,表示要執行的操作
sem_***
操作標記,相關的有ipc_nowait和sem_undo這兩個標誌
表示:程序使用完資源,交回資源。分為兩種情況:
sem_***中sem_undo沒有被置1
訊號量的值加上sem_op的值
sem_***中sem_undo被置1
訊號量的值減去sem_op的值
表示:程序要使用資源。對應兩種情況:
訊號的值》=sem_op的絕對值
表示資源足夠分配給程序
訊號的值表示資源不足
每一種情況又分別對應兩種情況:
(1) 資源充足
sem_***中sem_undo沒有被置1
訊號量的值減去sem_op的絕對值
sem_***中sem_undo被置1
訊號量的值加上sem_op的絕對值
(2)資源不足
sem_***中ipc_nowain被置1
函式立刻帶錯返回
sem_***中ipc_nowain沒有被置位
與這個訊號量相關的sem結構中的semncnt域的值減1,這個程序休眠,直到其他程序返回資源
表示:程序要一直等待,直到訊號量值位零。同樣對應兩種情況:
訊號量值==0
函式立刻返回
訊號量值!=0
與這個訊號量相關的sem結構中的sem_zcnt域的值加1,這個程序休眠,直到訊號量的值位0
初識嵌入式 嵌入式開發概述
1 什麼是嵌入式技術 1 嵌入式軟體與非嵌入式軟體的區別?答 嵌入式軟體是結合作業系統之上做的開發 非嵌入式軟體是做的裸機開發。裸機 沒有作業系統 2 嵌入式開發與微控制器開發的區別?答 區別 是否有作業系統。拓展 答 優點 解決了軟體的移植性 解決了開發人員的能力的劃分問題。提供了豐富的網路協議 ...
嵌入式網路通訊詳解
iso osi的參考模型共有7層,由低層至高層分別為 物理層 資料鏈路層 網路層 傳輸層 會話層 表示層 應用層。各層功能分別為 1 物理層 在物理 上傳輸原始的資料位元流。2 資料鏈路層 將資料分成乙個個資料幀,以資料幀為單位傳輸。有應有答,遇錯重發。3 網路層 將資料分成一定長度的分組,將分組穿...
如何學習嵌入式 嵌入式如何入門?
學習嵌入式,該學習什麼基本的知識呢?嵌入式如何入門?其次,應該對作業系統有所了解,這對你對硬體和軟體的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如程序 執行緒,系統如何來分配資源的,系統如何來管理硬體的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關係,多看看,結合以後的專案經驗...