1. 程式人生 > >執行緒,程序,程式,服務,之間的關係和區別

執行緒,程序,程式,服務,之間的關係和區別

簡而言之,一個程式至少有一個程序,一個程序至少有一個執行緒.

執行緒是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位.執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),但是它可與同屬一個程序的其他的執行緒共享程序所擁有的全部資源.
一個執行緒可以建立和撤銷另一個執行緒;同一個程序中的多個執行緒之間可以併發執行.

執行緒的引入:例如,有一個Web伺服器要程序的方式併發地處理來自不同使用者的網頁訪問請求的話,可以建立父程序和多個子程序的方式來進行處理,但是建立一個程序要花費較大的系統開銷和佔用較多的資源。除外,這些不同的使用者子程序在執行的時候涉及到程序上下文切換,上下文切換是一個複雜的過程。所以,為了減少程序切換和建立的開銷,提高執行效率和節省資源,人們在作業系統中引入了"執行緒(thread)"的概念。
 程序的作用和定義:程序是為了提高CPU的執行效率,減少因為程式等待帶來的CPU空轉以及其他計算機軟硬體資源的浪費而提出來的。程序是為了完成使用者任務所需要的程式的一次執行過程和為其分配資源的一個基本單位,是一個具有獨立功能的程式段對某個資料集的一次執行活動。

程序與程式的區別:
      程式是一組指令的集合,它是靜態的實體,沒有執行的含義。而程序是一個動態的實體,有自己的生命週期。一般說來,一個程序肯定與一個程式相對應,並且只有一個,但是一個程式可以有多個程序,或者一個程序都沒有。除此之外,程序還有併發性和交往性。簡單地說,程序是程式的一部分,程式執行的時候會產生程序。
總結:
      執行緒是程序的一部分,程序是程式的一部分。

程式和exe,dll之間的關係:

 EXE就是可執行檔案,你可要雙擊它, 它就可以執行,而DLL是一個動態連結庫檔案,就是說,它不可以自己執行,它是須要一個程式的其它功能執行的時候,它才能執行,打個比方,如果你的QQ要升級,那QQ裡面有關升級的DLL檔案它就會執行.
EXE是帶有程式入口(Main)的能被終端使用者直接執行的應用程式,隨著它的啟動系統會產生一個相應的程序。
DLL是動態連結庫,不包含程式執行入口,不能被終端使用者直接執行,本身需要附加到現有的程序中才可以執行。
但兩者都是基於PE格式,執行時由磁碟中的映像載入被呼叫者的記憶體或者共享空間中執行,包含程式的資料資訊,只是EXE還包括程式的程式碼資訊。
DLL可被多個程式共用,而EXE則不行,只能單獨執行