考點(diǎn)9進(jìn)程的同步與互斥
1.臨界資源和臨界區(qū)
臨界資源是指一次只允許一個(gè)進(jìn)程使用的資源:一個(gè)進(jìn)程中訪問臨界資源的那段程序代碼稱為臨界區(qū)。它們不允許兩個(gè)及以上的進(jìn)程同時(shí)訪問或修改。
2.進(jìn)程的同步
進(jìn)程的同步運(yùn)行是指進(jìn)程之間的一種直接的協(xié)同工作關(guān)系,這些進(jìn)程通過相互合作來完成一項(xiàng)任務(wù)。
3.進(jìn)程的互斤
進(jìn)程間一種間接的相互作用構(gòu)成進(jìn)程互斥。進(jìn)程互斥的目的就是使某一進(jìn)程可以在某一時(shí)間內(nèi)獨(dú)占一些資源•
考點(diǎn)10進(jìn)程通信
1.信號(hào)量和P, V操作
解決進(jìn)程的同步與互斥,既可用硬件實(shí)現(xiàn),也可用軟件實(shí)現(xiàn)。
(1)在系統(tǒng)中信號(hào)量(S)是一個(gè)整數(shù)。當(dāng)S}-- 0時(shí),表示可供并發(fā)進(jìn)程使用的資源實(shí)體數(shù);當(dāng)S<0時(shí),代表等待使用臨界區(qū)的進(jìn)程數(shù)。
(2)只能通過P、V操作原語來改變P,V操作信號(hào)量的數(shù)值。P操作表示在當(dāng)前進(jìn)程申請(qǐng)的各種資源,V操作代表當(dāng)前進(jìn)程釋放所占用的資源。P操作和V操作都是低級(jí)進(jìn)程通信原語。
(3)利用P、V操作可以解決并發(fā)進(jìn)程間的互斥問題。
(4)利用P、V操作也可以解決并發(fā)進(jìn)程間的同步問題。
2.高級(jí)通信機(jī)構(gòu)
對(duì)進(jìn)程間大量信息的交換常采用消息通信的方法,高級(jí)通信原語不僅可保證相互制約的進(jìn)程的正確關(guān)系,同時(shí)還實(shí)現(xiàn)了進(jìn)程之間的信息交換。該方法不僅能實(shí)現(xiàn)進(jìn)程間的通信,而且能實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)的傳送。下面分別介紹3種高級(jí)進(jìn)程通信。
(1)消息緩沖通信。消息緩沖通信的基本思想:系統(tǒng)管理一組消息緩沖區(qū),在每一個(gè)緩沖區(qū)可以存放一個(gè)信息。發(fā)送進(jìn)程在發(fā)送消息前,在內(nèi)存中設(shè)置一個(gè)發(fā)送區(qū),裝人欲發(fā)送的消息,在申請(qǐng)到一個(gè)消息緩沖區(qū)以后,將發(fā)送區(qū)里的消息發(fā)送到緩沖區(qū)中。
(2)管道通信。管道通信實(shí)質(zhì)上是利用外存來進(jìn)行數(shù)據(jù)通信,傳輸數(shù)據(jù)量大,但速度較慢。發(fā)送進(jìn)程從管道的一端寫人數(shù)據(jù),接收進(jìn)程在需要的時(shí)候從管道的另一端讀出數(shù)據(jù)。
(3)信箱通信。信箱通信指進(jìn)程并不把消息直接發(fā)送給對(duì)方,而是將通信的消息以信件的方式放在信箱內(nèi)。
考點(diǎn)11進(jìn)程調(diào)度
進(jìn)程調(diào)度即處理機(jī)調(diào)度在多道程序系統(tǒng)中,進(jìn)程數(shù)目往往大于處理機(jī)數(shù)目,這會(huì)使進(jìn)程相互爭(zhēng)奪處理機(jī),必須按照一定的策略將C 1't分配給這些進(jìn)程中的某一進(jìn)程
1.進(jìn)程調(diào)度的功能
記錄系統(tǒng)中所有進(jìn)程的狀態(tài)、優(yōu)先數(shù)及資源使用情況,CPU空閑時(shí)按一定算法確定將CPU分配給哪個(gè)進(jìn)程和分配多長(zhǎng)時(shí)價(jià)。
2.進(jìn)程調(diào)度方式
進(jìn)程調(diào)度方式是指有優(yōu)先數(shù)更高的進(jìn)程進(jìn)人就緒隊(duì)列時(shí),如何分配CPU,一般包括剝奪方式和非剝奪方式兩種調(diào)度方式
3.進(jìn)程調(diào)度算法
(1)先來先服務(wù)算法FCFS。該算法按照進(jìn)程進(jìn)入就緒隊(duì)列的先后順序來選擇二即每當(dāng)進(jìn)行進(jìn)程調(diào)度時(shí).總是把就緒隊(duì)列的隊(duì)首進(jìn)程投人運(yùn)行二
(2)時(shí)間片輪轉(zhuǎn)算法。這主要是分時(shí)系統(tǒng)中使用的一種調(diào)度算法。其基本思想是:將CPU的處理時(shí)間劃分成一個(gè)個(gè)時(shí)間片,就緒隊(duì)列中的諸進(jìn)程輪流運(yùn)行一個(gè)時(shí)間片。當(dāng)時(shí)間片結(jié)束時(shí),就強(qiáng)迫運(yùn)行進(jìn)程讓出CPU,該進(jìn)程進(jìn)人就緒隊(duì)列,等待下一次調(diào)度。同時(shí),進(jìn)程調(diào)度又去選擇就緒隊(duì)列中的另一個(gè)進(jìn)程,分配給它一個(gè)時(shí)間片,以投人運(yùn)行。
影響時(shí)間片大小設(shè)置的主要因素有:系統(tǒng)響應(yīng)時(shí)間、就緒進(jìn)程數(shù)目(終端數(shù)目)和一計(jì)一算機(jī)處理能力。
(3)優(yōu)先級(jí)算法進(jìn)程調(diào)度每次將處理機(jī)分配給具有優(yōu)先級(jí)的就緒進(jìn)程,進(jìn)程的優(yōu)先級(jí)由進(jìn)程優(yōu)先數(shù)決定
進(jìn)程優(yōu)先數(shù)的設(shè)置可以是靜態(tài)的,也可以是動(dòng)態(tài)的。
優(yōu)先數(shù)算法又可與不同的C1'U方式結(jié)合起來,形成可剝奪式優(yōu)先數(shù)算法和不可剝奪式優(yōu)先數(shù)算法。
考點(diǎn)12死鎖
1.死鎖的概念
死鎖是指在多道程序系統(tǒng)中,兩個(gè)或兩個(gè)以上的進(jìn)程無限期地等待永遠(yuǎn)不會(huì)發(fā)生的事件,得不到所需資源因而不能運(yùn)行的狀態(tài)處于死鎖狀態(tài)的進(jìn)程稱為死鎖進(jìn)程。
死鎖產(chǎn)生的原因:一是系統(tǒng)資源不足;二是多道程序運(yùn)行時(shí),進(jìn)程的推進(jìn)順序不合理。
2.產(chǎn)生死鎖的必要條件
(1)互斥條件。進(jìn)程互斥使用資源,任一時(shí)刻一個(gè)資源只為一個(gè)進(jìn)程獨(dú)占,其他進(jìn)程若請(qǐng)求一個(gè)已被占用的資源,只能等占用者釋放后才能使用
(2)不可剝奪條件(不可搶rt1-)。進(jìn)程所獲得的資源在未使用完畢之前,不能被其他進(jìn)程強(qiáng)行剝奪,而只能由獲得該資源的進(jìn)程自己釋放
(3)部分分配(占有等待)。進(jìn)程每次申請(qǐng)它所需要的一部分資源,在申請(qǐng)新的資源的同時(shí),繼續(xù)占用已分配到的資源。
(4)循環(huán)等待:存在一個(gè)進(jìn)程環(huán)路,環(huán)路中每一個(gè)進(jìn)程已獲得的資源同時(shí)被下一個(gè)進(jìn)程所請(qǐng)求。
3.資源分配圖
死鎖問題可用一個(gè)有向圖來表示。資源分配圖就是描述進(jìn)程、資源及它們之間關(guān)系的有向圖。當(dāng)進(jìn)程請(qǐng)求資源時(shí),系統(tǒng)檢查并發(fā)進(jìn)程組是否構(gòu)成資源的請(qǐng)求環(huán)路。存在環(huán)路,可能存在死鎖;不存在環(huán)路,一定沒有死鎖。
4.死鎖預(yù)防
只要破壞死鎖產(chǎn)生的4個(gè)必要條件之一,就可有效避免死鎖的產(chǎn)生,主要有以下幾種方法:
(1)破壞互斥條件
(2)破壞不可剝奪條件。
(3)破壞部分分配條件二
(4)破壞循環(huán)等待條件
5.死鎖解除
當(dāng)發(fā)現(xiàn)死鎖后,可采用以下兩種方法來解除死鎖:
(1)資源剝奪法。從一些進(jìn)程那里強(qiáng)行剝奪足夠數(shù)量的資源分配給死鎖進(jìn)程,以解除死鎖狀態(tài)
(2)撤銷進(jìn)程法。按照某種策略逐個(gè)地撤銷死鎖進(jìn)程,直到獲得為解除死鎖所需要的足夠使用的資源為按照什么原則撤銷進(jìn)程,實(shí)用而又簡(jiǎn)便的方法就是撤銷那些代價(jià)最小的進(jìn)程,或者撤銷進(jìn)程的數(shù)量最少。
考點(diǎn)13線程
1.線程的概念
線程是進(jìn)程中的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位
2.線程的屬性
(1)每個(gè)線程有一個(gè)的標(biāo)識(shí)符和一張線程描述表。
(2)不同的線程可以執(zhí)行相同的程序。
(3)同一級(jí)的進(jìn)程中的各個(gè)線程共享該進(jìn)程的地址空間。
(4)線程是處理器的獨(dú)立調(diào)度單位,多個(gè)線程是可以并發(fā)執(zhí)行的。
(5)一個(gè)線程被創(chuàng)建以后便開始了它的生命周期,直到終止。
3.線程與進(jìn)程的比較
線程與進(jìn)程的主要區(qū)別表現(xiàn)在以下幾個(gè)方面:
(1)調(diào)度。在傳統(tǒng)的操作系統(tǒng)中,擁有資源的基本單位和獨(dú)立調(diào)度、分派的基本單位只有進(jìn)程,而在引線程的操作系統(tǒng)中,則把線程作為調(diào)度和分派的基本單位,把進(jìn)程作為資源擁有的基本單位,使傳統(tǒng)進(jìn)程兩個(gè)屬性分開,從而使線程能輕裝運(yùn)行,這樣可以顯著地提高系統(tǒng)的并發(fā)程度。在同一進(jìn)程中,線程的切換不會(huì)引起進(jìn)程切換,在由一個(gè)進(jìn)程中的線程切換到另一進(jìn)程中的線程時(shí),將會(huì)引起進(jìn)程切換。
(2)并發(fā)性在引人線程的操作系統(tǒng)中,不僅進(jìn)程之間可以并發(fā)執(zhí)行,而且在一個(gè)進(jìn)程中的多個(gè)線程之也可以并發(fā)執(zhí)行,因而使操作系統(tǒng)具有更好的并發(fā)性,從而能更有效地使用系統(tǒng)資源和提高系統(tǒng)的吞吐。在引入了線程的操作系統(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í),第3個(gè)線程可以繼續(xù)執(zhí)行,從而顯著地高了文件服務(wù)的質(zhì)量及系統(tǒng)的吞吐量C
(3)擁有資源不論是傳統(tǒng)的操作系統(tǒng),還是設(shè)有線程的操作系統(tǒng),進(jìn)程都是擁有資源的一個(gè)獨(dú)立單位。一般地說,線程自己不擁有系統(tǒng)資源(也有一點(diǎn)兒必不可少的資源),但它可以訪問其隸屬進(jìn)程的資源,即一個(gè)進(jìn)程的代碼段、數(shù)據(jù)段及系統(tǒng)資源(如已打開的文件、1/0設(shè)備等),可供同一個(gè)進(jìn)程的其他所有線共享
(4)系統(tǒng)開銷。由于在創(chuàng)建或撤銷進(jìn)程時(shí),系統(tǒng)都要為之分配或回收資源,如內(nèi)存空間、1/0設(shè)備等。因此操作系統(tǒng)所付出的開銷將顯著地大于在創(chuàng)建或撤銷線程時(shí)的開銷。類似地,在進(jìn)行進(jìn)程切換時(shí),涉及到整個(gè)當(dāng)前進(jìn)程CPU環(huán)境的保存及新近被調(diào)度運(yùn)行的進(jìn)程的CPU環(huán)境的設(shè)置。而線程切換只需保存和設(shè)置少量寄存器的內(nèi)容,并不涉及存儲(chǔ)器管理方面的操作??梢?,進(jìn)程切換的開銷也遠(yuǎn)大于線程切換的開銷。
1.臨界資源和臨界區(qū)
臨界資源是指一次只允許一個(gè)進(jìn)程使用的資源:一個(gè)進(jìn)程中訪問臨界資源的那段程序代碼稱為臨界區(qū)。它們不允許兩個(gè)及以上的進(jìn)程同時(shí)訪問或修改。
2.進(jìn)程的同步
進(jìn)程的同步運(yùn)行是指進(jìn)程之間的一種直接的協(xié)同工作關(guān)系,這些進(jìn)程通過相互合作來完成一項(xiàng)任務(wù)。
3.進(jìn)程的互斤
進(jìn)程間一種間接的相互作用構(gòu)成進(jìn)程互斥。進(jìn)程互斥的目的就是使某一進(jìn)程可以在某一時(shí)間內(nèi)獨(dú)占一些資源•
考點(diǎn)10進(jìn)程通信
1.信號(hào)量和P, V操作
解決進(jìn)程的同步與互斥,既可用硬件實(shí)現(xiàn),也可用軟件實(shí)現(xiàn)。
(1)在系統(tǒng)中信號(hào)量(S)是一個(gè)整數(shù)。當(dāng)S}-- 0時(shí),表示可供并發(fā)進(jìn)程使用的資源實(shí)體數(shù);當(dāng)S<0時(shí),代表等待使用臨界區(qū)的進(jìn)程數(shù)。
(2)只能通過P、V操作原語來改變P,V操作信號(hào)量的數(shù)值。P操作表示在當(dāng)前進(jìn)程申請(qǐng)的各種資源,V操作代表當(dāng)前進(jìn)程釋放所占用的資源。P操作和V操作都是低級(jí)進(jìn)程通信原語。
(3)利用P、V操作可以解決并發(fā)進(jìn)程間的互斥問題。
(4)利用P、V操作也可以解決并發(fā)進(jìn)程間的同步問題。
2.高級(jí)通信機(jī)構(gòu)
對(duì)進(jìn)程間大量信息的交換常采用消息通信的方法,高級(jí)通信原語不僅可保證相互制約的進(jìn)程的正確關(guān)系,同時(shí)還實(shí)現(xiàn)了進(jìn)程之間的信息交換。該方法不僅能實(shí)現(xiàn)進(jìn)程間的通信,而且能實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)的傳送。下面分別介紹3種高級(jí)進(jìn)程通信。
(1)消息緩沖通信。消息緩沖通信的基本思想:系統(tǒng)管理一組消息緩沖區(qū),在每一個(gè)緩沖區(qū)可以存放一個(gè)信息。發(fā)送進(jìn)程在發(fā)送消息前,在內(nèi)存中設(shè)置一個(gè)發(fā)送區(qū),裝人欲發(fā)送的消息,在申請(qǐng)到一個(gè)消息緩沖區(qū)以后,將發(fā)送區(qū)里的消息發(fā)送到緩沖區(qū)中。
(2)管道通信。管道通信實(shí)質(zhì)上是利用外存來進(jìn)行數(shù)據(jù)通信,傳輸數(shù)據(jù)量大,但速度較慢。發(fā)送進(jìn)程從管道的一端寫人數(shù)據(jù),接收進(jìn)程在需要的時(shí)候從管道的另一端讀出數(shù)據(jù)。
(3)信箱通信。信箱通信指進(jìn)程并不把消息直接發(fā)送給對(duì)方,而是將通信的消息以信件的方式放在信箱內(nèi)。
考點(diǎn)11進(jìn)程調(diào)度
進(jìn)程調(diào)度即處理機(jī)調(diào)度在多道程序系統(tǒng)中,進(jìn)程數(shù)目往往大于處理機(jī)數(shù)目,這會(huì)使進(jìn)程相互爭(zhēng)奪處理機(jī),必須按照一定的策略將C 1't分配給這些進(jìn)程中的某一進(jìn)程
1.進(jìn)程調(diào)度的功能
記錄系統(tǒng)中所有進(jìn)程的狀態(tài)、優(yōu)先數(shù)及資源使用情況,CPU空閑時(shí)按一定算法確定將CPU分配給哪個(gè)進(jìn)程和分配多長(zhǎng)時(shí)價(jià)。
2.進(jìn)程調(diào)度方式
進(jìn)程調(diào)度方式是指有優(yōu)先數(shù)更高的進(jìn)程進(jìn)人就緒隊(duì)列時(shí),如何分配CPU,一般包括剝奪方式和非剝奪方式兩種調(diào)度方式
3.進(jìn)程調(diào)度算法
(1)先來先服務(wù)算法FCFS。該算法按照進(jìn)程進(jìn)入就緒隊(duì)列的先后順序來選擇二即每當(dāng)進(jìn)行進(jìn)程調(diào)度時(shí).總是把就緒隊(duì)列的隊(duì)首進(jìn)程投人運(yùn)行二
(2)時(shí)間片輪轉(zhuǎn)算法。這主要是分時(shí)系統(tǒng)中使用的一種調(diào)度算法。其基本思想是:將CPU的處理時(shí)間劃分成一個(gè)個(gè)時(shí)間片,就緒隊(duì)列中的諸進(jìn)程輪流運(yùn)行一個(gè)時(shí)間片。當(dāng)時(shí)間片結(jié)束時(shí),就強(qiáng)迫運(yùn)行進(jìn)程讓出CPU,該進(jìn)程進(jìn)人就緒隊(duì)列,等待下一次調(diào)度。同時(shí),進(jìn)程調(diào)度又去選擇就緒隊(duì)列中的另一個(gè)進(jìn)程,分配給它一個(gè)時(shí)間片,以投人運(yùn)行。
影響時(shí)間片大小設(shè)置的主要因素有:系統(tǒng)響應(yīng)時(shí)間、就緒進(jìn)程數(shù)目(終端數(shù)目)和一計(jì)一算機(jī)處理能力。
(3)優(yōu)先級(jí)算法進(jìn)程調(diào)度每次將處理機(jī)分配給具有優(yōu)先級(jí)的就緒進(jìn)程,進(jìn)程的優(yōu)先級(jí)由進(jìn)程優(yōu)先數(shù)決定
進(jìn)程優(yōu)先數(shù)的設(shè)置可以是靜態(tài)的,也可以是動(dòng)態(tài)的。
優(yōu)先數(shù)算法又可與不同的C1'U方式結(jié)合起來,形成可剝奪式優(yōu)先數(shù)算法和不可剝奪式優(yōu)先數(shù)算法。
考點(diǎn)12死鎖
1.死鎖的概念
死鎖是指在多道程序系統(tǒng)中,兩個(gè)或兩個(gè)以上的進(jìn)程無限期地等待永遠(yuǎn)不會(huì)發(fā)生的事件,得不到所需資源因而不能運(yùn)行的狀態(tài)處于死鎖狀態(tài)的進(jìn)程稱為死鎖進(jìn)程。
死鎖產(chǎn)生的原因:一是系統(tǒng)資源不足;二是多道程序運(yùn)行時(shí),進(jìn)程的推進(jìn)順序不合理。
2.產(chǎn)生死鎖的必要條件
(1)互斥條件。進(jìn)程互斥使用資源,任一時(shí)刻一個(gè)資源只為一個(gè)進(jìn)程獨(dú)占,其他進(jìn)程若請(qǐng)求一個(gè)已被占用的資源,只能等占用者釋放后才能使用
(2)不可剝奪條件(不可搶rt1-)。進(jìn)程所獲得的資源在未使用完畢之前,不能被其他進(jìn)程強(qiáng)行剝奪,而只能由獲得該資源的進(jìn)程自己釋放
(3)部分分配(占有等待)。進(jìn)程每次申請(qǐng)它所需要的一部分資源,在申請(qǐng)新的資源的同時(shí),繼續(xù)占用已分配到的資源。
(4)循環(huán)等待:存在一個(gè)進(jìn)程環(huán)路,環(huán)路中每一個(gè)進(jìn)程已獲得的資源同時(shí)被下一個(gè)進(jìn)程所請(qǐng)求。
3.資源分配圖
死鎖問題可用一個(gè)有向圖來表示。資源分配圖就是描述進(jìn)程、資源及它們之間關(guān)系的有向圖。當(dāng)進(jìn)程請(qǐng)求資源時(shí),系統(tǒng)檢查并發(fā)進(jìn)程組是否構(gòu)成資源的請(qǐng)求環(huán)路。存在環(huán)路,可能存在死鎖;不存在環(huán)路,一定沒有死鎖。
4.死鎖預(yù)防
只要破壞死鎖產(chǎn)生的4個(gè)必要條件之一,就可有效避免死鎖的產(chǎn)生,主要有以下幾種方法:
(1)破壞互斥條件
(2)破壞不可剝奪條件。
(3)破壞部分分配條件二
(4)破壞循環(huán)等待條件
5.死鎖解除
當(dāng)發(fā)現(xiàn)死鎖后,可采用以下兩種方法來解除死鎖:
(1)資源剝奪法。從一些進(jìn)程那里強(qiáng)行剝奪足夠數(shù)量的資源分配給死鎖進(jìn)程,以解除死鎖狀態(tài)
(2)撤銷進(jìn)程法。按照某種策略逐個(gè)地撤銷死鎖進(jìn)程,直到獲得為解除死鎖所需要的足夠使用的資源為按照什么原則撤銷進(jìn)程,實(shí)用而又簡(jiǎn)便的方法就是撤銷那些代價(jià)最小的進(jìn)程,或者撤銷進(jìn)程的數(shù)量最少。
考點(diǎn)13線程
1.線程的概念
線程是進(jìn)程中的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位
2.線程的屬性
(1)每個(gè)線程有一個(gè)的標(biāo)識(shí)符和一張線程描述表。
(2)不同的線程可以執(zhí)行相同的程序。
(3)同一級(jí)的進(jìn)程中的各個(gè)線程共享該進(jìn)程的地址空間。
(4)線程是處理器的獨(dú)立調(diào)度單位,多個(gè)線程是可以并發(fā)執(zhí)行的。
(5)一個(gè)線程被創(chuàng)建以后便開始了它的生命周期,直到終止。
3.線程與進(jìn)程的比較
線程與進(jìn)程的主要區(qū)別表現(xiàn)在以下幾個(gè)方面:
(1)調(diào)度。在傳統(tǒng)的操作系統(tǒng)中,擁有資源的基本單位和獨(dú)立調(diào)度、分派的基本單位只有進(jìn)程,而在引線程的操作系統(tǒng)中,則把線程作為調(diào)度和分派的基本單位,把進(jìn)程作為資源擁有的基本單位,使傳統(tǒng)進(jìn)程兩個(gè)屬性分開,從而使線程能輕裝運(yùn)行,這樣可以顯著地提高系統(tǒng)的并發(fā)程度。在同一進(jìn)程中,線程的切換不會(huì)引起進(jìn)程切換,在由一個(gè)進(jìn)程中的線程切換到另一進(jìn)程中的線程時(shí),將會(huì)引起進(jìn)程切換。
(2)并發(fā)性在引人線程的操作系統(tǒng)中,不僅進(jìn)程之間可以并發(fā)執(zhí)行,而且在一個(gè)進(jìn)程中的多個(gè)線程之也可以并發(fā)執(zhí)行,因而使操作系統(tǒng)具有更好的并發(fā)性,從而能更有效地使用系統(tǒng)資源和提高系統(tǒng)的吞吐。在引入了線程的操作系統(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í),第3個(gè)線程可以繼續(xù)執(zhí)行,從而顯著地高了文件服務(wù)的質(zhì)量及系統(tǒng)的吞吐量C
(3)擁有資源不論是傳統(tǒng)的操作系統(tǒng),還是設(shè)有線程的操作系統(tǒng),進(jìn)程都是擁有資源的一個(gè)獨(dú)立單位。一般地說,線程自己不擁有系統(tǒng)資源(也有一點(diǎn)兒必不可少的資源),但它可以訪問其隸屬進(jìn)程的資源,即一個(gè)進(jìn)程的代碼段、數(shù)據(jù)段及系統(tǒng)資源(如已打開的文件、1/0設(shè)備等),可供同一個(gè)進(jìn)程的其他所有線共享
(4)系統(tǒng)開銷。由于在創(chuàng)建或撤銷進(jìn)程時(shí),系統(tǒng)都要為之分配或回收資源,如內(nèi)存空間、1/0設(shè)備等。因此操作系統(tǒng)所付出的開銷將顯著地大于在創(chuàng)建或撤銷線程時(shí)的開銷。類似地,在進(jìn)行進(jìn)程切換時(shí),涉及到整個(gè)當(dāng)前進(jìn)程CPU環(huán)境的保存及新近被調(diào)度運(yùn)行的進(jìn)程的CPU環(huán)境的設(shè)置。而線程切換只需保存和設(shè)置少量寄存器的內(nèi)容,并不涉及存儲(chǔ)器管理方面的操作??梢?,進(jìn)程切換的開銷也遠(yuǎn)大于線程切換的開銷。