進程間的通信方式及優劣式分析

1.進程與線程的區別

    進程和線程都是cpu執行時間段的描述,只是時間段的大小不一樣。一個進程是由一個或者多個線程組成的,有一個主線程。


2.進程間的通信方式

 通信方式:管道    系統ipc   socket


2.1.管道

             普通管道:半雙工模式,單向傳輸,只適用於父子進程之間的通信。

             流管道:全雙工,雙向傳送,只適用父子進程之間的通信。

             命名管道:半雙工,單向傳輸,使用於各進程之間。

     

      2.2.系統ipc

            管道:相當於普通管道。

            信號量:相當於計數器,對臨界資源上的同步鎖。

           信號:用於通知接收進程某事件已經發生。(比較複雜)

          共享存儲(內存):通過映射,可接受多個進程同時訪問。一個進程創建 一個映射內存,其他進程通過映射直接訪問內存。是最快的一種ipc通信方式


    2.3.socket

        不同於其他通信方式, 它可用於不同進程或者其進程之間的通信。



3.管道通信於系統ipc通信的區別

 管道通信:  優勢:支持所有的unix,最後一個進程訪問完管道,管道將被完全刪除。

                   劣勢:只用於父子進程之間的通信。


系統ipc:優勢:功能強大,可用於無關進程之間的通信。

              劣勢:關鍵字key_t屬於內存標識,佔用的是內核資源





 

發佈了22 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章