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

歡迎訪問 生活随笔!

生活随笔

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

linux

linux内核多种进程间通信机制

發布時間:2024/4/17 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux内核多种进程间通信机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.管道通信:無名管道和有名管道

  (1)管道(無名管道)
  1.管道通信的原理:內核維護的一塊內存,有讀端和寫端(管道是單向通信的)
  2.管道通信的方法:父進程創建管理后fork子進程,子進程繼承父進程的管道fd
  3.管道通信的限制:只能在父子進程間通信、半雙工
  4.管道通信的函數:pipe、write、read、close  

  (2)有名管道(fifo)
  1.有名管道的原理:實質也是內核維護的一塊內存,表現形式為一個有名字的文件
  2.有名管道的使用方法:固定一個文件名,2個進程分別使用mkfifo創建fifo文件,然后分別open打開獲取到fd,然后一個讀一個寫
  3.管道通信限制:半雙工(注意不限父子進程,任意2個進程都可
  4.管道通信的函數:mkfifo、open、write、read、close

2.SystemV IPC(Inter-Process Communication 進程間通信):信號量、消息隊列、共享內存 ?

  IPC:Inter-Process Communication 進程間通信,兩個任意進程之間的通信,實質也是內核提供的公共內存,系統通過一些專用API來提供SystemV IPC功能

縮寫全寫釋義
msgmessage (queue)消息隊列
semsemaphore信號量
shmshared memory共享內存

  (1)消息隊列
  1.本質上是一個隊列,隊列可以理解為(內核維護的一個)FIFO
  2.工作時A和B 2個進程進行通信,A向隊列中放入消息,B從隊列中讀出消息。

  (2)信號量(通過判斷信信號量的值,相當于一個鎖)
  1.實質就是個計數器(其實就是一個可以用來計數的變量,可以理解為int a)
  2.通過計數值來提供互斥和同步

  (3)共享內存
  1.大片內存直接映射
  2.類似于LCD顯示時的顯存用法

例子:

視頻編解碼就是運用共享內存加信號量的方法使得AB進程間相互通信

? ? ? ? ? ?信號量
A進程----------->B進程
  |     ?|
  |--共享內存--|
假設信號量初始值s=1,A進程往共享內存傳輸數據,傳輸完成后把s值置為0,b進程觀測到s為0后,開始從共享內存讀取數據,讀取完成后s置為1,在這期間A進程讀取到s的值一直為0,不再往里面傳輸數據,直到s被b進程置為1,再往共享內存中傳輸數據

?

  參考?http://blog.csdn.net/guodongxiaren/article/details/43876207
3.Socket域套接字
4.信號通信

轉載于:https://www.cnblogs.com/Deanboy/p/7552831.html

總結

以上是生活随笔為你收集整理的linux内核多种进程间通信机制的全部內容,希望文章能夠幫你解決所遇到的問題。

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