程序 進程 線程

關於進程與線程常見的可應對回答的面試題



程序

是指令的有序集合,靜態概念,長久的。


進程

特性

  • 動態性 是程序在處理機上的一次執行過程,是個動態概念,暫時的,有生命週期。
  • 併發性 多個進程可以同時存在於內存中
  • 獨立性 系統進行資源分配和調度的基本單位,是系統權限的集合。資源調度。
  • 制約性

組成

  • 程序
  • 數據
  • 進程控制塊(process control block,PCB)   是系統感知進程存在的標誌,類似於身份證

3種狀態

  • 運行
  • 就緒
  • 等待/阻塞


程序與進程

基於線程的多任務處理是同一程序的片段的併發執行

通過多次執行,一個程序可對應多個進程;通過調用關係,一個進程可包括多個程序。


線程

是CPU分配和調度單位。執行調度。

程序執行流的最小單元

一個線程可以創建和撤銷另一個線程


進程與線程

基於進程的多任務處理是程序的併發執行
進程在執行過程中擁有獨立的內存單元,而同一個進程裏的各線程之間共享數據段,多個線程共享內存,從而極大地提高了程序的運行效率。所有線程的地址空間相同,都是進程的地址空間,意味着,線程可以訪問該地址空間的每一個虛地址。
同一個進程中的多個線程之間可以併發執行,線程的劃分尺度小於進程,使得多線程程序的併發性高。
線程在執行過程中與進程還是有區別的。每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。
從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執行部分可以同時執行。但操作系統並沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。
進程間通信IPC,線程間可以直接讀寫進程數據段來進行通信(需要進程同步和互斥手段的輔助,以保證數據的一致性)

與Linux下創建進程不同,WIN32線程不是從創建處開始運行,而是由CreateThread指定一個函數,線程就從那個函數處開始運行。





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