程序、進程和線程的區別
程序是一組指令及參數的集合,指令按照既定的邏輯控制計算機運行。進程則是運行着的程序,是操作系統執行的基本單位。線程則是為了節省資源而可以在同一個進程中共享資源的一個執行單位。
程序和進程的區別:
C、C++、Java等語言編寫的源程序經相應的編譯器編譯成可執行文件后,提交給計算機處理器運行。應用程序的運行狀態稱為進程。進程與應用程序的區別在於應用程序作為一個靜態文件存儲在計算機系統的硬盤等存儲空間中,而進程則是處於動態條件下由操作系統維護的資源管理實體。可以從以下幾個方面進行區別:
- 進程是動態的,而程序是靜態的。
- 進程有一定的生命周期,而程序是指令的集合,本身無"運動"的含義。
- 一個進程只能對應一個程序,一個程序可以對應一個進程。進程和程序的關系就像戲劇和劇本之間的關系。
進程和線程
線程和進程是另一對有意義的概念,主要區別和聯系如下:
- 進程是操作系統進行資源分配的基本單位,擁有完整的進程空間。進行系統資源分配的時候,除了CPU資源之外,不會給線程分配獨立的資源,線程所需要的資源需要共享。
- 線程是進程的一部分,如果沒有進行顯示的線程分配,可以認為進程是單線程的;如果進程中建立了線程,則可認為系統是多線程的。
- 多線程和多進程是兩種不同的概念。多線程與多進程有不同的資源共享方式。
- 進程有進程控制塊PCB,系統通過PCB對進程進行調度。進程有線程控制塊TCP,但TCB所表示的狀態比PCB要少的多。