日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux学习笔记-消息队列概念

發布時間:2025/3/15 linux 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux学习笔记-消息队列概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

System V IPC概念

System V IPC對象的訪問

舉幾個例子

IPC對象的權限和所有者結構體

消息隊列

消息隊列屬性


?

System V IPC概念

Unix系統存在信號、管道和命令管道等基本進程間通訊機制。

System V引入了三種高級進程間通信機制:消息隊列、共享內存、信號量;

IPC對象(消息隊列、共享內存、信號量)存在于內核中而不是文件系統中,由用戶控制釋放(用戶管理ipc對象的生命周期),不像管道的釋放由內核控制。

IPC對象通過其標識符來引用和訪問,所有IPC對象在內核空間中有唯一性標識ID,在用戶控件中的唯一性標識稱為key。

?

System V IPC對象的訪問

IPC對象是全局對象:可用ipcs,ipcrm等命令查看或刪除。

每個IPC對象都由get函數創建:

msgget,shmget,semget

調用get函數時必須指定關鍵字key

?

舉幾個例子

注意:管道是由內核控制,IPC是用戶自己控制,所以要手動釋放;

舉個例子:ipcs和ipcrm命令:

由上可知:

通信有3種,如下:

1. Shared Memory Segments;

2. Semaphore Arrays;

3. Message Queues;

?

如果加-m是指memory,-q是Queues如下:

?

IPC對象的權限和所有者結構體

struct ipc_perm{uid_t uid; //所有者的使用idgid_t gid; //所有者的組uid_t cuid; //創建者的idgid_t cgid; //創建者的組mode_t mode; //訪問模塊... };

?

消息隊列

1. 消息隊列是內核中的一個鏈表;

2. 用戶進程將數據傳輸到內核后,內核重寫添加一些如用戶ID、組ID、讀寫進程的ID和優先級等相關信息后并打成一個數據包稱為消息;

3.運行一個或者多個進程往消息隊列中寫消息和讀取消息,但一個消息只能被一個進程讀取,讀取完畢后就自動刪除;

4.消息隊列具有一定的FIFO的特性,消息可以按照順序發送到隊列中,也可以幾種不同的方式從隊列中讀取。沒一個消息隊列在內核中用一個唯一的IPC消息表示ID表示;

5.消息隊列到實現包括創建和打開隊列、發送消息、讀取消息、控制消息隊列四種操作。

?

消息隊列屬性

struct msqid_ds{struct ipc_perm msg_perm;msgqnum_t msg_qnum; //消息隊列數量msglen_t msg_qbytes; //隊列的最大字節pid_t msg_lspid; //最后發送的pidpid_t msg_lrpid; //最后接收的pidtime_t msg_stime; //最后發送的時間time_t msg_ctime; //最后改變的時間 };

?

總結

以上是生活随笔為你收集整理的Linux学习笔记-消息队列概念的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。