日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

進(jìn)程與線程的關(guān)系

 新用戶2679HElR 2022-05-02 發(fā)布于上海

一、進(jìn)程的定義

進(jìn)程:指在系統(tǒng)中能獨(dú)立運(yùn)行并作為資源分配的基本單位,它是由一組機(jī)器指令、數(shù)據(jù)和堆棧等組成的,是一個(gè)能獨(dú)立運(yùn)行的活動(dòng)實(shí)體。

進(jìn)程一般有三個(gè)狀態(tài):就緒狀態(tài)、執(zhí)行狀態(tài)和等待狀態(tài)【或稱阻塞狀態(tài)】;進(jìn)程只能由父進(jìn)程建立,系統(tǒng)中所有的進(jìn)程形成一種進(jìn)程樹的層次體系;掛起命令可由進(jìn)程自己和其他進(jìn)程發(fā)出,但是解除掛起命令只能由其他進(jìn)程發(fā)出。

進(jìn)程控制塊(PCB):PCB不但可以記錄進(jìn)程的屬性信息,以便操作系統(tǒng)對(duì)進(jìn)程進(jìn)行控制和管理,而且PCB標(biāo)志著進(jìn)程的存在,操作系統(tǒng)根據(jù)系統(tǒng)中是否有該進(jìn)程的進(jìn)程控制塊PCB而知道該進(jìn)程存在與否。系統(tǒng)建立進(jìn)程的同時(shí)就建立該進(jìn)程的PCB,在撤銷一個(gè)進(jìn)程時(shí),也就撤銷其PCB,故進(jìn)程的PCB對(duì)進(jìn)程來說是它存在的具體的物理標(biāo)志和體現(xiàn)。一般PCB包括以下三類信息:進(jìn)程標(biāo)識(shí)信息;處理器狀態(tài)信息;進(jìn)程控制信息。

由程序段、相關(guān)的數(shù)據(jù)段和PCB三部分構(gòu)成了進(jìn)程實(shí)體(又稱進(jìn)程印像),一般,我們把進(jìn)程實(shí)體就簡(jiǎn)稱為進(jìn)程。

進(jìn)程的特征:

1.動(dòng)態(tài)性:進(jìn)程的實(shí)質(zhì)是程序的一次執(zhí)行過程,進(jìn)程是動(dòng)態(tài)產(chǎn)生,動(dòng)態(tài)消亡的。
2.并發(fā)性:任何進(jìn)程都可以同其他進(jìn)程一起并發(fā)執(zhí)行。
3.獨(dú)立性:進(jìn)程是一個(gè)能獨(dú)立運(yùn)行的基本單位,同時(shí)也是系統(tǒng)分配資源和調(diào)度的獨(dú)立單位。
4.異步性:由于進(jìn)程間的相互制約,使進(jìn)程具有執(zhí)行的間斷性,即進(jìn)程按各自獨(dú)立的、不可預(yù)知的速度向前推進(jìn)。

二、線程的定義

線程:線程是進(jìn)程中的一個(gè)實(shí)體,作為系統(tǒng)調(diào)度和分派的基本單位。

線程的性質(zhì):

1.線程是進(jìn)程內(nèi)的一個(gè)相對(duì)獨(dú)立的可執(zhí)行的單元。若把進(jìn)程稱為任務(wù)的話,那么線程則是應(yīng)用中的一個(gè)子任務(wù)的執(zhí)行。
2.由于線程是被調(diào)度的基本單元,而進(jìn)程不是調(diào)度單元。所以,每個(gè)進(jìn)程在創(chuàng)建時(shí),至少需要同時(shí)為該進(jìn)程創(chuàng)建一個(gè)線程。即進(jìn)程中至少要有一個(gè)或一個(gè)以上的線程,否則該進(jìn)程無法被調(diào)度執(zhí)行。
3.進(jìn)程是被分給并擁有資源的基本單元。同一進(jìn)程內(nèi)的多個(gè)線程共享該進(jìn)程的資源,但線程并不擁有資源,只是使用他們。
4.線程是操作系統(tǒng)中基本調(diào)度單元,因此線程中應(yīng)包含有調(diào)度所需要的必要信息,且在生命周期中有狀態(tài)的變化。
5.由于共享資源【包括數(shù)據(jù)和文件】,所以線程間需要通信和同步機(jī)制,且需要時(shí)線程可以創(chuàng)建其他線程,但線程間不存在父子關(guān)系。

