訊息佇列, 訊號量, 共享記憶體
1.訊息佇列的概念:
訊息佇列就是乙個訊息的鍊錶。可以把訊息看作乙個記錄,具有特定的格式及特定的優先順序。對訊息佇列有寫許可權的程序可以像中按照一定的規則新增新訊息,對訊息佇列有讀許可權的程序則可以從訊息佇列讀走訊息,訊息佇列是隨核心持續的。
2.訊息佇列的基礎理論:
struct kern_ipc_perm
key_t key;
uid_t uid;
gid_t gid;
uid_t cuid;
gid_t cgid;
more_t mode;
unsigned long seq;
3.訊息佇列的使用:
(1)開啟或建立訊息佇列
(2)讀寫操作
struct msgbuf
long mtype;
char mtext[1];
(3)獲得或設定訊息佇列屬性
4.訊息佇列api
(1)ftok 函式
key = ftok(path_ptr, 'a');
ipc_id = ipc(msgget, (int)key, flags, 0, null, 0);
...(2)msgget 函式
建立訊息佇列
(3)msgrcv 函式
讀出訊息佇列
(4)msgsnd 函式
往訊息佇列寫入資料
(5)msgctl 函式
控制訊息佇列
5.訊號燈概念:
提供對程序間共享資源訪問控制機制。相當於記憶體中的標誌,程序可以根據它判斷是否能夠訪問某些資源,同時程序
也可以修改該標誌。除了訪問控制還可以用於程序同步。
二種分類:
(1)二值訊號燈
(2)計算訊號燈
6.核心實現原理
struct sem
int semval;
int sempid;
7.實現訊號燈
(1)開啟或建立訊號燈
(2)訊號燈值操作
(3)獲得或設定訊號燈屬性
8.訊號燈api
(1)semget用於配置訊號燈
(2)semop用於訊號燈處理
(3)semctl用於控制訊號燈
9.記憶體共享一
mmap()
fd = open(name, flag, mode);
if(fd < 0)
ptr = mmap(null, len, prot_read | prot_write | rprot_write, map_shared, fd, 0);
10.記憶體共享二
shmat()
struct shmid_kernel
struct kern_ipc_perm shm_perm;
struct file * shm_file;
int id;
unsigned long shm_nattch;
unsigned long shm_segsz;
time_t shm_atim;
time_t shm_dtim;
time_t shm_ctim;
pid_t shm_cprid;
pid_t shm_lprid;
蘇嵌學習日誌
姓名 盧元玉 日期 2018.7.12.今日學習任務 1.完成老師布置的31 道嵌入式 linux 開發工具篇問題整理 2.完成4個c 語言編寫。今日任務完成情況 1.基本能完成老師給我門布置的三十多道複習題目 2.對程式編寫還存在一定的難度,不過有老師和同學的幫助,最終能順利完成任務。今日開發中出...
蘇嵌學習日誌
學習日誌 姓名 於慧 日期 2018.7.23 今日學習任務 軟體安裝環境 stm32的簡單介紹 了解stm32f4xx的gpio暫存器 用暫存器點亮乙個led燈 了解韌體庫 建立基礎模板 今日任務完成情況 詳細說明本日任務是否按計畫完成,開發的 量 完成軟體安裝 了解了stm32的一些簡單知識 實...
蘇嵌學習日誌
學習日誌 姓名 於慧 日期 2018.7.25 今日學習任務 gpio 時鐘systick系統定時器 今日任務完成情況 詳細說明本日任務是否按計畫完成,開發的 量 使用韌體庫點亮led燈 部分 include bsp led.h include stm32f4xx.h int main void i...