1,程序:
當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。
執行緒:執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器(
棧指標、程式計數器等
),但**區是共享的,即不同的執行緒可以執行同樣的函式。
多執行緒:多執行緒是指程式中包含多個執行流,即在乙個程式中可以同時執行多個不同的執行緒來執行不同的任務,也就是說允許單個程式建立多個並行執行的執行緒來完成各自的任務。
每乙個程序都提供了執行乙個程式所必需的資源,乙個程序具有4gb
的虛擬位址空間(
windows nt server enterprise edition
及windows 2000 advanced server
中低3gb
虛擬位址空間供程序使用,高
1gb供作業系統的核心**使用。
windows nt/2000
中低2gb
供程序使用,高
2gb供作業系統核心**使用。
windows9x
:0——64k
唯讀空間用來裝入
microsoft dos
資訊,64k——4m
裝入dos
的相容**,
4m——2gb
的私有空間供程序使用,
2gb——3gb
的共享空間裝入各種
dll**,
3gb——4gb
為共享的系統核心**空間,其中共享的
2gb——4gb
的空間是
99%的
「記憶體無效頁錯誤」、
「general protect error(gpe)」
及藍屏的罪魁禍首。),可執行**,資料,物件控制代碼,環境變數,優先權以及設定最大化最小化的功能。
每乙個程序都從乙個主線程開始執行,但可以在它所擁有的執行緒中建立額外的執行緒。乙個程序的所有執行緒共享程序的虛擬位址空間和系統資源,乙個執行緒的資源包括執行緒的機器暫存器設定,核心堆疊,執行緒環境變數和程序虛擬位址中的使用者堆疊。
(1)易於排程。
(2)提高併發性。通過執行緒可方便有效地實現併發性。程序可建立多個執行緒來執行同一程式的不同部分。
(3)開銷少。建立執行緒比建立程序要快,所需開銷很少。。
優點:可以提高cpu
的利用率。在多執行緒程式中,乙個執行緒必須等待的時候,
cpu可以執行其它的執行緒而不是等待,這樣就大大提高了程式的效率。
缺點:執行緒也是程式,所以執行緒需要占用記憶體,執行緒越多占用記憶體也越多;
多執行緒需要協調和管理,所以需要cpu
時間跟蹤執行緒;
執行緒之間對共享資源的訪問會相互影響,必須解決競用共享資源的問題;
執行緒太多會導致控制太複雜,最終可能造成很多bug;
(4)利於充分發揮多處理器的功能。通過建立多執行緒程序(即乙個程序可具有兩個或更多個執行緒),每個執行緒在乙個處理器上執行,從而實現應用程式的併發性,使每個處理器都得到充分執行。
(1)乙個執行緒只能屬於乙個程序,而乙個程序可以有多個執行緒,但至少有乙個執行緒。
(2)資源分配給程序,同一程序的所有執行緒共享該程序的所有資源。
(3)處理機分給執行緒,即真正在處理機上執行的是執行緒。
(4)執行緒在執行過程中,需要協作同步。不同程序的執行緒間要利用訊息通訊的辦法實現同步。
原文出處:
JAVA執行緒,程序
程式載入到記憶體中被cpu計算的過程 計算機資源分配 的最小單位 任務排程的最小單位 1 物理記憶體維度 每乙個程序都要分配一塊連續的記憶體空間 首位址,尾位址 2 執行角度 每乙個程序都被 cpu計算,每乙個程序都能掛起然後讓另外的程序被cpu計算 對於單核而言,每乙個時刻只能計算乙個程序!對於w...
JAVA執行緒和程序的區別 執行緒的建立
程序和執行緒的區別 執行緒是程序中更小的併發單位,乙個程序中包含多個執行緒。比如說聊天程序中包含有主線程 傳送訊息的執行緒和接收訊息的執行緒。程序中負責執行程式的乙個執行控制單元。執行緒負責程式的執行,而乙個程序允許有多個控制單元,我們稱為多執行緒。執行緒的建立方式 第一種方法 1,繼承thread...
執行緒和程序
標準的定義是 程序是執行緒的容器,乙個程序可於乙個或者多個執行緒,它是系統分配資源的基本單位 同乙個程序下,執行緒共享位址空降 已經開啟的檔案 訊號處理函式 報警訊號和其他,執行緒自己只保留程式計數器和棧。但是很遺憾的,這個只是教科書上的定義,實際情況是每個作業系統實現的作業系統特性不同,實現的方法...