進程與線程的區別及其通信方式

進程與線程的區別及其通信方式

進程與線程的區別

  • 進程是資源分配的基本單位,是執行中程序的實例

  • 線程是操作系統調度的基本單位,一個進程可以有多個線程。線程基本不擁有系統資源,但可以訪問隸屬進程的資源。

  • 線程切換時只需保存和設置少量寄存器內容,開銷很小。而進程切換時則開銷很大,涉及到當前執行進程CPU環境的保存及新調度進程CPU環境的設置。

  • 一個程序至少有一個進程,而一個進程中至少有一個線程。一個線程可以創建和銷燬另一個線程。

通信方式

  • 管道
  • 命名管道
  • 消息隊列
  • 信號量
  • 共享內存
  • 套接字

管道只能用於有親緣關係的進程之間的通信,命名管道可以用於無親緣關係的進程之間的通信,但存在同步阻塞問題。

消息隊列一般用於異步通信,避免了命名管道的同步堵塞問題,實現了通信雙方之間的解耦

而信號量主要用於進程之間以及同一進程不同線程之間的通信。共享內存使得多個進程可以訪問同一塊內存空間,是最快的可用IPC形式,通常結合信號量一起使用。

套接字則可用於不同機器間的進程通信。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章