1. 程式人生 > >計算機作業系統讀書筆記___直接程序間通訊

計算機作業系統讀書筆記___直接程序間通訊

一、程序間通訊

1.1 概念

在程序之間通訊時,源程序可以直接或間接地將訊息傳送給目標程序,因此可將程序通訊分為直接和間接兩種通訊方式。

1.2 直接訊息傳遞系統

send()/recieve()函式族。在程序之間進行通訊時,同樣需要有程序同步機制,以使諸程序之間能協調通訊。有以下三種情況:①傳送程序阻塞,接收程序阻塞;②傳送程序不阻塞,接收程序阻塞;③傳送程序和接收程序均阻塞。

我學習的時候就很費解,尤其是對於①的說明,覺得很奇怪啊,二者都阻塞如何向前推進呢?原來我理解錯了,是這樣的:在程序的阻塞事件中有這樣的一類事件——等待新任務的到達。在網路環境中的傳送程序,主要任務是傳送資料包,若已有的資料包已經全部發送完成,而有無新的資料包傳送,這時傳送程序將把自己阻塞起來;僅當有新的資料包到達時,才將傳送程序喚醒。同樣地,接收程序阻塞也是大同小異。我才能較好地理解發送程序和接收程序同時阻塞到底是怎麼回事。

1.3 程序同步機制應遵循的原則

  • 空閒讓進:當無程序處於臨界區時,表明臨界資源處於空閒狀態,應允許一個請求進入臨界區的程序立即進入自己的臨界區,以有效地利用資源。
  • 忙則等待:當已有程序進入臨界區,表明臨界資源正在被訪問,因而其它試圖進入臨界區的程序必須等待,以保證對臨界資源的互斥訪問。
  • 有限等待:對要求訪問臨界區資源的程序,應保證在有限的時間內能進入自己的臨界區,以免陷入“死鎖”狀態。
  • 讓權等待:當程序不能進入自己的臨界區時,應立即釋放處理機,以免程序陷入“忙等”狀態。有很多時候並不滿足!