多線程使用的情形:

前臺(tái)和后臺(tái)工作情況;

異步處理工作情況;

需要加快執(zhí)行速度情況;

組織復(fù)雜工作的情況;

同時(shí)有多個(gè)用戶服務(wù)請(qǐng)求的情況等。
 
線程機(jī)制的優(yōu)點(diǎn):

多線程運(yùn)行在同一個(gè)進(jìn)程的相同的地址空間內(nèi),和采用多進(jìn)程相比有以下優(yōu)點(diǎn):

1.創(chuàng)建和撤銷線程的開銷較之進(jìn)程要少。創(chuàng)建線程時(shí)只需要建立線程控制表相應(yīng)的表目,或有關(guān)隊(duì)列,而創(chuàng)建進(jìn)程時(shí),要?jiǎng)?chuàng)建PCB表和初始化,進(jìn)入有關(guān)進(jìn)程隊(duì)列,建立它的地址空間和所需資源等。
2.CPU在線程之間開關(guān)時(shí)的開銷遠(yuǎn)比進(jìn)程要少得多。因開關(guān)線程都在同一地址空間內(nèi),只需要修改線程控制表或隊(duì)列,不涉及地址空間和其他工作。
3.線程機(jī)制也增加了通訊的有效性。進(jìn)程間的通訊往往要求內(nèi)核的參與,以提供通訊機(jī)制和保護(hù)機(jī)制,而線程間的通訊是在同一進(jìn)程的地址空間內(nèi),共享主存和文件,無需內(nèi)核參與。

三、進(jìn)程與線程之間的關(guān)系

從一定意義上講,進(jìn)程就是一個(gè)應(yīng)用程序在處理機(jī)上的一次執(zhí)行過程,它是一個(gè)動(dòng)態(tài)的概念,而線程是進(jìn)程中的一部分,進(jìn)程包含多個(gè)線程在運(yùn)行。

在引入線程的操作系統(tǒng)中,通常都是把進(jìn)程作為分配資源的基本單位,而把線程作為獨(dú)立運(yùn)行和獨(dú)立調(diào)度的基本單位。由于線程比進(jìn)程更小,基本上不擁有系統(tǒng)資源,故對(duì)它的調(diào)度所付出的開銷就會(huì)小得多,能更高效的提高系統(tǒng)內(nèi)多個(gè)程序間并發(fā)執(zhí)行的程度。

舉例說明:

進(jìn)程:北京地鐵單位

線程:北京地鐵1號(hào)線、2號(hào)線、5號(hào)線........15號(hào)線

北京地鐵單位的所有地鐵線路共享著北京坐地鐵的所有客源(相當(dāng)于進(jìn)程中的資源,所以進(jìn)程屬于資源單位),而各線路負(fù)責(zé)將客源輸送到指定地點(diǎn)(執(zhí)行操作,所以線程屬于執(zhí)行單位)。

 
四、進(jìn)程與線程之間的區(qū)別
 
1、調(diào)度:

        在傳統(tǒng)的操作系統(tǒng)中,CPU調(diào)度和分派的基本單位是進(jìn)程。而在引入線程的操作系統(tǒng)中,則把線程作為CPU調(diào)度和分派的基本單位,進(jìn)程則作為資源擁有的基本單位,從而使傳統(tǒng)進(jìn)程的兩個(gè)屬性分開,線程編程輕裝運(yùn)行,這樣可以顯著地提高系統(tǒng)的并發(fā)性。同一進(jìn)程中線程的切換不會(huì)引起進(jìn)程切換,從而避免了昂貴的系統(tǒng)調(diào)用,但是在由一個(gè)進(jìn)程中的線程切換到另一進(jìn)程中的線程,依然會(huì)引起進(jìn)程切換。
 
