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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

记一次阿里面试题:都有哪些进程间通信方式?麻烦你不要再背了

發布時間:2025/3/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 记一次阿里面试题:都有哪些进程间通信方式?麻烦你不要再背了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 管道

學習軟件工程規范的時候,我們知道瀑布模型,在整個項目開發過程分為多個階段,上一階段的輸出作為下一階段的輸入。各個階段的具體內容如下圖所示

最初我們在學習Linux基本命令使用的時候,我們經常通過多個命令的組合來完成我們的需求。比如說我們想知道如何查看進程或者端口是否在使用,會使用下面的這條命令

這里的"|"實際上就是管道的意思。"|"前面部分作為"|"后面的輸入,很明顯是單向的傳輸,這樣的管道我們叫做"匿名管道",自行創建和銷毀。既然有匿名管道,應該就有帶名字的管道"命名管道"。如果你想雙向傳輸,可以考慮使用兩個管道拼接即可。

創建命名管道的方式

test即為管道的名稱,在Linux中一切皆文件,管道也是以文件的方式存在,咋們可以使用ls -l 查看下文件的屬性,它會"p"標識。

下面我們向管道寫入內容

echo "666" > test

此時按道理來說咋們已經將內容寫入了test,沒有直接輸出是因為我們需要開啟另一個終端進行輸出(可以理解為暫存管道)

cat < test

ok,我們發現管道內容被讀出來,同時echo退出。那么管道這種通信方式有什么缺點?我們知道瀑布模型的軟件開發模式是非常低下的,同理采用管道進行通信的效率也很低,因為假設現在有AB兩個進程,A進程將數據寫入管道,B進程需要等待A進程將信息寫完以后才能讀出來,所以這種方案不適合頻繁的通信。那優點是什么?

最明顯的優點就是簡單,我們平時經常使用以致于都不知道這是管道。鑒于上面的缺點,我們怎么去彌補呢?接著往下看

2 消息隊列

管道通信屬于一股腦的輸入,能不能稍微溫柔點有規矩點的發送消息?

答:可以的。消息隊列在發送數據的時候,按照一個個獨立單元(消息體)進行發送,其中每個消息體規定大小塊,同時發送方和接收方約定好消息類型或者正文的格式。

在管道中,其大小受限且只能承載無格式字節流的方式,而消息隊列允許不同進程以消息隊列的形式發送給任意的進程。

但是當發送到消息隊列的數據太大,需要拷貝的時間也就越多,所以還有其他的方式?繼續看

3 共享內存

使用消息隊列可以達到不錯的效果,但是如果我們兩個部門需要交換比較大的數據的時候,一發一收還是不能及時的感知數據。能不能更好的辦法,雙方能很快的分享內容數據,答:有的,共享內存

我們知道每個進程都有自己的虛擬內存空間,不同的進程映射到不同的物理內存空間。那么我們可不可以申請一塊虛擬地址空間,不同進程通過這塊虛擬地址空間映射到相同的屋里地址空間呢?這樣不同進程就可以及時的感知進程都干了啥,就不需要再拷貝來拷貝去。

我們可以通過shmget創建一份共享內存,并可以通過ipcs命令查看我們創建的共享內存。此時如果一個進程需要訪問這段內存,需要將這個內存加載到自己虛擬地址空間的一個位置,讓內核給它一個合法地址。使用完畢接觸板頂并刪除內存對象。

那么問題來了,這么多進程都共享這塊內存,如果同時都往里面寫內容,難免會出現沖突的現象,比如A進程寫了數字5,B進程同樣的地址寫了6就直接給覆蓋了,這樣就不友好了,怎么辦?繼續往下看

4 信號量

為了防止沖突,我們得有個約束或者說一種保護機制。使得同一份共享的資源只能一個進程使用,這里就出現了信號量機制。

信號量實際上是一個計數器,這里需要注意下,信號量主要實現進程之間的同步和互斥,而不是存儲通信內容。

信號量定義了兩種操作,p操作和v操作,p操作為申請資源,會將數值減去M,表示這部分被他使用了,其他進程暫時不能用。v操作是歸還資源操作,告知歸還了資源可以用這部分。

5 信號

從管道----消息隊列-共享內存/信號量,有需要等待的管道機制,共享內存空間的進程通信方式,還有一種特殊的方式--信號

