




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
進(jìn)程與線程進(jìn)程(process)是資源分配的基本單位,也是獨立運(yùn)行的基本單位。2.1進(jìn)程的引入
為了描述并發(fā)程序執(zhí)行時的特征,引入了進(jìn)程。
2.1.1前趨圖前趨圖是一個有向無循環(huán)圖,用于描述程序、程序段或語句執(zhí)行的先后次序。圖中的每個結(jié)點可以表示一條語句、一個程序段或一個進(jìn)程,結(jié)點間的有向邊表示兩個結(jié)點之間存在的前趨關(guān)系“→”:→={(Pi,Pj)│Pi必須在Pj開始執(zhí)行之前完成}前趨圖中的各類結(jié)點如果(Pi,Pj)∈→,可以寫成Pi→Pj,則稱Pi是Pj的直接前趨,Pj是Pi的直接后繼。若存在一個序列Pi→Pj→…→Pk,則稱Pi是Pk的前趨。在前趨圖中,沒有前趨的結(jié)點稱為初始結(jié)點,沒有后繼的結(jié)點稱為終止結(jié)點。
前趨圖例S1S2S3S6S4S52.1.2程序的順序執(zhí)行
一個程序通常由若干個程序段所組成,它們必須按照某種先后次序來執(zhí)行,僅當(dāng)前一個操作執(zhí)行完后才能執(zhí)行后繼操作,這類計算過程就是程序的順序執(zhí)行過程。例如:先輸入→再計算→最后輸出,即:I→C→P。程序順序執(zhí)行時的特征
順序性:處理機(jī)的操作嚴(yán)格按照程序所規(guī)定的順序執(zhí)行,即每一個操作必須在下一個操作開始之前結(jié)束。封閉性:程序一旦開始運(yùn)行,其執(zhí)行結(jié)果不受外界因素影響??稍佻F(xiàn)性:只要程序執(zhí)行時的初始條件和執(zhí)行環(huán)境相同,當(dāng)程序重復(fù)執(zhí)行時,都將獲得相同的結(jié)果。2.1.3程序的并發(fā)執(zhí)行及特點程序的并發(fā)執(zhí)行是指若干個程序(或程序段)同時在系統(tǒng)中運(yùn)行,這些程序(或程序段)的執(zhí)行在時間上是重疊的,一個程序(或程序段)的執(zhí)行尚未結(jié)束,另一個程序(或程序段)的執(zhí)行已經(jīng)開始。程序并發(fā)執(zhí)行例進(jìn)程1、2、3并發(fā)執(zhí)行。對每個進(jìn)程而言,其輸入、計算和輸出這三個操作必須順序執(zhí)行。它們之間存在如下先后關(guān)系:I1先于C1和I2,C1先于P1和C2,P1先于P2I2和C1,I3、C2和P1可以并發(fā)。I1I2I3C1C3C2P1P2程序并發(fā)執(zhí)行時的特征
間斷性:并發(fā)程序具有“執(zhí)行---暫停----執(zhí)行”這種間斷性的活動規(guī)律。失去封閉性:多個程序共享系統(tǒng)中的資源,這些資源的狀態(tài)將由多個程序來改變,致使程序之間相互影響。不可再現(xiàn)性:在初始條件相同的情況下,程序的執(zhí)行結(jié)果依賴于執(zhí)行的次序。與時間有關(guān)的錯誤例程序并發(fā)執(zhí)行時可能出現(xiàn)與時間有關(guān)的錯誤。例進(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條件能保證兩個程序段并發(fā)執(zhí)行而不會產(chǎn)生與時間有關(guān)的錯誤: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對應(yīng)的前趨圖如右,其中S0和Sn+1分別是cobegin和coend語句前后的兩條語句。S0S1S2…SnSn+12.2進(jìn)程的定義及描述為了描述并發(fā)執(zhí)行程序的動態(tài)特性,人們引入了一個新的概念——進(jìn)程(process)。2.2.1進(jìn)程的定義進(jìn)程有多種定義,下面列舉一些有代表性的定義:進(jìn)程是程序在處理器上的一次執(zhí)行過程。進(jìn)程是可以和別的計算并行執(zhí)行的計算。進(jìn)程是程序在一個數(shù)據(jù)集合上運(yùn)行的過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位。進(jìn)程是一個具有一定功能的程序關(guān)于某個數(shù)據(jù)集合的一次運(yùn)行活動。2.2.2進(jìn)程的特征動態(tài)性:進(jìn)程是程序的一次執(zhí)行過程。動態(tài)性還表現(xiàn)為它因創(chuàng)建而產(chǎn)生,因調(diào)度而執(zhí)行,因無資源而暫停,因撤消而消亡。而程序是靜態(tài)實體。并發(fā)性:多個進(jìn)程實體同時存在于內(nèi)存中,能在一段時間內(nèi)同時運(yùn)行。獨立性:在傳統(tǒng)OS中,進(jìn)程是獨立運(yùn)行的基本單位,也是系統(tǒng)分配資源和調(diào)度的基本單位。異步性:也叫制約性,進(jìn)程以各自獨立的不可預(yù)知的速度向前推進(jìn)。結(jié)構(gòu)性:進(jìn)程實體由程序段、數(shù)據(jù)段及進(jìn)程控制塊組成,又稱為進(jìn)程映像。2.2.3進(jìn)程與程序的關(guān)系進(jìn)程是動態(tài)概念,程序是靜態(tài)概念;進(jìn)程是程序在處理機(jī)上的一次執(zhí)行過程,而程序是指令的集合。進(jìn)程是暫時的,程序是永久的。進(jìn)程是一個狀態(tài)變化的過程;程序可以長久保存。進(jìn)程與程序的組成不同。進(jìn)程的組成包括程序、數(shù)據(jù)和進(jìn)程控制塊。進(jìn)程與程序是密切相關(guān)的。一個程序可以對應(yīng)多個進(jìn)程;一個進(jìn)程可以包括多個程序。進(jìn)程可以創(chuàng)建新進(jìn)程,而程序不能形成新程序。2.2.4進(jìn)程控制塊PCB(Processcontrolblock)是描述和管理進(jìn)程的數(shù)據(jù)結(jié)構(gòu)。它是進(jìn)程實體的一部分,操作系統(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)識符:惟一標(biāo)識進(jìn)程的一個標(biāo)識符或整數(shù)。進(jìn)程當(dāng)前狀態(tài):說明進(jìn)程當(dāng)前所處狀態(tài)。進(jìn)程隊列指針:用于記錄PCB隊列中下一個PCB的地址。程序和數(shù)據(jù)地址:進(jìn)程的程序和數(shù)據(jù)在內(nèi)存或外存中的存放地址。進(jìn)程優(yōu)先級:反映進(jìn)程獲得CPU的優(yōu)先級別。PCB包含的內(nèi)容2CPU現(xiàn)場保護(hù)區(qū):CPU現(xiàn)場信息的存放區(qū)域,包括:通用寄存器、程序計數(shù)器、程序狀態(tài)字等。通信信息:進(jìn)程與其他進(jìn)程所發(fā)生的信息交換。家族關(guān)系:指明本進(jìn)程與家族的關(guān)系,如父子進(jìn)程標(biāo)識。資源清單:列出進(jìn)程所需資源及當(dāng)前已分配資源。2.3進(jìn)程的狀態(tài)及轉(zhuǎn)換為了刻畫進(jìn)程的動態(tài)特征,可以將進(jìn)程的生命期劃分為一組狀態(tài),用這些狀態(tài)來描述進(jìn)程的活動過程。Processstate通常,一個進(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)。一個進(jìn)程獲得必要的資源并正在處理機(jī)上執(zhí)行。阻塞狀態(tài):又稱等待狀態(tài)、睡眠狀態(tài)。正在執(zhí)行的進(jìn)程,由于發(fā)生某事件而暫時無法執(zhí)行下去(如等待輸入/輸出完成)。這時即使把處理機(jī)分配給該進(jìn)程,它也無法運(yùn)行。進(jìn)程狀態(tài)轉(zhuǎn)換圖執(zhí)行就緒阻塞進(jìn)程調(diào)度時間片用完等待事件事件發(fā)生2.3.2新建狀態(tài)和終止?fàn)顟B(tài)在許多系統(tǒng)中又增加了兩種狀態(tài):新建狀態(tài)(new):進(jìn)程剛剛建立,但還未進(jìn)入就緒隊列。又稱創(chuàng)建狀態(tài)。終止?fàn)顟B(tài)(terminated)
:當(dāng)一個進(jìn)程正?;虍惓=Y(jié)束,操作系統(tǒng)已釋放它所占用的資源,但尚未將它撤消時的狀態(tài),又稱退出狀態(tài)。五狀態(tài)的進(jìn)程狀態(tài)轉(zhuǎn)換圖運(yùn)行就緒等待進(jìn)程調(diào)度時間片用完等待事件事件發(fā)生新建終止接納完成狀態(tài)轉(zhuǎn)換的有關(guān)說明大多數(shù)狀態(tài)不可逆轉(zhuǎn),如等待不能轉(zhuǎn)換為運(yùn)行。狀態(tài)轉(zhuǎn)換大多為被動進(jìn)行,但運(yùn)行→等待是主動的。一個進(jìn)程在一個時刻只能處于上述狀態(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)換圖基于上述原因,需引入一個新的狀態(tài):掛起狀態(tài)。執(zhí)行進(jìn)程調(diào)度時間片完活動就緒等待事件掛起事件發(fā)生掛起激活活動阻塞掛起就緒掛起阻塞掛起激活事件發(fā)生創(chuàng)建退出接納接納完成因果變遷如果一個狀態(tài)變化A的發(fā)生,會引起另一個狀態(tài)變化B的發(fā)生,則稱A、B之間是因果變遷。執(zhí)行就緒阻塞4312下述哪些變遷是因果變遷a)3->4b)2->4c)1->22.4進(jìn)程控制進(jìn)程控制的職能是對系統(tǒng)中的所有進(jìn)程實施有效的管理。常見的進(jìn)程控制功能有進(jìn)程創(chuàng)建、撤消、阻塞與喚醒等。這些功能一般由操作系統(tǒng)內(nèi)核原語來實現(xiàn)。操作系統(tǒng)內(nèi)核在操作系統(tǒng)設(shè)計中,往往把一些與硬件緊密相關(guān)的模塊、運(yùn)行頻率較高的模塊及公用的一些基本操作安排在靠近硬件的軟件層次中,使它們常駐內(nèi)存,以提高操作系統(tǒng)的運(yùn)行效率,通常把這部分軟件稱為操作系統(tǒng)內(nèi)核。內(nèi)核(kernel)主要包括:中斷時鐘管理進(jìn)程管理存儲器管理設(shè)備管理原語primitive原語是由若干條機(jī)器指令構(gòu)成的,用以完成特定功能的一段程序,這段程序在執(zhí)行期間不可分割。計算機(jī)系統(tǒng)的兩種運(yùn)行狀態(tài)核心態(tài)(kernelmode):又稱管態(tài)、系統(tǒng)態(tài),是操作系統(tǒng)管理程序執(zhí)行時機(jī)器所處的狀態(tài)。這種狀態(tài)具有較高的特權(quán),能執(zhí)行一切指令,訪問所有的寄存器和存儲區(qū)。用戶態(tài)(Usermode)
:又稱目態(tài),是用戶程序執(zhí)行時機(jī)器所處的狀態(tài)。這種狀態(tài)具有較低特權(quán),只能執(zhí)行規(guī)定的指令,訪問指定的寄存器和存儲區(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é)點表示進(jìn)程,若進(jìn)程A創(chuàng)建了進(jìn)程B,則從結(jié)點A有一條邊指向結(jié)點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)建一個進(jìn)程。作業(yè)調(diào)度:為調(diào)度到的作業(yè)分配資源并創(chuàng)建進(jìn)程。OS服務(wù):創(chuàng)建服務(wù)進(jìn)程。應(yīng)用需要:應(yīng)用程序根據(jù)需要創(chuàng)建子進(jìn)程。創(chuàng)建原語的主要功能進(jìn)程創(chuàng)建原語的功能是創(chuàng)建一個新進(jìn)程,其主要操作過程如下:向系統(tǒng)申請一個空閑PCB。為新進(jìn)程分配資源。如分配內(nèi)存空間。初始化新進(jìn)程的PCB。在其PCB中填入進(jìn)程名、家族信息、程序和數(shù)據(jù)地址、進(jìn)程優(yōu)先級、資源清單及進(jìn)程狀態(tài)等。將新進(jìn)程的PCB插入就緒隊列。2.4.2進(jìn)程撤銷引起進(jìn)程撤銷的原因有:正常結(jié)束異常結(jié)束:超時、內(nèi)存不足、地址越界、算術(shù)錯、I/O故障、非法指令等。外界干預(yù):包括操作員或系統(tǒng)干預(yù),父進(jìn)程請求。撤消原語采用的兩種策略撤消原語采用的兩種策略:撤消指定標(biāo)識符的進(jìn)程撤消指定進(jìn)程及其所有子孫進(jìn)程下面給出后一種撤消策略的功能描述。
撤消原語的主要功能撤消原語的功能是撤消一個進(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)程阻塞及喚醒的事件:請求系統(tǒng)服務(wù)。如請求分配打印機(jī),但無空閑打印機(jī)則進(jìn)程阻塞;當(dāng)打印機(jī)重又空閑時應(yīng)喚醒進(jìn)程。啟動某種操作并等待操作完成。如啟動I/O操作,進(jìn)程阻塞;I/O完成則喚醒進(jìn)程。等待合作進(jìn)程的協(xié)同配合。如計算進(jìn)程尚未將數(shù)據(jù)送到緩沖區(qū),則打印進(jìn)程阻塞;當(dāng)緩沖區(qū)中有數(shù)據(jù)時應(yīng)喚醒進(jìn)程。系統(tǒng)進(jìn)程無新工作可做。如沒有信息可供發(fā)送,則發(fā)送請求阻塞;當(dāng)收到新的發(fā)送請求時,應(yīng)將阻塞進(jìn)程喚醒。
阻塞原語的主要功能阻塞原語的主要功能是將進(jìn)程由執(zhí)行狀態(tài)轉(zhuǎn)為阻塞狀態(tài)。其主要操作過程如下:停止當(dāng)前進(jìn)程的執(zhí)行;保存該進(jìn)程的CPU現(xiàn)場信息;將進(jìn)程狀態(tài)改為阻塞,并插入到相應(yīng)事件的等待隊列中;轉(zhuǎn)進(jìn)程調(diào)度程序,從就緒隊列中選擇一個新的進(jìn)程投入運(yùn)行。喚醒原語的主要功能當(dāng)進(jìn)程等待的事件發(fā)生時,由發(fā)現(xiàn)者進(jìn)程將其喚醒。喚醒原語的主要功能是將進(jìn)程喚醒,其主要操作過程如下:將被喚醒進(jìn)程從相應(yīng)的等待隊列中移出;將進(jìn)程狀態(tài)改為就緒,并將該進(jìn)程插入就緒隊列;轉(zhuǎn)進(jìn)程調(diào)度或返回。阻塞與喚醒的關(guān)系一個進(jìn)程由執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)樽枞麪顟B(tài),是這個進(jìn)程自己調(diào)用阻塞原語去完成的。進(jìn)程由阻塞狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài),是另一個發(fā)現(xiàn)者進(jìn)程調(diào)用喚醒原語實現(xiàn)的。一般發(fā)現(xiàn)者進(jìn)程與被喚醒進(jìn)程是合作的并發(fā)進(jìn)程。2.4.4進(jìn)程的掛起與激活掛起原語和激活原語都有多種實現(xiàn)方式,如:把發(fā)出掛起原語的進(jìn)程自身掛起掛起具有指定標(biāo)識符的進(jìn)程把某進(jìn)程及其子孫進(jìn)程掛起激活一個具有指定標(biāo)識名的進(jìn)程激活某進(jìn)程及其子孫進(jìn)程下面以掛起或激活具有指定標(biāo)識符的進(jìn)程為例,說明這兩種原語的主要功能。
掛起原語的主要功能
掛起原語的主要功能是將指定進(jìn)程掛起,算法思想如下:到PCB表中查找該進(jìn)程的PCB;檢查該進(jìn)程的狀態(tài),若為執(zhí)行則停止執(zhí)行并保護(hù)CPU現(xiàn)場信息,將該進(jìn)程狀態(tài)改為掛起就緒;若為活動阻塞,則將該進(jìn)程狀態(tài)改為掛起阻塞;若為活動就緒,則將該進(jìn)程狀態(tài)改為掛起就緒;若進(jìn)程掛起前為執(zhí)行狀態(tài),則轉(zhuǎn)進(jìn)程調(diào)度,從就緒隊列中選擇一個進(jìn)程投入運(yùn)行。激活原語的主要功能
激活原語的主要功能是將指定進(jìn)程激活。其算法思想如下:到PCB表中查找該進(jìn)程的PCB。檢查該進(jìn)程的狀態(tài)。若狀態(tài)為掛起阻塞,則將該進(jìn)程狀態(tài)改為活動阻塞。若狀態(tài)為掛起就緒,則將該進(jìn)程狀態(tài)改為活動就緒。若進(jìn)程激活后為活動就緒狀態(tài),可能需要轉(zhuǎn)進(jìn)程調(diào)度。2.5進(jìn)程的組織系統(tǒng)中有許多進(jìn)程,為了能對它們進(jìn)行有效的管理,應(yīng)將PCB組織起來。常用的組織方式有:線性方式鏈表方式索引方式線性方式線性方式:將PCB順序存放在一片連續(xù)內(nèi)存中。PCB1PCB2PCB3PCBnPCBn-1PCBn-2…鏈接方式鏈接方式:將同一狀態(tài)的PCB組成一個鏈表。
運(yùn)行指針
就緒隊列指針
阻塞隊列指針PCBPCBPCBPCB^PCB^PCBPCB^索引方式索引方式:將同一狀態(tài)的進(jìn)程歸入一個索引表,再由索引指向相應(yīng)的PCB
運(yùn)行指針
就緒表指針
阻塞表指針PCB表就緒索引表阻塞索引表PCB1PCB2PCB3PCB4PCB5PCB6PCB7PCB8PCB9………2.6線程thread在操作系統(tǒng)中引入進(jìn)程的目的是使多道程序能并發(fā)執(zhí)行,以改善資源利用率及提高系統(tǒng)吞吐量;在操作系統(tǒng)中再引入線程,則是為了減少程序并發(fā)執(zhí)行所付出的時空開銷,使操作系統(tǒng)具有更好的并發(fā)性。2.6.1線程的概念進(jìn)程具有兩個屬性:擁有資源的獨立單位調(diào)度和分派的基本單位為使進(jìn)程并發(fā)執(zhí)行,則必須進(jìn)行諸如創(chuàng)建、撤消、切換等一系列操作,這些操作涉及到資源管理,所花費(fèi)的時空開銷較大,為此引入了線程。線程定義線程的定義情況與進(jìn)程類似,存在多種不同的提法。下面列出一些較權(quán)威的定義:線程是進(jìn)程內(nèi)的一個執(zhí)行單元。線程是進(jìn)程內(nèi)的一個可調(diào)度實體。線程是程序(或進(jìn)程)中相對獨立的一個控制流序列。線程是執(zhí)行的上下文,其含義是執(zhí)行的現(xiàn)場數(shù)據(jù)和其他調(diào)度所需的信息(這種觀點來自Linux系統(tǒng))。線程本書定義線程是進(jìn)程內(nèi)一個相對獨立的、可調(diào)度的執(zhí)行單元。線程自己基本上不擁有資源,只擁有一點在運(yùn)行時必不可少的資源(如程序計數(shù)器、一組寄存器和棧),但它可以與同屬一個進(jìn)程的其他線程共享進(jìn)程擁有的全部資源。線程的控制和進(jìn)程類似,線程也有運(yùn)行、就緒、阻塞等狀態(tài)。創(chuàng)建:當(dāng)創(chuàng)建一個新進(jìn)程時,也為該進(jìn)程創(chuàng)建了一個線程。線程還可以創(chuàng)建新線程。就緒:線程已獲得除處理機(jī)外的所有資源。運(yùn)行:線程正在處理機(jī)上執(zhí)行。阻塞:線程因等待某事件而暫停運(yùn)行。終止:一個線程已完成。線程的同步與通信與進(jìn)程類似。進(jìn)程的掛起及終止將影響到其中的所有線程。線程的控制(續(xù))進(jìn)程中的線程具有執(zhí)行狀態(tài)線程上下文執(zhí)行棧線程靜態(tài)存儲局部變量寄存器及對所屬進(jìn)程資源的訪問多線程多線程是指一個進(jìn)程中有多個線程,這些線程共享該進(jìn)程的狀態(tài)和資源,它們駐留在同一地址空間,并且可以訪問到相同的數(shù)據(jù)。線程的實現(xiàn)操作系統(tǒng)中有多種方式實現(xiàn)對線程的支持:內(nèi)核級線程kernel-levelthread用戶級線程user-levelthread上述兩種方法的組合實現(xiàn)內(nèi)核級線程內(nèi)核級線程是指依賴于內(nèi)核,由操作系統(tǒng)內(nèi)核完成創(chuàng)建和撤消工作的線程。在支持內(nèi)核級線程的OS中,內(nèi)核維護(hù)進(jìn)程和線程的上下文信息并完成線程切換。一個內(nèi)核級線程阻塞時不會影響其他線程的運(yùn)行。處理機(jī)時間分配的對象是線程,所以有多個線程的進(jìn)程將獲得更多處理機(jī)時間。用戶級線程用戶級線程是指不依賴于操作系統(tǒng)核心,由應(yīng)用進(jìn)程利用線程庫提供創(chuàng)建、同步、調(diào)度和管理線程的函數(shù)來控制的線程。用戶級線程的維護(hù)由應(yīng)用進(jìn)程完成,可以用于不支持內(nèi)核級線程的操作系統(tǒng)當(dāng)一個線程阻塞時,整個進(jìn)程都必須等待,處理機(jī)時間是分配給進(jìn)程的,進(jìn)程內(nèi)有多個線程時,每個線程的執(zhí)行時間相對少一些。
兩種方法的組合在有些系統(tǒng)中,提供了上述兩種方法的組合實現(xiàn)。在這種系統(tǒng)中,內(nèi)核支持多線程的建立、調(diào)度與管理;同時,系統(tǒng)中又提供使用線程庫的便利,允許用戶應(yīng)用程序建立、調(diào)度和管理用戶級的線程。因此可以很好地將內(nèi)核級線程和用戶級線程的優(yōu)點結(jié)合起來。由此產(chǎn)生了不同的多線程模型。一對一模型每個用戶級線程映射到一個內(nèi)核級線程上多對一模型多個用戶級線程映射到一個內(nèi)核級線程上多對多模型多個用戶級線程映射到較少或相等個數(shù)的內(nèi)核級線程上。2.6.2線程與進(jìn)程的比較調(diào)度:在傳統(tǒng)OS中,進(jìn)程是調(diào)度和分配資源的基本單位;引入線程后,線程是調(diào)度和分派的基本單位,進(jìn)程是擁有資源的基本單位。擁有資源:進(jìn)程是擁有資源的基本單位,由一個或多個線程及相關(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)個進(jìn)程,問:是否總有進(jìn)程運(yùn)行?為什么?是否會出現(xiàn)等待隊列為空的情況?為什么?是否會出現(xiàn)等待隊列為空且無進(jìn)程運(yùn)行的情況?為什么?是否會出現(xiàn)就緒隊列為空的情況?為什么?選擇題1對進(jìn)程的管理和控制使用_____。A.指令
B.信號量C.原語
D.信箱分配到必要的資源并獲得處理機(jī)時的進(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)_____時,進(jìn)程從執(zhí)行狀態(tài)轉(zhuǎn)變?yōu)榫途w狀態(tài)。A.等待的事件發(fā)生B.時間片到C.等待某一事件D.進(jìn)程被調(diào)度程序選中下面對進(jìn)程的描述中,錯誤的是_____。A.進(jìn)程是有生命期的B.進(jìn)程執(zhí)行需要處理機(jī)C.進(jìn)程是指令的集合D.進(jìn)程是動態(tài)的概念選擇題4操作系統(tǒng)通過_____對進(jìn)程進(jìn)行管理。A.JCBB.PCBC.DCTD.CHCT下面所述步驟中,_____不是創(chuàng)建進(jìn)程所必需的。A.建立一個進(jìn)程控制塊B.為進(jìn)程分配內(nèi)存C.將進(jìn)程控制塊鏈入就緒隊列D.由調(diào)度程序為進(jìn)程分配CPU選擇題5多道程序環(huán)境下,操作系統(tǒng)分配資源以_____為基本單位。A.作業(yè)
B.進(jìn)程C.指令D.程序如果系統(tǒng)中有n個進(jìn)程,則就緒隊列中進(jìn)程的個數(shù)最多為_____。A.nB.1C.n-1D.n+1選擇題6下述哪一個選項,體現(xiàn)了原語的主要特點_____。A.并發(fā)性
B.異步性C.不可分割性D.共享性下面對父進(jìn)程和子進(jìn)程的敘述不正確的是_____。A.撤消父進(jìn)程之時,可以同時撤消其子進(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.多個相對獨立的進(jìn)程以各自的速度向前推進(jìn)C.并發(fā)進(jìn)程執(zhí)行時,在不同時刻發(fā)生的錯誤D.并發(fā)進(jìn)程共享變量,其執(zhí)行結(jié)果與速度有關(guān)下列幾種關(guān)于進(jìn)程的敘述中,最不符合操作系統(tǒng)對進(jìn)程理解的是_____。A.進(jìn)程是在多程序并行環(huán)境中的完整的程序B.進(jìn)程可以由程序,數(shù)據(jù)和進(jìn)程控制塊描述C.線程(Thread)是一種特殊的進(jìn)程D.進(jìn)程是程序在一個數(shù)據(jù)集合上運(yùn)行的過程,是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個獨立單位選擇題8當(dāng)一個進(jìn)程處于_____的狀態(tài)時,稱其為等待狀態(tài)A.它正等待調(diào)度
B.它正等著協(xié)作進(jìn)程的一個消息C.它正等分給它一個時間片
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)程的時間片用完C.現(xiàn)運(yùn)行進(jìn)程執(zhí)行了P操作
D.現(xiàn)運(yùn)行進(jìn)程執(zhí)行了V操作選擇題9一個進(jìn)程被喚醒意味著_____。A.該進(jìn)程重新占有了CPUB.進(jìn)程狀態(tài)變?yōu)榫途wC.它的優(yōu)先權(quán)變?yōu)樽畲?/p>
D.其PCB移至就緒隊列的隊首一個進(jìn)程基本狀態(tài)可以從其他兩種基本狀態(tài)轉(zhuǎn)變過來
,這個基本狀態(tài)是_____。A.執(zhí)行狀態(tài)B.阻塞狀態(tài)
C.就緒狀態(tài)D.撤銷狀態(tài)選擇題10關(guān)于線程和進(jìn)程,下列說法中正確的是____。A.線程一定是分配處理機(jī)時間的基本單位B.進(jìn)程一定是分配處理機(jī)時間的基本單位C.一個線程可以屬于多個進(jìn)程
D.一個進(jìn)程可以擁有多個線程填空題1進(jìn)程的基本特征是
①
、
②
、
③
、
④
及
⑤
。進(jìn)程的基本狀態(tài)有執(zhí)行、
①
和
②
。進(jìn)程是一個程序?qū)δ硞€數(shù)據(jù)集的_____。進(jìn)程由
①
、
②
、
③
三部分組成,其中
④
是進(jìn)程存在的惟一標(biāo)志。而
⑤
部分也可以為其他進(jìn)程共享。程序并發(fā)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030中國水果店行業(yè)現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 2025-2030中國氣動打包機(jī)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025-2030中國樹莓汁行業(yè)市場發(fā)展分析及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2025-2030中國智慧港口行業(yè)市場深度調(diào)研及前景趨勢與投資研究報告
- 2025-2030中國數(shù)碼攝像機(jī)行業(yè)市場深度調(diào)研及前景趨勢與投資研究報告
- 2025-2030中國支持虛擬現(xiàn)實的計算機(jī)行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025-2030中國按摩霜市場調(diào)研及重點企業(yè)投資評估規(guī)劃分析研究報告
- 醫(yī)學(xué)人文與健康科普的融合
- 2025-2030中國手機(jī)視頻監(jiān)控行業(yè)發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 國外先進(jìn)外包企業(yè)案例研究-洞察闡釋
- 超高齡病人ERCP麻醉管理護(hù)理課件
- 污水處理站運(yùn)營應(yīng)急預(yù)案
- 中醫(yī)治療面癱課件
- 電商平臺對用戶交易糾紛的處理和解決方案
- 項目式學(xué)習(xí)在初中散文教學(xué)中的應(yīng)用研究
- 腦動靜脈畸形演示課件
- 環(huán)泊酚注射液-臨床用藥解讀
- 社交禮儀與合作精神的主題班會
- 智慧社區(qū)平臺運(yùn)營方案
- 民間非營利組織會計培訓(xùn)
- 不良資產(chǎn)項目律師法律盡調(diào)報告(模板)
評論
0/150
提交評論