1.什么叫同步?
相互合作的兩個進(jìn)程之間需要在某個(些)確定點協(xié)調(diào)它們的工作,一個進(jìn)程到達(dá)了該點后,除非另一進(jìn)程已經(jīng)完成了某些操作,否則就不得不停下來,等待這些操作的完成。這就是進(jìn)程間的同步。
什么叫互斥?
兩個進(jìn)程由于不能同時使用同一臨界資源,只能在一個進(jìn)程使用完了,另一進(jìn)程才能使用,這種現(xiàn)象稱為進(jìn)程間的互斥。
、偻降闹饕卣魇牵阂粋進(jìn)程在某一點上等待另一進(jìn)程提供信息,兩進(jìn)程之間存在直接制約關(guān)系,其表現(xiàn)形式為進(jìn)程—進(jìn)程。②互斥的主要特征是爭用資源,兩進(jìn)程間存在間接制約關(guān)系,其表現(xiàn)形式是進(jìn)程—資源—進(jìn)程。
2.試給出P、V操作的定義。
P、V操作是定義在信號量S上的兩個操作,其定義如下:
P(S):①S:=S-1;②若S≥0,則調(diào)用P(S)的進(jìn)程繼續(xù)運(yùn)行;③若S<0,則調(diào)用P(S)的進(jìn)程被阻塞,并把它插入到等待信號量S的阻塞隊列中。
V(S):①S:=S+1;②若S>0,則調(diào)用V(S)的進(jìn)程繼續(xù)運(yùn)行;③若S≤0,則從等待信號量S的阻塞隊列中喚醒頭一個進(jìn)程,然后調(diào)用V(S)的進(jìn)程繼續(xù)運(yùn)行。
如何利用P、V操作實現(xiàn)進(jìn)程間的互斥?
P、V操作是解決同步與互斥問題的有力工具。為解決互斥問題,應(yīng)采取如下步驟: 首先根據(jù)給定問題的描述,列出各進(jìn)程要執(zhí)行的程序。其次,設(shè)置信號量。互斥問題中,在臨界區(qū)前面加P(S),臨界區(qū)后面加V(S)。最后確定信號量的初值。在互斥問題中,信號量通常取為互斥資源的個數(shù)。
說明信號量的物理意義:
信號量S>0時,S的數(shù)值表示某類可用資源的數(shù)目,執(zhí)行P操作意味著申請分配一個單位的資源;當(dāng)S≤0時,表示無資源可用,此時S的絕對值表示信號量S的阻塞隊列中的進(jìn)程數(shù)。執(zhí)行V操作意味著釋放一個單位的資源。
3.如何利用P、V操作實現(xiàn)進(jìn)程間的同步?
P、V操作是解決同步與互斥問題的有力工具。為解決同步問題,應(yīng)采取如下步驟:首先根據(jù)給定問題的描述,列出各進(jìn)程要執(zhí)行的程序。其次,設(shè)置信號量。同步問題中有幾個同步點就設(shè)置幾個信號量,等待的地方加P(S),發(fā)信號(解除等待)的
地方加V(S)。最后確定信號量的初值。在同步問題中,信號量的初值一般取0.在同步和互斥中,信號量初值的設(shè)置有何不同:在同步問題中,信號量的初值一般取為0,在互斥問題中,信號量通常取為互斥資源的個數(shù)。
4.高級通信原語有何優(yōu)點?
能夠?qū)崿F(xiàn)在進(jìn)程之間傳遞大量的信息。
在消息緩沖通信方式中,發(fā)送原語和接收原語的主要功能是什么?
發(fā)送原語的作用:將欲發(fā)送的消息從發(fā)送區(qū)復(fù)制到消息緩沖區(qū),并把它掛起在接收進(jìn)程的消息緩沖隊列末尾。如果該接收進(jìn)程因等待消息而處于阻塞狀態(tài),則將其喚醒。
接收原語的作用:把發(fā)送者發(fā)來的消息從消息緩沖區(qū)復(fù)制到接收區(qū),然后將消息緩沖區(qū)從消息隊列中消去,如果沒有消息可以接收,則進(jìn)入阻塞狀態(tài)。
5.什么是信箱?
信箱用于存放信件,而信件是一個進(jìn)程發(fā)送給另一進(jìn)程的消息。
信箱的數(shù)據(jù)結(jié)構(gòu):信箱頭和信箱體。信箱頭是信箱的描述部分,信箱體由若干格子組成,每個格子可存放一個信件。
信箱頭包括的信息:①信箱名②信箱大小③已存信件數(shù)④空的格子數(shù)。
如何用信箱實現(xiàn)兩個進(jìn)程之間的通信?
進(jìn)程A想向進(jìn)程B發(fā)送消息前,先把消息組成一封信件,然后調(diào)用send原語向進(jìn)程B發(fā)送信件,并將信件投入進(jìn)程B的信箱中。進(jìn)程B為得到進(jìn)程A的消息,只要調(diào)用receive原語就可以從信箱中索取來自進(jìn)程A的信件。這就完成了一次進(jìn)程A到進(jìn)程B的通信過程。
6.在網(wǎng)絡(luò)操作系統(tǒng)中,為什么要采用消息傳遞的通信機(jī)制?
基于共享變量的通信方式適用于網(wǎng)絡(luò)中各節(jié)點內(nèi)部諸進(jìn)程之間的通信,而基于消息傳遞的通信方式適用于網(wǎng)絡(luò)中各節(jié)點之間的進(jìn)程通信。
在消息傳遞的通信機(jī)制中有哪些通信方式?①通信原語 ②遠(yuǎn)程過程調(diào)用 ③組通信。
7.什么是同步原語?
當(dāng)一個進(jìn)程調(diào)用一個send原語時,在消息開始發(fā)送后,發(fā)送進(jìn)程便處于阻塞狀態(tài),直至消息完全發(fā)送完畢,send原語的后繼語句才能繼續(xù)執(zhí)行。當(dāng)一個進(jìn)程調(diào)用一個receive原語時,并不立即返回控制,而是等到把消息實際接收下來,并把它放入指定的接收區(qū),才返回控制,繼續(xù)執(zhí)行該原語的后繼指令。在這段時間它一直處于阻塞狀態(tài)。上述的send和receive被稱為同步通信原語或阻塞通信原語。
什么是異步原語?發(fā)送進(jìn)程在調(diào)用send原語后,并不進(jìn)入阻塞狀態(tài),它不等消息發(fā)送完就繼續(xù)執(zhí)行其后繼語句。
在使用異步通信原語時,發(fā)送者在消息發(fā)送完成前為什么不能使用緩沖區(qū)?
因為倘若發(fā)送進(jìn)程在消息發(fā)送完成之前,即在消息發(fā)送期間使用或修改原來的緩沖區(qū),將會造成錯誤。
如何解決?
有兩種辦法(應(yīng)采用異步原語):①采用帶拷貝的非阻塞原語,即讓內(nèi)核把消息拷貝到內(nèi)核緩沖區(qū),允許調(diào)用進(jìn)程繼續(xù)運(yùn)行。②帶中斷的非阻塞發(fā)送,即當(dāng)消息發(fā)送完成后,中斷發(fā)送進(jìn)程,通知發(fā)送進(jìn)程此時緩沖區(qū)可用。