進程和線程的區別是什么

進程是執行著的應用程序,而線程是進程內部的一個執行序列。一個進程可以包含多個線程,線程又叫做輕量級進程。

進程與線程的區別歸納:

a.地址空間和其他資源:進程間相互獨立,擁有獨立內存,進程是資源分配的基本單位;線程隸屬于某一進程,且同一進程的各線程間共享內存(資源),線程是cpu調度的基本單位。某進程內的線程在其他進程中不可見。

b.通信:進程間相互獨立,通信困難,通信IPC方法有:管道,信號,套接字,共享內存,消息隊列等,線程間可以直接讀寫進程數據段(如全局變量)來進行通信--需要進程同步和互斥手段的輔助,以保證數據的一致性。

c.調度與切換:線程上下文切換比進程上下文切換要快的多。進程間切換要保存上下文,加載另一個進程;而線程則共享了進程的上下文環境,切換更快。

d.在多線程os中,進程不是一個可執行的實體

(待補充)

其他論點:

進程是資源分配的單元,線程是獨立運行和調度的基本單位;進程是運行中的程序,線程是進程內部的一個執行序列;進程擁有的資源多,線程擁有的資源少;多個線程共享進程的資源;進程間切換代價大,線程間切換代價小

進程和線程的主要差別在于它們是不同的操作系統資源管理的方式。進程擁有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其他進程產生影響;線程只是一個進程中的不同執行路徑,線程有自己的堆棧和局部變量(在運行中必不可少的資源),但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉。所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發操作,只能用線程,不能用進程???

進程間通信(IPC,interProcess Communication):是指在不同進程之間傳播或交換信息。IPC的方式通常有管道(包括無名管道和命名管道),消息隊列,信號量,共享存儲,Socket,Streams等,其中Socket和Streams支持不同主機上的兩個進程IPC。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 操作系統概論 操作系統的概念 操作系統是指控制和管理計算機的軟硬件資源,并合理的組織調度計算機的工作和資源的分配,...
    野狗子嗷嗷嗷閱讀 12,049評論 3 34
  • 又來到了一個老生常談的問題,應用層軟件開發的程序員要不要了解和深入學習操作系統呢? 今天就這個問題開始,來談談操...
    tangsl閱讀 4,165評論 0 23
  • 表妹對妹夫說我這樣好,說弟弟那樣好 兩個殘疾人這臉往哪擱? 三姨三姨夫一來,給我和弟弟一人一百 三四十歲人這臉往哪...
    壹起桐行閱讀 483評論 0 0
  • 雪花還未繡活凸現的白龍,路面 為何錦絲飄帶系著兩端,你我 我只輕輕拉動 你就乘梅花鹿奔來 這渺茫的夢,沒有疼的感覺...
    忠志_3d7b閱讀 229評論 0 4
  • 今天是周一,天氣晴朗,但氣溫差有點大,我們還應注意預防感冒。 下午放學回家,吃完飯寫作業,發現...
    劉學穎媽媽閱讀 127評論 0 0