我們或許聽說過運維或者部分開發需要7 * 24小時值守(項目需要上線的時候),當然也有各種監管,告警系統,一旦出現系統資源緊張等問題就會告知開發或運維人員,對應到操作系統中,這就是信號。

在操作系統中,不同信號用不同的值表示,每個信號設置相應的函數,一旦進程發送某一個信號給另一個進程,另一進程將執行相應的函數進行處理。也就是說先把可能出現的異常等問題準備好,一旦信號產生就執行相應的邏輯即可。

6 套接字

上面的幾種方式都是單機情況下多個進程的通信方式,如果我想和相隔幾千里的小姐姐通信怎么辦?

這就需要套接字socket了。其實這玩意隨處可見,我們平時的聊天,我們天天請求瀏覽器給予的響應等,都是這老鐵。

7 總結

分享了一下幾種進程間通信方式,希望大家能知其然并知其所以然,機械式的記憶容易忘記哦。

  • 管道

  • 消息隊列

  • 共享內存

  • 信號量

  • 信號

  • 套接字

有道無術,術可成;有術無道,止于術

歡迎大家關注Java之道公眾號

好文章,我在看??

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的记一次阿里面试题:都有哪些进程间通信方式?麻烦你不要再背了的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产拍拍拍 | 欧美人与禽猛交乱配 | 91久久久久久久久久久久 | 亚洲免费视频一区二区三区 | 成人毛片视频网站 | 国产精品有码 | 91九色中文| 国产欧美一区二区在线观看 | 中文字幕日产 | 精品国产成人av在线免 | 成片在线观看 | 久久网址 | xxxx69国产| 久草电影在线 | 884aa四虎影成人精品一区 | 白白色2012年最新视频 | 伊人色综合网 | 中国国产bdsm紧缚捆绑 | 快灬快灬一下爽69 | 欧美一区网站 | 久久久久久久久久久网 | 天天综合天天做天天综合 | 亚洲丁香婷婷 | 国产成人精品二区三区亚瑟 | 夜夜嗨网站 | 精品国产综合区久久久久久 | 日本色www | 在线播放成人 | 九九资源网 | 女同av在线播放 | 91麻豆影院| 男人阁久久 | 日韩精品免费一区二区在线观看 | 欧美一区二区三区久久妖精 | 中文字幕理论片 | 国产理论视频在线观看 | 黄色小视频在线观看免费 | 奇米影视久久 | 国产午夜精品无码 | 98国产视频| 九九在线精品 | 可以免费看的av网站 | av在线男人天堂 | 国产美女永久无遮挡 | 日韩伦理视频 | 亚洲人成一区 | 婷婷俺也去 | 狠狠狠狠狠狠干 | 华人av在线| 免费成人黄 | 伊人网在线播放 | 中文字幕一区二区在线观看视频 | 国产一级片毛片 | 久久精品视频免费观看 | 欧美 日韩 国产 在线 | 亚洲综合免费观看高清完整版在线 | 国产一区二区在线免费观看 | 茄子爱啪啪| 色婷婷av久久久久久久 | 国内毛片毛片 | 国产av成人一区二区三区高清 | 国产伦精品一区二区三区高清版 | 欧美三级视频在线播放 | 久久亚洲私人国产精品va | 黄色草逼视频 | 欧美大片免费观看网址 | 男人午夜网站 | 欧美亚洲日本一区 | 美国福利片 | 曰曰操 | 久久国产影视 | 国产香蕉精品视频 | xxxx日本高清 | 麻豆国产网站 | 国产剧情av引诱维修工 | 欧美14sex性hd摘花 | 天堂网一区二区 | 91网视频| 91久久久久久久久久久久 | 午夜999| 日韩国产亚洲欧美 | 白丝美女喷水 | 精品视频在线一区 | 成人片在线视频 | av小说区| 亚洲美免无码中文字幕在线 | 亚洲日本色图 | 大尺度做爰床戏呻吟舒畅 | 69精品国产| 亚洲经典三级 | 老头把女人躁得呻吟 | 伊在线久久丫 | 日本aⅴ在线观看 | 欧美久久久影院 | 精品一区二区三区成人免费视频 | 久久人人爽人人爽人人片 | 国模无码视频一区二区三区 | 亚洲永久免费 | 欧美特级黄色录像 |