**自:
對於執行緒,程序的概念一直都是比較模糊,最近整理了一下。總結起來就是,執行緒是程序的一部分,程序是程式的一部分。這個說法不準確,但是可以指出期間的差別;
程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的乙個獨立單位.執行緒是程序的乙個實體,是cpu排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位.執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不可少的資源(如程式計數器,一組暫存器和棧),但是它可與同屬乙個程序的其他的執行緒共享程序所擁有的全部資源.
乙個執行緒可以建立和撤銷另乙個執行緒;同乙個程序中的多個執行緒之間可以併發執行。執行緒的引入:例如,有乙個web伺服器要程序的方式併發地處理來自不同使用者的網頁訪問請求的話,可以建立父程序和多個子程序的方式來進行處理,但是建立乙個程序要花費較大的系統開銷和占用較多的資源。除外,這些不同的使用者子程序在執行的時候涉及到程序上下文切換,上下文切換是乙個複雜的過程。所以,為了減少程序切換和建立的開銷,提高執行效率和節省資源,人們在作業系統中引入了"執行緒(thread)"的概念。
程序的作用和定義:程序是為了提高cpu的執行效率,減少因為程式等待帶來的cpu空轉以及其他計算機軟硬體資源的浪費而提出來的。程序是為了完成使用者任務所需要的程式的一次執行過程和為其分配資源的乙個基本單位,是乙個具有獨立功能的程式段對某個資料集的一次執行活動。
執行緒和程序的區別:
1、 執行緒是程序的一部分,所以執行緒有的時候被稱為是輕權程序或者輕量級程序。
2、 乙個沒有執行緒的程序是可以被看作單執行緒的,如果乙個程序內擁有多個程序,程序的執行過程不是一條線(執行緒)的,而是多條線(執行緒)共同完成的。
3、 系統在執行的時候會為每個程序分配不同的記憶體區域,但是不會為執行緒分配記憶體(執行緒所使用的資源是它所屬的程序的資源),執行緒組只能共享資源。那就是說,出了cpu之外(執行緒在執行的時候要占用cpu資源),計算機內部的軟硬體資源的分配與執行緒無關,執行緒只能共享它所屬程序的資源。
4、 與程序的控制表pcb相似,執行緒也有自己的控制表tcb,但是tcb中所儲存的執行緒狀態比pcb表中少多了。
5、 程序是系統所有資源分配時候的乙個基本單位,擁有乙個完整的虛擬空間位址,並不依賴執行緒而獨立存在。
程序與程式的區別:
程式是一組指令的集合,它是靜態的實體,沒有執行的含義。而程序是乙個動態的實體,有自己的生命週期。一般說來,乙個程序肯定與乙個程式相對應,並且只有乙個,但是乙個程式可以有多個程序,或者乙個程序都沒有也可以只有乙個程序。除此之外,程序還有併發性和交往性。簡單地說,程序是程式的一部分,程式執行的時候會產生程序。總結:執行緒是程序的一部分,程序是程式的一部分。
前一句說的不太準確,執行緒也有自己的資源,比如棧,私有資料等等。說他使用而不擁有資源指的是使用的是程序的開啟檔案控制代碼,程序的全域性資料,程序的位址空間等等,這些都屬於程序,而不屬於執行緒,程序內個執行緒共享。
程序切換比執行緒切換開銷大是因為程序切換時要切頁表,而且往往伴隨著頁排程,因為程序的資料段**段要換出去,以便把將要執行的程序的內容換進來。本來程序的內容就是執行緒的超集。而且執行緒只需要儲存執行緒的上下文(相關暫存器狀態和棧的資訊)就好了,動作很小。
程序與執行緒的區別與聯絡
程序 資源分配的基本單位,也是排程執行的基本單位 執行緒 程序中執行執行的最小單位,執行緒是作業系統可識別的最小執行和排程單位 兩者的關係 1.乙個執行緒只能屬於乙個程序,而乙個程序可以有多個執行緒 2.程序是資源分配的基本單位。同一程序中的所有執行緒共享該程序的資源包括 段 和常量 資料段 全域性...
程序與執行緒的區別與聯絡
程序,是併發執行的程式在執行過程中分配和管理資源的基本單位,是乙個動態概念,竟爭計算機系統資源的基本單位。每乙個程序都有乙個自己的位址空間,即程序空間或 虛空間 程序空間的大小 只與處理機的位數有關,乙個 16 位長處理機的程序空間大小為 216 而 32 位處理機的程序空間大小為 232 程序至少...
執行緒與程序的聯絡與區別
程序是乙個動態概念,表示程式在乙個資料集合上的一次動態執行過程。程序包含正在執行的乙個程式的所有狀態資訊 程序可以動態建立和結束,多個程序可以併發執行,不同程序間互不影響 作業系統實現 同時程序間又相互制約,它們因訪問共享資料 資源或程序間同步而產生制約。程式是靜態的,它是檔案。程序是動態的,是執行...