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ù)運行;③若S<0,則調(diào)用P(S)的進(jìn)程被阻塞,并把它插入到等待信號量S的阻塞隊列中。
V(S):①S:=S+1;②若S>0,則調(diào)用V(S)的進(jìn)程繼續(xù)運行;③若S≤0,則從等待信號量S的阻塞隊列中喚醒頭一個進(jìn)程,然后調(diào)用V(S)的進(jìn)程繼續(xù)運行。
如何利用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ù)運行。②帶中斷的非阻塞發(fā)送,即當(dāng)消息發(fā)送完成后,中斷發(fā)送進(jìn)程,通知發(fā)送進(jìn)程此時緩沖區(qū)可用。
8.在進(jìn)程間通信如何保證消息不會丟失?
為了保證消息被對方收到,可采用可靠原語。具體作法是:客戶向服務(wù)器方發(fā)一請求后,服務(wù)器對這一請求,由其內(nèi)核向客戶內(nèi)核返回一個確認(rèn)ACK,當(dāng)客戶內(nèi)核收到這一消息后,就喚醒客戶進(jìn)程。在客戶與服務(wù)器之間的請求/應(yīng)答共需四個消息:①從客戶向服務(wù)器的請求②從服務(wù)器內(nèi)核向客戶內(nèi)核返回一個確認(rèn)③從服務(wù)器到客戶的應(yīng)答④從客戶的內(nèi)核向服務(wù)器內(nèi)核返回一個確認(rèn)。
9.遠(yuǎn)程過程調(diào)用:在網(wǎng)絡(luò)或分布式系統(tǒng)中,設(shè)有任意兩個節(jié)點A、B,節(jié)點A上的進(jìn)程調(diào)用節(jié)點B上的一個進(jìn)程時,節(jié)點A上的進(jìn)程被掛起,在節(jié)點B上執(zhí)行被調(diào)用的過程,消息以參數(shù)的形式從調(diào)用進(jìn)程傳送到被調(diào)用進(jìn)程,并將被調(diào)用過程執(zhí)行的結(jié)果返回給調(diào)用進(jìn)程。這種通信方式稱為遠(yuǎn)程過程調(diào)用。
其基本原理是什么?
允許某一節(jié)點上的程序調(diào)用其他節(jié)點上的過程或函數(shù)。例如節(jié)點機(jī)A上的進(jìn)程調(diào)用節(jié)點機(jī)B上的過程,節(jié)點機(jī)A的調(diào)用進(jìn)程被掛起,在節(jié)點機(jī)B上執(zhí)行被調(diào)用過程。消息以參數(shù)的形式從調(diào)用過程傳到被調(diào)用過程,被調(diào)用過程執(zhí)行的結(jié)果再返回給調(diào)用過程。對程序員來說,他看不到消息傳遞過程和I/O處理過程。
10.RPC的透明性指的是什么?
指的是要使得遠(yuǎn)程過程調(diào)用盡可能像本地調(diào)用一樣。調(diào)用過程應(yīng)該不知道被調(diào)用過程是在另外一臺計算機(jī)上執(zhí)行,反過來也是如此,被調(diào)用過程也不應(yīng)該知道是由哪個機(jī)器上的進(jìn)程調(diào)用的。如何保證這一透明性:遠(yuǎn)程過程調(diào)用為實現(xiàn)其透明性,在客戶機(jī)上設(shè)置一個客戶代理,同樣在服務(wù)器機(jī)上設(shè)置一個服務(wù)器代理。
11.簡述遠(yuǎn)程過程調(diào)用的步驟。
①客戶過程以通常方式調(diào)用客戶代理。②客戶代理構(gòu)造一個消息并陷入內(nèi)核。③本地內(nèi)核發(fā)送消息給遠(yuǎn)程內(nèi)核。④遠(yuǎn)程內(nèi)核把消息送給服務(wù)器代理。⑤服務(wù)器代理從消息包中取出參數(shù)并調(diào)用服務(wù)器。⑥服務(wù)器完成相應(yīng)的服務(wù),將結(jié)果送給服務(wù)代理。⑦服務(wù)代理將結(jié)果打包形成一個消息并陷入內(nèi)核。⑧遠(yuǎn)程內(nèi)核發(fā)送消息給客戶機(jī)內(nèi)核。⑨客戶機(jī)內(nèi)核把消息傳送給客戶代理。⑩客戶代理取出結(jié)果,返回給客戶的調(diào)用程序。并以實例說明。
12.試說明遠(yuǎn)程過程調(diào)用的優(yōu)缺點。
優(yōu)點:格式化好、使用方便、透明性好;
缺點:缺乏靈活性。
在具體實現(xiàn)上尚有哪些難點需要解決?
①遠(yuǎn)程過程調(diào)用的參數(shù)在系統(tǒng)內(nèi)不同機(jī)型之間的通用能力有所不足。②缺乏在一次調(diào)用過程中多次接收返回結(jié)果的能力。③遠(yuǎn)程過程調(diào)用缺乏傳送大量數(shù)據(jù)的能力。
13.什么叫組通信?
在網(wǎng)絡(luò)系統(tǒng)中,一個相互作用的進(jìn)程集合稱為組。一個發(fā)送者在一次操作中將一個消息發(fā)送給多個接收者的通信,稱為組通信。
它應(yīng)用于何種場合?在網(wǎng)絡(luò)系統(tǒng)中可以采用組通信方式。
組通信的主要特征是?當(dāng)一個消息發(fā)送給這個組時,該組的所有成員都可以接收,組通信具有“一對多”的形式,即一個發(fā)送者,多個接收者。
組通信的實現(xiàn)?組通信的實現(xiàn)在很大程度上依賴于硬件。在一些網(wǎng)絡(luò)系統(tǒng)中,可以為組指定一個特殊的網(wǎng)絡(luò)地址??刹捎枚嗖ナ?、廣播式、單播式。