不同點
1、首先是定義
程序:是執行中一段程式,即一旦程式被載入到記憶體中並準備執行,它就是乙個程序。程序是表示資源分配的的基本概念,又是排程執行的基本單位,是系統中的併發執行的單位。
執行緒:單個程序中執行中每個任務就是乙個執行緒。執行緒是程序中執行運算的最小單位。
2、乙個執行緒只能屬於乙個程序,但是乙個程序可以擁有多個執行緒。多執行緒處理就是允許乙個程序中在同一時刻執行多個任務。
3、執行緒是一種輕量級的程序,與程序相比,執行緒給作業系統帶來側建立、維護、和管理的負擔要輕,意味著執行緒的代價或開銷比較小。
4、執行緒沒有位址空間,執行緒包含在程序的位址空間中。執行緒上下文只包含乙個堆疊、乙個暫存器、乙個優先權,執行緒文字包含在他的程序 的文字片段中,程序擁有的所有資源都屬於執行緒。所有的執行緒共享程序的記憶體和資源。 同一程序中的多個執行緒共享**段(**和常量),資料段(全域性變數和靜態變數),擴充套件段(堆儲存)。但是每個執行緒擁有自己的棧段, 暫存器的內容,棧段又叫執行時段,用來存放所有區域性變數和臨時變數。
5、父和子程序使用程序間通訊機制,同一程序的執行緒通過讀取和寫入資料到程序變數來通訊。
6、程序內的任何執行緒都被看做是同位體,且處於相同的級別。不管是哪個執行緒建立了哪乙個執行緒,程序內的任何執行緒都可以銷毀、掛起、恢復和更改其它執行緒的優先權。執行緒也要對程序施加控制,程序中任何執行緒都可以通過銷毀主線程來銷毀程序,銷毀主線程將導致該程序的銷毀,對主線程的修改可能影響所有的執行緒。
7、子程序不對任何其他子程序施加控制,程序的執行緒可以對同一程序的其它執行緒施加控制。子程序不能對父程序施加控制,程序中所有執行緒都可以對主線程施加控制。
相同點
程序和執行緒都有id/暫存器組、狀態和優先權、資訊塊,建立後都可更改自己的屬性,都可與父程序共享資源、都不鞥直接訪問其他無關程序或執行緒的資源。
執行緒和程序
標準的定義是 程序是執行緒的容器,乙個程序可於乙個或者多個執行緒,它是系統分配資源的基本單位 同乙個程序下,執行緒共享位址空降 已經開啟的檔案 訊號處理函式 報警訊號和其他,執行緒自己只保留程式計數器和棧。但是很遺憾的,這個只是教科書上的定義,實際情況是每個作業系統實現的作業系統特性不同,實現的方法...
程序和執行緒
乙個程序就是當前正在執行的乙個程式,包括程式的暫存器 程式計數器和變數的當前值。不同的程序擁有不同的位址空間。而執行緒可以理解為是程序中的控制流。同乙個程序內也就是說在同乙個位址空間內可以有多個控制流。也就是可以有多個線 程,他們共享位址空間。我們通常將程序視為是資源的集合,程序中有程式的正文 資料...
執行緒和程序
對於求職者,在面試的時候大多都會被問到 你對多執行緒了解麼?給我講講執行緒和程序的區別吧。在unix中,乙個程序可以理解為執行緒 位址空間 檔案描述符 資料,道破現實,其實就相當於老闆和員工,老闆就是程序,員工就是執行緒。老闆需要僱傭若干員工 執行緒 還要有辦公樓 位址空間 還要有若干的辦公裝置 檔...