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