進程是指運行中的應(yīng)用程序,每一個進程都有自己獨立的內(nèi)存空間。一個應(yīng)用程序可以同時啟動多個進程。例如對于IE瀏覽器程序,每打開一個IE瀏覽器窗口,就啟動了一個新的進程。同樣,每次執(zhí)行JDK的java.exe程序,就啟動了一個獨立的Java虛擬機進程
進程與線程的區(qū)別?進程與線程的區(qū)別 進程與線程的區(qū)別
方法
進程:指在系統(tǒng)中能獨立運行并作為資源分配的基本單位,它是由一組機器指令、數(shù)據(jù)和堆棧等組成的,是一個能獨立運行的活動實體。
進程和線程都是由操作系統(tǒng)所體會的程序運行的基本單元,系統(tǒng)利用該基本單元實現(xiàn)系統(tǒng)對應(yīng)用的并發(fā)性。進程和線程的區(qū)別在于: 線程的劃分尺度小于進程,使得多線程程序的并發(fā)性搞。 另外,進程在執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享內(nèi)
進程一般有三個狀態(tài):就緒狀態(tài)、執(zhí)行狀態(tài)和等待狀態(tài)【或稱阻塞狀態(tài)】;進程只能由父進程建立,系統(tǒng)中所有的進程形成一種進程樹的層次體系;掛起命令可由進程自己和其他進程發(fā)出,但是解除掛起命令只能由其他進程發(fā)出。
程序(program)只是一組指令的有序集合。 任務(wù)(task)是最抽象的,是一個一般性的術(shù)語,指由軟件完成的一個活動。一個任務(wù)既可以是一個進程,也可以是一個線程。簡而言之,它指的是一系列共同達到某一目的的操作。例如,讀取數(shù)據(jù)并將數(shù)據(jù)放入內(nèi)存中。這
由程序段、相關(guān)的數(shù)據(jù)段和PCB三部分構(gòu)成了進程實體(又稱進程印像),一般,我們把進程實體就簡稱為進程。
1、功能不同 進程是計算機中的程序關(guān)于某數(shù)據(jù)集合上的一次運行活動,是系統(tǒng)進行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基矗 線程是操作系統(tǒng)能夠進行運算調(diào)度的最小單位。它被包含在進程之中,是進程中的實際運作單位。 2、工作原理不同 在
進程的特征:
線程是指進程內(nèi)的一個執(zhí)行單元,也是進程內(nèi)的可調(diào)度實體. 與進程的區(qū)別: (1)地址空間:進程內(nèi)的一個執(zhí)行單元;進程至少有一個線程;它們共享進程的地址空間;而進程有自己獨立的地址空間; (2)資源擁有:進程是資源分配和擁有的單位,同一個進程內(nèi)的線程
1.動態(tài)性:進程的實質(zhì)是程序的一次執(zhí)行過程,進程是動態(tài)產(chǎn)生,動態(tài)消亡的。
進程優(yōu)點:每個進程互相獨立,不影響主程序的穩(wěn)定性,子進程崩潰沒關(guān)系; 缺點:需要跨進程邊界,如果有大數(shù)據(jù)量傳送,就不太好,適合小數(shù)據(jù)量傳送、密集運算 多進程調(diào)度開銷比較大。 線程優(yōu)點:無需跨進程邊界; 缺點:每個線程與主程序共用地
2.并發(fā)性:任何進程都可以同其他進程一起并發(fā)執(zhí)行。
進程是具有一定獨立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運行活動,進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位. 線程是進程的一個實體,是CPU調(diào)度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統(tǒng)資源,只擁有一
3.獨立性:進程是一個能獨立運行的基本單位,同時也是系統(tǒng)分配資源和調(diào)度的獨立單位。
線程是指進程內(nèi)的一個執(zhí)行單元,也是進程內(nèi)的可調(diào)度實體. 與進程的區(qū)別: (1)地址空間:進程內(nèi)的一個執(zhí)行單元;進程至少有一個線程;它們共享進程的地址空間;而進程有自己獨立的地址空間; (2)資源擁有:進程是資源分配和擁有的單位,同一個進程內(nèi)的線程
4.異步性:由于進程間的相互制約,使進程具有執(zhí)行的間斷性,即進程按各自獨立的、不可預(yù)知的速度向前推進。
一個程序就是一個進程,而一個程序中的多個任務(wù)則被稱為線程。進程是表示資源分配的基本單位,又是調(diào)度運行的基本單位。線程是進程中執(zhí)行運算的最小單位,亦即執(zhí)行處理機調(diào)度的基本單位。 進程和線程的關(guān)系 (1)一個線程只能屬于一個進程,而一
線程:線程是進程中的一個實體,作為系統(tǒng)調(diào)度和分派的基本單位。Linux下的線程看作輕量級進程。
一個程序就是一個進程,而一個程序中的多個任務(wù)則被稱為線程。進程是表示資源分配的基本單位,又是調(diào)度運行的基本單位。線程是進程中執(zhí)行運算的最小單位,亦即執(zhí)行處理機調(diào)度的基本單位。 進程和線程的關(guān)系 (1)一個線程只能屬于一個進程,而一
線程的性質(zhì):
進程間是獨立的,這表現(xiàn)在內(nèi)存空間,上下文環(huán)境;線程運行在進程空間內(nèi)。一般來講(不使用特殊技術(shù))進程是無法突破進程邊界存取其他進程內(nèi)的存儲空間;而線程由于處于進程空間內(nèi),所以同一進程所產(chǎn)生的線程共享同一內(nèi)存空間。同一進程中的兩段
1.線程是進程內(nèi)的一個相對獨立的可執(zhí)行的單元。若把進程稱為任務(wù)的話,那么線程則是應(yīng)用中的一個子任務(wù)的執(zhí)行。
進程和線程都是由操作系統(tǒng)所體會的程序運行的基本單元,系統(tǒng)利用該基本單元實現(xiàn)系統(tǒng)對應(yīng)用的并發(fā)性。進程和線程的區(qū)別在于: 線程的劃分尺度小于進程,使得多線程程序的并發(fā)性搞。 另外,進程在執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享內(nèi)
2.由于線程是被調(diào)度的基本單元,而進程不是調(diào)度單元。所以,每個進程在創(chuàng)建時,至少需要同時為該進程創(chuàng)建一個線程。即進程中至少要有一個或一個以上的線程,否則該進程無法被調(diào)度執(zhí)行。
進程和線程的區(qū)別和聯(lián)系 1.進程有自己獨立的地址空間;而線程共享進程的地址空間; 2.一個程序至少有一個進程,一個進程至少有一個線程; 3.線程是處理器調(diào)度的基本單位,但進程不是; 4.二者均可并發(fā)執(zhí)行 多線程比多進程成本低,但性能更低。 在UN
3.進程是被分給并擁有資源的基本單元。同一進程內(nèi)的多個線程共享該進程的資源,但線程并不擁有資源,只是使用他們。
要了解二者的區(qū)別與聯(lián)系,首先得對進程與線程有一個宏觀上的了解。 進程,是并發(fā)執(zhí)行的程序在執(zhí)行過程中分配和管理資源的基本單位,是一個動態(tài)概念,竟爭計算機系統(tǒng)資源的基本單位。每一個進程都有一個自己的地址空間,即進程空間或(虛空間)。
4.線程是操作系統(tǒng)中基本調(diào)度單元,因此線程中應(yīng)包含有調(diào)度所需要的必要信息,且在生命周期中有狀態(tài)的變化。
線程與進程的區(qū)別: 1.地址空間和其它資源:進程間相互獨立,同一進程的各線程間共享。某進程內(nèi)的線程在其它進程不可見。 2.通信:進程間通信IPC,線程間可以直接讀寫進程數(shù)據(jù)段(如全局變量)來進行通信——需要進程同步和互斥手段的輔助,以保證
5.由于共享資源【包括數(shù)據(jù)和文件】,所以線程間需要通信和同步機制,且需要時線程可以創(chuàng)建其他線程,但線程間不存在父子關(guān)系。
程序 是計算機指令的集合它,以文件的形式存儲在磁盤上。 進程是一個程序在其 自身的地址空間中的一次執(zhí)行活動。 進程是資源申請、調(diào)度和獨立運行的單位,因此,它使用系統(tǒng)中的運行資源,而程序不能申請系統(tǒng)資源,不能被系統(tǒng)調(diào)度,也不能作為獨
擴展閱讀,以下內(nèi)容您可能還感興趣。
進程與線程的區(qū)別,線程安全”怎么理解
一個程序就是一個進程,而一個程序中的多個任務(wù)則被稱為線程。進程是表示資源分配的基本單位,又是調(diào)度運行的基本單位。線程是進程中執(zhí)行運算的最小單位,亦即執(zhí)行處理機調(diào)度的基本單位。 進程和線程的關(guān)系
(1)一個線程只能屬于一個進程,而一個進程可以有多個線程,但至少有一個線程。線程是操作系統(tǒng)可識別的最小執(zhí)行和調(diào)度單位。
(2)資源分配給進程,同一進程的所有線程共享該進程的所有資源。同一進程中的多個線程共享代碼段(代碼和常量),數(shù)據(jù)段(全局變量和靜態(tài)變量),擴展段(堆存儲)。但是每個線程擁有自己的棧段,棧段又叫運行時段,用來存放所有局部變量和臨時變量。
(3)處理機分給線程,即真正在處理機上運行的是線程。
(4)線程在執(zhí)行過程中,需要協(xié)作同步。不同進程的線程間要利用消息通信的辦法實現(xiàn)同步。
如果把上課的過程比作進程,那么每個學(xué)生就是一個線程,他們共享教室,即線程共享進程的內(nèi)存空間。每一個時刻,只能一個學(xué)生問老師問題,老師回答完畢,輪到下一個。即線程在一個時間片內(nèi)占有cpu。
進程與線程的區(qū)別
進程間是獨立的,這表現(xiàn)在內(nèi)存空間,上下文環(huán)境;線程運行在進程空間內(nèi)。一般來講(不使用特殊技術(shù))進程是無法突破進程邊界存取其他進程內(nèi)的存儲空間;而線程由于處于進程空間內(nèi),所以同一進程所產(chǎn)生的線程共享同一內(nèi)存空間。同一進程中的兩段代碼不能夠同時執(zhí)行,除非引入線程。線程是屬于進程的,當進程退出時該進程所產(chǎn)生的線程都會被強制退出并清除。線程占用的資源要少于進程所占用的資源。進程和線程都可以有優(yōu)先級。在線程系統(tǒng)中進程也是一個線程??梢詫⑦M程理解為一個程序的第一個線程。
進程與線程的區(qū)別和聯(lián)系
進程和線程都是由操作系統(tǒng)所體會的程序運行的基本單元,系統(tǒng)利用該基本單元實現(xiàn)系統(tǒng)對應(yīng)用的并發(fā)性。進程和線程的區(qū)別在于:
線程的劃分尺度小于進程,使得多線程程序的并發(fā)性搞。
另外,進程在執(zhí)行過程中擁有獨立的內(nèi)存單元,而多個線程共享內(nèi)存,從而極大地提高了程序的運行效率。
線程在執(zhí)行過程中與進程還是有區(qū)別的。每個獨立的線程有一個程序運行的入口、順序執(zhí)行序列和程序的出口。但是線程不能夠獨立執(zhí)行,必須依存在應(yīng)用程序中,由應(yīng)用程序提供多個線程執(zhí)行控制。
從邏輯角度來看,多線程的意義在于一個應(yīng)用程序中,有多個執(zhí)行部分可以同時執(zhí)行。但操作系統(tǒng)并沒有將多個線程看做多個獨立的應(yīng)用,來實現(xiàn)進程的調(diào)度和管理以及資源分配。這就是進程和線程的重要區(qū)別。
進程(Process)是最初定義在Unix等多用戶、多任務(wù)操作系統(tǒng)環(huán)境下用于表示應(yīng)用程序在內(nèi)存環(huán)境中基本執(zhí)行單元的概念。以Unix操作系統(tǒng)為例,進程是Unix操作系統(tǒng)環(huán)境中的基本成分、是系統(tǒng)資源分配的基本單位。Unix操作系統(tǒng)中完成的幾乎所有用戶管理和資源分配等工作都是通過操作系統(tǒng)對應(yīng)用程序進程的控制來實現(xiàn)的。
線程與進程的區(qū)別及優(yōu)缺點分別是什么?
進程和線程的區(qū)別和聯(lián)系
1.進程有自己獨立的地址空間;而線程共享進程的地址空間;
2.一個程序至少有一個進程,一個進程至少有一個線程;
3.線程是處理器調(diào)度的基本單位,但進程不是;
4.二者均可并發(fā)執(zhí)行
多線程比多進程成本低,但性能更低。
在UNIX環(huán)境,多進程調(diào)度開銷比多線程調(diào)度開銷,沒有顯著區(qū)別,就是說,UNIX進程調(diào)度效率是很高的。內(nèi)存消耗方面,二者只差全局數(shù)據(jù)區(qū),現(xiàn)在內(nèi)存都很便宜,服務(wù)器內(nèi)存動輒若干G,根本不是問題。
多進程是立體交通系統(tǒng),雖然造價高,上坡下坡多耗點油,但是不堵車。
多線程是平面交通系統(tǒng),造價低,但紅綠燈太多,老堵車。
進程和線程的區(qū)別
要了解二者的區(qū)別與聯(lián)系,首先得對進程與線程有一個宏觀上的了解。
進程,是并發(fā)執(zhí)行的程序在執(zhí)行過程中分配和管理資源的基本單位,是一個動態(tài)概念,竟爭計算機系統(tǒng)資源的基本單位。每一個進程都有一個自己的地址空間,即進程空間或(虛空間)。進程空間的大小 只與處理機的位數(shù)有關(guān),一個 16 位長處理機的進程空間大小為 216 ,而 32 位處理機的進程空間大小為 232 。進程至少有 5 種基本狀態(tài),它們是:初始態(tài),執(zhí)行態(tài),等待狀態(tài),就緒狀態(tài),終止狀態(tài)。
線程,在網(wǎng)絡(luò)或多用戶環(huán)境下,一個服務(wù)器通常需要接收大量且不確定數(shù)量用戶的并發(fā)請求,為每一個請求都創(chuàng)建一個進程顯然是行不通的,——無論是從系統(tǒng)資源開銷方面或是響應(yīng)用戶請求的效率方面來看。因此,操作系統(tǒng)中線程的概念便被引進了。線程,是進程的一部分,一個沒有線程的進程可以被看作是單線程的。線程有時又被稱為輕權(quán)進程或輕量級進程,也是 CPU 調(diào)度的一個基本單位。
說到這里,我們對進程與線程都有了一個大體上的印象,現(xiàn)在開始說說二者大致的區(qū)別。
進程的執(zhí)行過程是線狀的,盡管中間會發(fā)生中斷或暫停,但該進程所擁有的資源只為該線狀執(zhí)行過程服務(wù)。一旦發(fā)生進程上下文切換,這些資源都是要被保護起來的。這是進程宏觀上的執(zhí)行過程。而進程又可有單線程進程與多線程進程兩種。我們知道,進程有 一個進程控制塊 PCB ,相關(guān)程序段 和 該程序段對其進行操作的數(shù)據(jù)結(jié)構(gòu)集 這三部分,單線程進程的執(zhí)行過程在宏觀上是線性的,微觀上也只有單一的執(zhí)行過程;而多線程進程在宏觀上的執(zhí)行過程同樣為線性的,但微觀上卻可以有多個執(zhí)行操作(線程),如不同代碼片段以及相關(guān)的數(shù)據(jù)結(jié)構(gòu)集。線程的改變只代表了 CPU 執(zhí)行過程的改變,而沒有發(fā)生進程所擁有的資源變化。出了 CPU 之外,計算機內(nèi)的軟硬件資源的分配與線程無關(guān),線程只能共享它所屬進程的資源。與進程控制表和 PCB 相似,每個線程也有自己的線程控制表 TCB ,而這個 TCB 中所保存的線程狀態(tài)信息則要比 PCB 表少得多,這些信息主要是相關(guān)指針用堆棧(系統(tǒng)棧和用戶棧),寄存器中的狀態(tài)數(shù)據(jù)。進程擁有一個完整的虛擬地址空間,不依賴于線程而獨立存在;反之,線程是進程的一部分,沒有自己的地址空間,與進程內(nèi)的其他線程一起共享分配給該進程的所有資源。
線程可以有效地提高系統(tǒng)的執(zhí)行效率,但并不是在所有計算機系統(tǒng)中都是適用的,如某些很少做進程調(diào)度和切換的實時系統(tǒng)。使用線程的好處是有多個任務(wù)需要處理機處理時,減少處理機的切換時間;而且,線程的創(chuàng)建和結(jié)束所需要的系統(tǒng)開銷也比進程的創(chuàng)建和結(jié)束要小得多。最適用使用線程的系統(tǒng)是多處理機系統(tǒng)和網(wǎng)絡(luò)系統(tǒng)或分布式系統(tǒng)。
----------------------------------
1. 線程的執(zhí)行特性。
線程只有 3 個基本狀態(tài):就緒,執(zhí)行,阻塞。
線程存在 5 種基本操作來切換線程的狀態(tài):派生,阻塞,激活,調(diào)度,結(jié)束。
2. 進程通信。
單機系統(tǒng)中進程通信有 4 種形式:主從式,會話式,消息或郵箱機制,共享存儲區(qū)方式。
主從式典型例子:終端控制進程和終端進程。
會話式典型例子:用戶進程與磁盤管理進程之間的通信。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:0731-84117792 E-MAIL:11247931@qq.com