2、并發(fā)性:
      在引入線程的操作系統(tǒng)中,不僅進(jìn)程之間可以并發(fā)執(zhí)行,而且在一個(gè)進(jìn)程中的多個(gè)線程之間也可以并發(fā)執(zhí)行,因而使操作系統(tǒng)具有更好的并發(fā)性,從而更有效地提高系統(tǒng)資源和系統(tǒng)的吞吐量。例如,在一個(gè)為引入線程的單CPU操作系統(tǒng)中,若僅設(shè)置一個(gè)文件服務(wù)進(jìn)程,當(dāng)它由于某種原因被封鎖時(shí),便沒有其他的文件服務(wù)進(jìn)程來提供服務(wù)。在引入線程的操作系統(tǒng)中,可以在一個(gè)文件服務(wù)進(jìn)程設(shè)置多個(gè)服務(wù)線程。當(dāng)?shù)谝粋€(gè)線程等待時(shí),文件服務(wù)進(jìn)程中的第二個(gè)線程可以繼續(xù)運(yùn)行;當(dāng)?shù)诙€(gè)線程封鎖時(shí),第三個(gè)線程可以繼續(xù)執(zhí)行,從而顯著地提高了文件服務(wù)的質(zhì)量以及系統(tǒng)的吞吐量。

3、擁有資源:
      不論是引入了線程的操作系統(tǒng),還是傳統(tǒng)的操作系統(tǒng),進(jìn)程都是擁有系統(tǒng)資源的一個(gè)獨(dú)立單位,他可以擁有自己的資源。一般地說,線程自己不能擁有資源(也有一點(diǎn)必不可少的資源),但它可以訪問其隸屬進(jìn)程的資源,亦即一個(gè)進(jìn)程的代碼段、數(shù)據(jù)段以及系統(tǒng)資源(如已打開的文件、I/O設(shè)備等),可供同一個(gè)進(jìn)程的其他所有線程共享。

4、獨(dú)立性:
        在同一進(jìn)程中的不同線程之間的獨(dú)立性要比不同進(jìn)程之間的獨(dú)立性低得多。這是因?yàn)?/span>為了防止進(jìn)程之間彼此干擾和破壞,每個(gè)進(jìn)程都擁有一個(gè)獨(dú)立的地址空間和其它資源,除了共享全局變量外,不允許其它進(jìn)程的訪問。但是同一進(jìn)程中的不同線程往往是為了提高并發(fā)性以及進(jìn)行相互之間的合作而創(chuàng)建的,它們共享進(jìn)程的內(nèi)存地址空間和資源,如每個(gè)線程都可以訪問它們所屬進(jìn)程地址空間中的所有地址,如一個(gè)線程的堆??梢员黄渌€程讀、寫,甚至完全清除。 

5、系統(tǒng)開銷:

       由于在創(chuàng)建或撤銷進(jìn)程時(shí),系統(tǒng)都要為之分配或回收資源,如內(nèi)存空間、I/O設(shè)備等。因此,操作系統(tǒng)為此所付出的開銷將顯著地大于在創(chuàng)建或撤消線程時(shí)的開銷。在進(jìn)程切換時(shí),涉及到整個(gè)當(dāng)前進(jìn)程CPU環(huán)境的保存環(huán)境的設(shè)置以及新被調(diào)度運(yùn)行的CPU環(huán)境的設(shè)置,而線程切換只需保存和設(shè)置少量的寄存器的內(nèi)容,并不涉及存儲(chǔ)器管理方面的操作,可見,進(jìn)程切換的開銷也遠(yuǎn)大于線程切換的開銷。此外,由于同一進(jìn)程中的多個(gè)線程具有相同的地址空間,致使他們之間的同步和通信的實(shí)現(xiàn)也變得比較容易。在有的系統(tǒng)中,現(xiàn)成的切換、同步、和通信都無需操作系統(tǒng)內(nèi)核的干預(yù)。

6、支持多處理機(jī)系統(tǒng):

       在多處理機(jī)系統(tǒng)中,對(duì)于傳統(tǒng)的進(jìn)程,即單線程進(jìn)程,不管有多少處理機(jī),該進(jìn)程只能運(yùn)行在一個(gè)處理機(jī)上。但對(duì)于多線程進(jìn)程,就可以將一個(gè)進(jìn)程中的多個(gè)線程分配到多個(gè)處理機(jī)上,使它們并行執(zhí)行,這無疑將加速進(jìn)程的完成。因此,現(xiàn)代處理機(jī)OS都無一例外地引入了多線程。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多