版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
進(jìn)程與線程進(jìn)程(process)是資源分配的基本單位,也是獨(dú)立運(yùn)行的基本單位。2.1進(jìn)程的引入
為了描述并發(fā)程序執(zhí)行時(shí)的特征,引入了進(jìn)程。
2.1.1前趨圖前趨圖是一個(gè)有向無循環(huán)圖,用于描述程序、程序段或語句執(zhí)行的先后次序。圖中的每個(gè)結(jié)點(diǎn)可以表示一條語句、一個(gè)程序段或一個(gè)進(jìn)程,結(jié)點(diǎn)間的有向邊表示兩個(gè)結(jié)點(diǎn)之間存在的前趨關(guān)系“→”:→={(Pi,Pj)│Pi必須在Pj開始執(zhí)行之前完成}前趨圖中的各類結(jié)點(diǎn)如果(Pi,Pj)∈→,可以寫成Pi→Pj,則稱Pi是Pj的直接前趨,Pj是Pi的直接后繼。若存在一個(gè)序列Pi→Pj→…→Pk,則稱Pi是Pk的前趨。在前趨圖中,沒有前趨的結(jié)點(diǎn)稱為初始結(jié)點(diǎn),沒有后繼的結(jié)點(diǎn)稱為終止結(jié)點(diǎn)。
前趨圖例S1S2S3S6S4S52.1.2程序的順序執(zhí)行
一個(gè)程序通常由若干個(gè)程序段所組成,它們必須按照某種先后次序來執(zhí)行,僅當(dāng)前一個(gè)操作執(zhí)行完后才能執(zhí)行后繼操作,這類計(jì)算過程就是程序的順序執(zhí)行過程。例如:先輸入→再計(jì)算→最后輸出,即:I→C→P。程序順序執(zhí)行時(shí)的特征
順序性:處理機(jī)的操作嚴(yán)格按照程序所規(guī)定的順序執(zhí)行,即每一個(gè)操作必須在下一個(gè)操作開始之前結(jié)束。封閉性:程序一旦開始運(yùn)行,其執(zhí)行結(jié)果不受外界因素影響。可再現(xiàn)性:只要程序執(zhí)行時(shí)的初始條件和執(zhí)行環(huán)境相同,當(dāng)程序重復(fù)執(zhí)行時(shí),都將獲得相同的結(jié)果。2.1.3程序的并發(fā)執(zhí)行及特點(diǎn)程序的并發(fā)執(zhí)行是指若干個(gè)程序(或程序段)同時(shí)在系統(tǒng)中運(yùn)行,這些程序(或程序段)的執(zhí)行在時(shí)間上是重疊的,一個(gè)程序(或程序段)的執(zhí)行尚未結(jié)束,另一個(gè)程序(或程序段)的執(zhí)行已經(jīng)開始。程序并發(fā)執(zhí)行例進(jìn)程1、2、3并發(fā)執(zhí)行。對(duì)每個(gè)進(jìn)程而言,其輸入、計(jì)算和輸出這三個(gè)操作必須順序執(zhí)行。它們之間存在如下先后關(guān)系:I1先于C1和I2,C1先于P1和C2,P1先于P2I2和C1,I3、C2和P1可以并發(fā)。I1I2I3C1C3C2P1P2程序并發(fā)執(zhí)行時(shí)的特征
間斷性:并發(fā)程序具有“執(zhí)行---暫停----執(zhí)行”這種間斷性的活動(dòng)規(guī)律。失去封閉性:多個(gè)程序共享系統(tǒng)中的資源,這些資源的狀態(tài)將由多個(gè)程序來改變,致使程序之間相互影響。不可再現(xiàn)性:在初始條件相同的情況下,程序的執(zhí)行結(jié)果依賴于執(zhí)行的次序。與時(shí)間有關(guān)的錯(cuò)誤例程序并發(fā)執(zhí)行時(shí)可能出現(xiàn)與時(shí)間有關(guān)的錯(cuò)誤。例進(jìn)程1:r1=x;進(jìn)程2:r2=x;r1++;r2++;x=r1;x=r2;設(shè)在兩進(jìn)程運(yùn)行之前,x的值為0。則兩進(jìn)程運(yùn)行結(jié)束后,x值可為:122.1.4.程序并發(fā)執(zhí)行的條件讀集:語句執(zhí)行期間要引用的變量集合,記為R(Si)={a1,…,am}寫集:語句執(zhí)行期間要改變的變量集合,記為W(Si)={b1,…,bn}Bernstein條件Bernstein條件能保證兩個(gè)程序段并發(fā)執(zhí)行而不會(huì)產(chǎn)生與時(shí)間有關(guān)的錯(cuò)誤:R(Si)∩W(Sj)={}這兩條保證R(Sj)∩W(Si)={}兩次讀之間數(shù)據(jù)不變W(Si)∩W(Sj)={}本條保證寫操作結(jié)果不丟失例考慮下面4條語句:S1:a=x+yS2:b=z+1S3:c=a-bS4:d=c+1R(S1)={x,y}R(S2)={z}R(S3)={a,b}W(S1)={a}W(S2)=W(S3)={c}因R(S1)∩W(S2)∪R(S2)∩W(S1)∪W(S1)∩W(S2)={},故S1和S2可以并發(fā)執(zhí)行。因R(S2)∩W(S3)∪R(S3)∩W(S2)∪W(S3)∩W(S2)=,故S2和S3不能并發(fā)執(zhí)行。并發(fā)語句的描述方式cobeginS1;S2;…Sn;coend對(duì)應(yīng)的前趨圖如右,其中S0和Sn+1分別是cobegin和coend語句前后的兩條語句。S0S1S2…SnSn+12.2進(jìn)程的定義及描述為了描述并發(fā)執(zhí)行程序的動(dòng)態(tài)特性,人們引入了一個(gè)新的概念——進(jìn)程(process)。2.2.1進(jìn)程的定義進(jìn)程有多種定義,下面列舉一些有代表性的定義:進(jìn)程是程序在處理器上的一次執(zhí)行過程。進(jìn)程是可以和別的計(jì)算并行執(zhí)行的計(jì)算。進(jìn)程是程序在一個(gè)數(shù)據(jù)集合上運(yùn)行的過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。進(jìn)程是一個(gè)具有一定功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。2.2.2進(jìn)程的特征動(dòng)態(tài)性:進(jìn)程是程序的一次執(zhí)行過程。動(dòng)態(tài)性還表現(xiàn)為它因創(chuàng)建而產(chǎn)生,因調(diào)度而執(zhí)行,因無資源而暫停,因撤消而消亡。而程序是靜態(tài)實(shí)體。并發(fā)性:多個(gè)進(jìn)程實(shí)體同時(shí)存在于內(nèi)存中,能在一段時(shí)間內(nèi)同時(shí)運(yùn)行。獨(dú)立性:在傳統(tǒng)OS中,進(jìn)程是獨(dú)立運(yùn)行的基本單位,也是系統(tǒng)分配資源和調(diào)度的基本單位。異步性:也叫制約性,進(jìn)程以各自獨(dú)立的不可預(yù)知的速度向前推進(jìn)。結(jié)構(gòu)性:進(jìn)程實(shí)體由程序段、數(shù)據(jù)段及進(jìn)程控制塊組成,又稱為進(jìn)程映像。2.2.3進(jìn)程與程序的關(guān)系進(jìn)程是動(dòng)態(tài)概念,程序是靜態(tài)概念;進(jìn)程是程序在處理機(jī)上的一次執(zhí)行過程,而程序是指令的集合。進(jìn)程是暫時(shí)的,程序是永久的。進(jìn)程是一個(gè)狀態(tài)變化的過程;程序可以長久保存。進(jìn)程與程序的組成不同。進(jìn)程的組成包括程序、數(shù)據(jù)和進(jìn)程控制塊。進(jìn)程與程序是密切相關(guān)的。一個(gè)程序可以對(duì)應(yīng)多個(gè)進(jìn)程;一個(gè)進(jìn)程可以包括多個(gè)程序。進(jìn)程可以創(chuàng)建新進(jìn)程,而程序不能形成新程序。2.2.4進(jìn)程控制塊PCB(Processcontrolblock)是描述和管理進(jìn)程的數(shù)據(jù)結(jié)構(gòu)。它是進(jìn)程實(shí)體的一部分,操作系統(tǒng)通過PCB感知進(jìn)程的存在,PCB是進(jìn)程存在的唯一標(biāo)志。不同操作系統(tǒng)中進(jìn)程控制塊的結(jié)構(gòu)不同,但通常包括下面所列出的內(nèi)容:PCB包含的內(nèi)容1進(jìn)程標(biāo)識(shí)符:惟一標(biāo)識(shí)進(jìn)程的一個(gè)標(biāo)識(shí)符或整數(shù)。進(jìn)程當(dāng)前狀態(tài):說明進(jìn)程當(dāng)前所處狀態(tài)。進(jìn)程隊(duì)列指針:用于記錄PCB隊(duì)列中下一個(gè)PCB的地址。程序和數(shù)據(jù)地址:進(jìn)程的程序和數(shù)據(jù)在內(nèi)存或外存中的存放地址。進(jìn)程優(yōu)先級(jí):反映進(jìn)程獲得CPU的優(yōu)先級(jí)別。PCB包含的內(nèi)容2CPU現(xiàn)場(chǎng)保護(hù)區(qū):CPU現(xiàn)場(chǎng)信息的存放區(qū)域,包括:通用寄存器、程序計(jì)數(shù)器、程序狀態(tài)字等。通信信息:進(jìn)程與其他進(jìn)程所發(fā)生的信息交換。家族關(guān)系:指明本進(jìn)程與家族的關(guān)系,如父子進(jìn)程標(biāo)識(shí)。資源清單:列出進(jìn)程所需資源及當(dāng)前已分配資源。2.3進(jìn)程的狀態(tài)及轉(zhuǎn)換為了刻畫進(jìn)程的動(dòng)態(tài)特征,可以將進(jìn)程的生命期劃分為一組狀態(tài),用這些狀態(tài)來描述進(jìn)程的活動(dòng)過程。Processstate通常,一個(gè)進(jìn)程至少應(yīng)有以下三種基本狀態(tài):就緒狀態(tài)ready執(zhí)行狀態(tài)running阻塞狀態(tài)blocking2.3.1進(jìn)程的三種基本狀態(tài)就緒狀態(tài):進(jìn)程已獲得除處理機(jī)以外的所有資源,一旦分配了處理機(jī)就可以立即執(zhí)行。執(zhí)行狀態(tài):又稱運(yùn)行狀態(tài)。一個(gè)進(jìn)程獲得必要的資源并正在處理機(jī)上執(zhí)行。阻塞狀態(tài):又稱等待狀態(tài)、睡眠狀態(tài)。正在執(zhí)行的進(jìn)程,由于發(fā)生某事件而暫時(shí)無法執(zhí)行下去(如等待輸入/輸出完成)。這時(shí)即使把處理機(jī)分配給該進(jìn)程,它也無法運(yùn)行。進(jìn)程狀態(tài)轉(zhuǎn)換圖執(zhí)行就緒阻塞進(jìn)程調(diào)度時(shí)間片用完等待事件事件發(fā)生2.3.2新建狀態(tài)和終止?fàn)顟B(tài)在許多系統(tǒng)中又增加了兩種狀態(tài):新建狀態(tài)(new):進(jìn)程剛剛建立,但還未進(jìn)入就緒隊(duì)列。又稱創(chuàng)建狀態(tài)。終止?fàn)顟B(tài)(terminated)
:當(dāng)一個(gè)進(jìn)程正?;虍惓=Y(jié)束,操作系統(tǒng)已釋放它所占用的資源,但尚未將它撤消時(shí)的狀態(tài),又稱退出狀態(tài)。五狀態(tài)的進(jìn)程狀態(tài)轉(zhuǎn)換圖運(yùn)行就緒等待進(jìn)程調(diào)度時(shí)間片用完等待事件事件發(fā)生新建終止接納完成狀態(tài)轉(zhuǎn)換的有關(guān)說明大多數(shù)狀態(tài)不可逆轉(zhuǎn),如等待不能轉(zhuǎn)換為運(yùn)行。狀態(tài)轉(zhuǎn)換大多為被動(dòng)進(jìn)行,但運(yùn)行→等待是主動(dòng)的。一個(gè)進(jìn)程在一個(gè)時(shí)刻只能處于上述狀態(tài)之一。2.3.3進(jìn)程的掛起狀態(tài)
在某些系統(tǒng)中,希望人為將進(jìn)程掛起使之處于靜止?fàn)顟B(tài)。進(jìn)程掛起的原因有:系統(tǒng)故障或功能受到破壞:先掛起,故障消除后再恢復(fù)。檢查中間結(jié)果:掛起進(jìn)程以便檢查。資源不足:掛起進(jìn)程以騰出資源。內(nèi)存不足:在外存掛起。有掛起狀態(tài)的進(jìn)程狀態(tài)轉(zhuǎn)換圖基于上述原因,需引入一個(gè)新的狀態(tài):掛起狀態(tài)。執(zhí)行進(jìn)程調(diào)度時(shí)間片完活動(dòng)就緒等待事件掛起事件發(fā)生掛起激活活動(dòng)阻塞掛起就緒掛起阻塞掛起激活事件發(fā)生創(chuàng)建退出接納接納完成因果變遷如果一個(gè)狀態(tài)變化A的發(fā)生,會(huì)引起另一個(gè)狀態(tài)變化B的發(fā)生,則稱A、B之間是因果變遷。執(zhí)行就緒阻塞4312下述哪些變遷是因果變遷a)3->4b)2->4c)1->22.4進(jìn)程控制進(jìn)程控制的職能是對(duì)系統(tǒng)中的所有進(jìn)程實(shí)施有效的管理。常見的進(jìn)程控制功能有進(jìn)程創(chuàng)建、撤消、阻塞與喚醒等。這些功能一般由操作系統(tǒng)內(nèi)核原語來實(shí)現(xiàn)。操作系統(tǒng)內(nèi)核在操作系統(tǒng)設(shè)計(jì)中,往往把一些與硬件緊密相關(guān)的模塊、運(yùn)行頻率較高的模塊及公用的一些基本操作安排在靠近硬件的軟件層次中,使它們常駐內(nèi)存,以提高操作系統(tǒng)的運(yùn)行效率,通常把這部分軟件稱為操作系統(tǒng)內(nèi)核。內(nèi)核(kernel)主要包括:中斷時(shí)鐘管理進(jìn)程管理存儲(chǔ)器管理設(shè)備管理原語primitive原語是由若干條機(jī)器指令構(gòu)成的,用以完成特定功能的一段程序,這段程序在執(zhí)行期間不可分割。計(jì)算機(jī)系統(tǒng)的兩種運(yùn)行狀態(tài)核心態(tài)(kernelmode):又稱管態(tài)、系統(tǒng)態(tài),是操作系統(tǒng)管理程序執(zhí)行時(shí)機(jī)器所處的狀態(tài)。這種狀態(tài)具有較高的特權(quán),能執(zhí)行一切指令,訪問所有的寄存器和存儲(chǔ)區(qū)。用戶態(tài)(Usermode)
:又稱目態(tài),是用戶程序執(zhí)行時(shí)機(jī)器所處的狀態(tài)。這種狀態(tài)具有較低特權(quán),只能執(zhí)行規(guī)定的指令,訪問指定的寄存器和存儲(chǔ)區(qū)。2.4.1進(jìn)程創(chuàng)建為描述進(jìn)程之間的創(chuàng)建關(guān)系,引入了進(jìn)程圖。進(jìn)程圖又稱進(jìn)程樹(treeofprocess)或進(jìn)程家族樹,是描述進(jìn)程家族關(guān)系的一棵有向樹。圖中的結(jié)點(diǎn)表示進(jìn)程,若進(jìn)程A創(chuàng)建了進(jìn)程B,則從結(jié)點(diǎn)A有一條邊指向結(jié)點(diǎn)B,說明進(jìn)程A是進(jìn)程B的父進(jìn)程,進(jìn)程B是進(jìn)程A的子進(jìn)程。
進(jìn)程圖例ABCDEF進(jìn)程創(chuàng)建原語導(dǎo)致進(jìn)程創(chuàng)建的原因有:用戶登錄:用戶登錄后,若合法則為用戶創(chuàng)建一個(gè)進(jìn)程。作業(yè)調(diào)度:為調(diào)度到的作業(yè)分配資源并創(chuàng)建進(jìn)程。OS服務(wù):創(chuàng)建服務(wù)進(jìn)程。應(yīng)用需要:應(yīng)用程序根據(jù)需要?jiǎng)?chuàng)建子進(jìn)程。創(chuàng)建原語的主要功能進(jìn)程創(chuàng)建原語的功能是創(chuàng)建一個(gè)新進(jìn)程,其主要操作過程如下:向系統(tǒng)申請(qǐng)一個(gè)空閑PCB。為新進(jìn)程分配資源。如分配內(nèi)存空間。初始化新進(jìn)程的PCB。在其PCB中填入進(jìn)程名、家族信息、程序和數(shù)據(jù)地址、進(jìn)程優(yōu)先級(jí)、資源清單及進(jìn)程狀態(tài)等。將新進(jìn)程的PCB插入就緒隊(duì)列。2.4.2進(jìn)程撤銷引起進(jìn)程撤銷的原因有:正常結(jié)束異常結(jié)束:超時(shí)、內(nèi)存不足、地址越界、算術(shù)錯(cuò)、I/O故障、非法指令等。外界干預(yù):包括操作員或系統(tǒng)干預(yù),父進(jìn)程請(qǐng)求。撤消原語采用的兩種策略撤消原語采用的兩種策略:撤消指定標(biāo)識(shí)符的進(jìn)程撤消指定進(jìn)程及其所有子孫進(jìn)程下面給出后一種撤消策略的功能描述。
撤消原語的主要功能撤消原語的功能是撤消一個(gè)進(jìn)程,其主要操作過程如下:從系統(tǒng)的PCB表中找到被撤消進(jìn)程的PCB。檢查被撤消進(jìn)程的狀態(tài)是否為執(zhí)行狀態(tài),若是則立即停止該進(jìn)程的執(zhí)行,設(shè)置重新調(diào)度標(biāo)志。檢查被撤消進(jìn)程是否有子孫進(jìn)程,若有子孫進(jìn)程還應(yīng)撤消該進(jìn)程的子孫進(jìn)程?;厥赵撨M(jìn)程占有的全部資源并回收其PCB。2.4.3進(jìn)程阻塞與喚醒引起進(jìn)程阻塞及喚醒的事件:請(qǐng)求系統(tǒng)服務(wù)。如請(qǐng)求分配打印機(jī),但無空閑打印機(jī)則進(jìn)程阻塞;當(dāng)打印機(jī)重又空閑時(shí)應(yīng)喚醒進(jìn)程。啟動(dòng)某種操作并等待操作完成。如啟動(dòng)I/O操作,進(jìn)程阻塞;I/O完成則喚醒進(jìn)程。等待合作進(jìn)程的協(xié)同配合。如計(jì)算進(jìn)程尚未將數(shù)據(jù)送到緩沖區(qū),則打印進(jìn)程阻塞;當(dāng)緩沖區(qū)中有數(shù)據(jù)時(shí)應(yīng)喚醒進(jìn)程。系統(tǒng)進(jìn)程無新工作可做。如沒有信息可供發(fā)送,則發(fā)送請(qǐng)求阻塞;當(dāng)收到新的發(fā)送請(qǐng)求時(shí),應(yīng)將阻塞進(jìn)程喚醒。
阻塞原語的主要功能阻塞原語的主要功能是將進(jìn)程由執(zhí)行狀態(tài)轉(zhuǎn)為阻塞狀態(tài)。其主要操作過程如下:停止當(dāng)前進(jìn)程的執(zhí)行;保存該進(jìn)程的CPU現(xiàn)場(chǎng)信息;將進(jìn)程狀態(tài)改為阻塞,并插入到相應(yīng)事件的等待隊(duì)列中;轉(zhuǎn)進(jìn)程調(diào)度程序,從就緒隊(duì)列中選擇一個(gè)新的進(jìn)程投入運(yùn)行。喚醒原語的主要功能當(dāng)進(jìn)程等待的事件發(fā)生時(shí),由發(fā)現(xiàn)者進(jìn)程將其喚醒。喚醒原語的主要功能是將進(jìn)程喚醒,其主要操作過程如下:將被喚醒進(jìn)程從相應(yīng)的等待隊(duì)列中移出;將進(jìn)程狀態(tài)改為就緒,并將該進(jìn)程插入就緒隊(duì)列;轉(zhuǎn)進(jìn)程調(diào)度或返回。阻塞與喚醒的關(guān)系一個(gè)進(jìn)程由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài),是這個(gè)進(jìn)程自己調(diào)用阻塞原語去完成的。進(jìn)程由阻塞狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài),是另一個(gè)發(fā)現(xiàn)者進(jìn)程調(diào)用喚醒原語實(shí)現(xiàn)的。一般發(fā)現(xiàn)者進(jìn)程與被喚醒進(jìn)程是合作的并發(fā)進(jìn)程。2.4.4進(jìn)程的掛起與激活掛起原語和激活原語都有多種實(shí)現(xiàn)方式,如:把發(fā)出掛起原語的進(jìn)程自身掛起掛起具有指定標(biāo)識(shí)符的進(jìn)程把某進(jìn)程及其子孫進(jìn)程掛起激活一個(gè)具有指定標(biāo)識(shí)名的進(jìn)程激活某進(jìn)程及其子孫進(jìn)程下面以掛起或激活具有指定標(biāo)識(shí)符的進(jìn)程為例,說明這兩種原語的主要功能。
掛起原語的主要功能
掛起原語的主要功能是將指定進(jìn)程掛起,算法思想如下:到PCB表中查找該進(jìn)程的PCB;檢查該進(jìn)程的狀態(tài),若為執(zhí)行則停止執(zhí)行并保護(hù)CPU現(xiàn)場(chǎng)信息,將該進(jìn)程狀態(tài)改為掛起就緒;若為活動(dòng)阻塞,則將該進(jìn)程狀態(tài)改為掛起阻塞;若為活動(dòng)就緒,則將該進(jìn)程狀態(tài)改為掛起就緒;若進(jìn)程掛起前為執(zhí)行狀態(tài),則轉(zhuǎn)進(jìn)程調(diào)度,從就緒隊(duì)列中選擇一個(gè)進(jìn)程投入運(yùn)行。激活原語的主要功能
激活原語的主要功能是將指定進(jìn)程激活。其算法思想如下:到PCB表中查找該進(jìn)程的PCB。檢查該進(jìn)程的狀態(tài)。若狀態(tài)為掛起阻塞,則將該進(jìn)程狀態(tài)改為活動(dòng)阻塞。若狀態(tài)為掛起就緒,則將該進(jìn)程狀態(tài)改為活動(dòng)就緒。若進(jìn)程激活后為活動(dòng)就緒狀態(tài),可能需要轉(zhuǎn)進(jìn)程調(diào)度。2.5進(jìn)程的組織系統(tǒng)中有許多進(jìn)程,為了能對(duì)它們進(jìn)行有效的管理,應(yīng)將PCB組織起來。常用的組織方式有:線性方式鏈表方式索引方式線性方式線性方式:將PCB順序存放在一片連續(xù)內(nèi)存中。PCB1PCB2PCB3PCBnPCBn-1PCBn-2…鏈接方式鏈接方式:將同一狀態(tài)的PCB組成一個(gè)鏈表。
運(yùn)行指針
就緒隊(duì)列指針
阻塞隊(duì)列指針PCBPCBPCBPCB^PCB^PCBPCB^索引方式索引方式:將同一狀態(tài)的進(jìn)程歸入一個(gè)索引表,再由索引指向相應(yīng)的PCB
運(yùn)行指針
就緒表指針
阻塞表指針PCB表就緒索引表阻塞索引表PCB1PCB2PCB3PCB4PCB5PCB6PCB7PCB8PCB9………2.6線程thread在操作系統(tǒng)中引入進(jìn)程的目的是使多道程序能并發(fā)執(zhí)行,以改善資源利用率及提高系統(tǒng)吞吐量;在操作系統(tǒng)中再引入線程,則是為了減少程序并發(fā)執(zhí)行所付出的時(shí)空開銷,使操作系統(tǒng)具有更好的并發(fā)性。2.6.1線程的概念進(jìn)程具有兩個(gè)屬性:擁有資源的獨(dú)立單位調(diào)度和分派的基本單位為使進(jìn)程并發(fā)執(zhí)行,則必須進(jìn)行諸如創(chuàng)建、撤消、切換等一系列操作,這些操作涉及到資源管理,所花費(fèi)的時(shí)空開銷較大,為此引入了線程。線程定義線程的定義情況與進(jìn)程類似,存在多種不同的提法。下面列出一些較權(quán)威的定義:線程是進(jìn)程內(nèi)的一個(gè)執(zhí)行單元。線程是進(jìn)程內(nèi)的一個(gè)可調(diào)度實(shí)體。線程是程序(或進(jìn)程)中相對(duì)獨(dú)立的一個(gè)控制流序列。線程是執(zhí)行的上下文,其含義是執(zhí)行的現(xiàn)場(chǎng)數(shù)據(jù)和其他調(diào)度所需的信息(這種觀點(diǎn)來自Linux系統(tǒng))。線程本書定義線程是進(jìn)程內(nèi)一個(gè)相對(duì)獨(dú)立的、可調(diào)度的執(zhí)行單元。線程自己基本上不擁有資源,只擁有一點(diǎn)在運(yùn)行時(shí)必不可少的資源(如程序計(jì)數(shù)器、一組寄存器和棧),但它可以與同屬一個(gè)進(jìn)程的其他線程共享進(jìn)程擁有的全部資源。線程的控制和進(jìn)程類似,線程也有運(yùn)行、就緒、阻塞等狀態(tài)。創(chuàng)建:當(dāng)創(chuàng)建一個(gè)新進(jìn)程時(shí),也為該進(jìn)程創(chuàng)建了一個(gè)線程。線程還可以創(chuàng)建新線程。就緒:線程已獲得除處理機(jī)外的所有資源。運(yùn)行:線程正在處理機(jī)上執(zhí)行。阻塞:線程因等待某事件而暫停運(yùn)行。終止:一個(gè)線程已完成。線程的同步與通信與進(jìn)程類似。進(jìn)程的掛起及終止將影響到其中的所有線程。線程的控制(續(xù))進(jìn)程中的線程具有執(zhí)行狀態(tài)線程上下文執(zhí)行棧線程靜態(tài)存儲(chǔ)局部變量寄存器及對(duì)所屬進(jìn)程資源的訪問多線程多線程是指一個(gè)進(jìn)程中有多個(gè)線程,這些線程共享該進(jìn)程的狀態(tài)和資源,它們駐留在同一地址空間,并且可以訪問到相同的數(shù)據(jù)。線程的實(shí)現(xiàn)操作系統(tǒng)中有多種方式實(shí)現(xiàn)對(duì)線程的支持:內(nèi)核級(jí)線程kernel-levelthread用戶級(jí)線程user-levelthread上述兩種方法的組合實(shí)現(xiàn)內(nèi)核級(jí)線程內(nèi)核級(jí)線程是指依賴于內(nèi)核,由操作系統(tǒng)內(nèi)核完成創(chuàng)建和撤消工作的線程。在支持內(nèi)核級(jí)線程的OS中,內(nèi)核維護(hù)進(jìn)程和線程的上下文信息并完成線程切換。一個(gè)內(nèi)核級(jí)線程阻塞時(shí)不會(huì)影響其他線程的運(yùn)行。處理機(jī)時(shí)間分配的對(duì)象是線程,所以有多個(gè)線程的進(jìn)程將獲得更多處理機(jī)時(shí)間。用戶級(jí)線程用戶級(jí)線程是指不依賴于操作系統(tǒng)核心,由應(yīng)用進(jìn)程利用線程庫提供創(chuàng)建、同步、調(diào)度和管理線程的函數(shù)來控制的線程。用戶級(jí)線程的維護(hù)由應(yīng)用進(jìn)程完成,可以用于不支持內(nèi)核級(jí)線程的操作系統(tǒng)當(dāng)一個(gè)線程阻塞時(shí),整個(gè)進(jìn)程都必須等待,處理機(jī)時(shí)間是分配給進(jìn)程的,進(jìn)程內(nèi)有多個(gè)線程時(shí),每個(gè)線程的執(zhí)行時(shí)間相對(duì)少一些。
兩種方法的組合在有些系統(tǒng)中,提供了上述兩種方法的組合實(shí)現(xiàn)。在這種系統(tǒng)中,內(nèi)核支持多線程的建立、調(diào)度與管理;同時(shí),系統(tǒng)中又提供使用線程庫的便利,允許用戶應(yīng)用程序建立、調(diào)度和管理用戶級(jí)的線程。因此可以很好地將內(nèi)核級(jí)線程和用戶級(jí)線程的優(yōu)點(diǎn)結(jié)合起來。由此產(chǎn)生了不同的多線程模型。一對(duì)一模型每個(gè)用戶級(jí)線程映射到一個(gè)內(nèi)核級(jí)線程上多對(duì)一模型多個(gè)用戶級(jí)線程映射到一個(gè)內(nèi)核級(jí)線程上多對(duì)多模型多個(gè)用戶級(jí)線程映射到較少或相等個(gè)數(shù)的內(nèi)核級(jí)線程上。2.6.2線程與進(jìn)程的比較調(diào)度:在傳統(tǒng)OS中,進(jìn)程是調(diào)度和分配資源的基本單位;引入線程后,線程是調(diào)度和分派的基本單位,進(jìn)程是擁有資源的基本單位。擁有資源:進(jìn)程是擁有資源的基本單位,由一個(gè)或多個(gè)線程及相關(guān)資源構(gòu)成。并發(fā)性:進(jìn)程之間可以并發(fā)執(zhí)行,同一進(jìn)程中的各線程之間也可以并發(fā)執(zhí)行。系統(tǒng)開銷:進(jìn)程創(chuàng)建、撤銷及切換的開銷大于線程。而同一進(jìn)程的線程間同步與通信開銷小。習(xí)題P423(1)、3(3)、3(5)補(bǔ)充題:設(shè)單處理機(jī)系統(tǒng)中有n(n>2)個(gè)進(jìn)程,問:是否總有進(jìn)程運(yùn)行?為什么?是否會(huì)出現(xiàn)等待隊(duì)列為空的情況?為什么?是否會(huì)出現(xiàn)等待隊(duì)列為空且無進(jìn)程運(yùn)行的情況?為什么?是否會(huì)出現(xiàn)就緒隊(duì)列為空的情況?為什么?選擇題1對(duì)進(jìn)程的管理和控制使用_____。A.指令
B.信號(hào)量C.原語
D.信箱分配到必要的資源并獲得處理機(jī)時(shí)的進(jìn)程狀態(tài)是_____。A.就緒狀態(tài)
B.撤消狀態(tài)C.執(zhí)行狀態(tài)D.阻塞狀態(tài)選擇題2程序的順序執(zhí)行通常在
①
的工作環(huán)境中,具有以下特征
②
;程序的并發(fā)執(zhí)行在
③
的工作環(huán)境中,具有如下特征
④
。A.資源共享B.程序的可再現(xiàn)性
C.多道程序D.單道程序下列進(jìn)程狀態(tài)變化中,_____變化是不可能發(fā)生的。A.等待→就緒B.等待→運(yùn)行
C.運(yùn)行→等待D.運(yùn)行→就緒選擇題3當(dāng)_____時(shí),進(jìn)程從執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài)。A.等待的事件發(fā)生B.時(shí)間片到C.等待某一事件D.進(jìn)程被調(diào)度程序選中下面對(duì)進(jìn)程的描述中,錯(cuò)誤的是_____。A.進(jìn)程是有生命期的B.進(jìn)程執(zhí)行需要處理機(jī)C.進(jìn)程是指令的集合D.進(jìn)程是動(dòng)態(tài)的概念選擇題4操作系統(tǒng)通過_____對(duì)進(jìn)程進(jìn)行管理。A.JCBB.PCBC.DCTD.CHCT下面所述步驟中,_____不是創(chuàng)建進(jìn)程所必需的。A.建立一個(gè)進(jìn)程控制塊B.為進(jìn)程分配內(nèi)存C.將進(jìn)程控制塊鏈入就緒隊(duì)列D.由調(diào)度程序?yàn)檫M(jìn)程分配CPU選擇題5多道程序環(huán)境下,操作系統(tǒng)分配資源以_____為基本單位。A.作業(yè)
B.進(jìn)程C.指令D.程序如果系統(tǒng)中有n個(gè)進(jìn)程,則就緒隊(duì)列中進(jìn)程的個(gè)數(shù)最多為_____。A.nB.1C.n-1D.n+1選擇題6下述哪一個(gè)選項(xiàng),體現(xiàn)了原語的主要特點(diǎn)_____。A.并發(fā)性
B.異步性C.不可分割性D.共享性下面對(duì)父進(jìn)程和子進(jìn)程的敘述不正確的是_____。A.撤消父進(jìn)程之時(shí),可以同時(shí)撤消其子進(jìn)程B.父進(jìn)程和子進(jìn)程之間可以并發(fā)C.父進(jìn)程可以等待所有子進(jìn)程結(jié)束后再執(zhí)行D.父進(jìn)程創(chuàng)建了子進(jìn)程,因此父進(jìn)程執(zhí)行完了子進(jìn)程才能運(yùn)行選擇題7并發(fā)進(jìn)程失去了封閉性是指_____。A.并發(fā)進(jìn)程的執(zhí)行結(jié)果與速度無關(guān)B.多個(gè)相對(duì)獨(dú)立的進(jìn)程以各自的速度向前推進(jìn)C.并發(fā)進(jìn)程執(zhí)行時(shí),在不同時(shí)刻發(fā)生的錯(cuò)誤D.并發(fā)進(jìn)程共享變量,其執(zhí)行結(jié)果與速度有關(guān)下列幾種關(guān)于進(jìn)程的敘述中,最不符合操作系統(tǒng)對(duì)進(jìn)程理解的是_____。A.進(jìn)程是在多程序并行環(huán)境中的完整的程序B.進(jìn)程可以由程序,數(shù)據(jù)和進(jìn)程控制塊描述C.線程(Thread)是一種特殊的進(jìn)程D.進(jìn)程是程序在一個(gè)數(shù)據(jù)集合上運(yùn)行的過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位選擇題8當(dāng)一個(gè)進(jìn)程處于_____的狀態(tài)時(shí),稱其為等待狀態(tài)A.它正等待調(diào)度
B.它正等著協(xié)作進(jìn)程的一個(gè)消息C.它正等分給它一個(gè)時(shí)間片
D.它正等進(jìn)入內(nèi)存進(jìn)程從執(zhí)行狀態(tài)到阻塞狀態(tài)可能是由于_____。A.進(jìn)程調(diào)度程序的調(diào)度
B.現(xiàn)運(yùn)行進(jìn)程的時(shí)間片用完C.現(xiàn)運(yùn)行進(jìn)程執(zhí)行了P操作
D.現(xiàn)運(yùn)行進(jìn)程執(zhí)行了V操作選擇題9一個(gè)進(jìn)程被喚醒意味著_____。A.該進(jìn)程重新占有了CPUB.進(jìn)程狀態(tài)變?yōu)榫途wC.它的優(yōu)先權(quán)變?yōu)樽畲?/p>
D.其PCB移至就緒隊(duì)列的隊(duì)首一個(gè)進(jìn)程基本狀態(tài)可以從其他兩種基本狀態(tài)轉(zhuǎn)變過來
,這個(gè)基本狀態(tài)是_____。A.執(zhí)行狀態(tài)B.阻塞狀態(tài)
C.就緒狀態(tài)D.撤銷狀態(tài)選擇題10關(guān)于線程和進(jìn)程,下列說法中正確的是____。A.線程一定是分配處理機(jī)時(shí)間的基本單位B.進(jìn)程一定是分配處理機(jī)時(shí)間的基本單位C.一個(gè)線程可以屬于多個(gè)進(jìn)程
D.一個(gè)進(jìn)程可以擁有多個(gè)線程填空題1進(jìn)程的基本特征是
①
、
②
、
③
、
④
及
⑤
。進(jìn)程的基本狀態(tài)有執(zhí)行、
①
和
②
。進(jìn)程是一個(gè)程序?qū)δ硞€(gè)數(shù)據(jù)集的_____。進(jìn)程由
①
、
②
、
③
三部分組成,其中
④
是進(jìn)程存在的惟一標(biāo)志。而
⑤
部分也可以為其他進(jìn)程共享。程序并發(fā)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版工程建設(shè)施工廉政合同
- 2024年貴州工業(yè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(頻考版)含答案解析
- 二零二五年茶山茶葉收購與加工合作協(xié)議3篇
- 二零二五版國際貿(mào)易船舶租賃保險(xiǎn)協(xié)議范本3篇
- 2025年外研版2024九年級(jí)科學(xué)上冊(cè)月考試卷含答案
- 2025年湘教新版八年級(jí)科學(xué)上冊(cè)月考試卷
- 二零二五年度鋰電池制造企業(yè)研發(fā)工程師勞動(dòng)合同3篇
- 二零二五版?zhèn)}儲(chǔ)物流倉儲(chǔ)倉管員安全責(zé)任與應(yīng)急響應(yīng)協(xié)議3篇
- 2025年滬教版八年級(jí)英語下冊(cè)月考試卷含答案
- 二零二五年度環(huán)保建筑材料合伙補(bǔ)充協(xié)議3篇
- 護(hù)理用藥安全管理課件(圖文)
- 2024年大學(xué)計(jì)算機(jī)基礎(chǔ)考試題庫附答案(完整版)
- 八年級(jí)下冊(cè)英語單詞默寫打印版
- 培訓(xùn)課件核電質(zhì)保要求
- 鐵路防洪安全教育培訓(xùn)
- 履帶輪組式電動(dòng)多功能輪椅設(shè)計(jì)說明書樣本
- 建筑勞務(wù)合作協(xié)議書范本.文檔
- 基于Internet的銀行競爭情報(bào)收集系統(tǒng)的研究與實(shí)現(xiàn)的中期報(bào)告
- 泌尿外科利用PDCA循環(huán)降低持續(xù)膀胱沖洗患者膀胱痙攣的發(fā)生率品管圈QCC成果匯報(bào)
- GB/T 43430-2023藏香
- 醫(yī)療設(shè)備、器械項(xiàng)目實(shí)施方案、服務(wù)實(shí)施方案
評(píng)論
0/150
提交評(píng)論