在linux中,rpc是遠端過程呼叫的意思,是Reomote Procedure Call的縮寫,特指一種隱藏了過程呼叫時實際通訊細節的IPC方法;linux中透過RPC可以充分利用非共享記憶體的多處理器環境,提高系統資源的使用率。
本教學操作環境:linux7.3系統、Dell G3電腦。
RPC:(Reomote Procedure Call) 遠端程序呼叫
RPC(Remote Procedure Call)中文全稱為遠端過程調用,在Linux裡有個rpcbind軟體,是rpc的一個簡單應用例子,是和網絡存儲NFS相關的軟體,用戶要想找到NFS存儲,必須通過先訪問RPCBIND才行。
特別指一種隱藏了過程呼叫時實際通訊細節的IPC方法。客戶端將呼叫一個本地方法,而這個本地方法則是負責透明的與遠端服務端進行過程間通訊。這個本地方法會講相關參數順序打包到一個訊息中,然後把這個訊息發送給服務端提供的方法,服務端的方法會從訊息中解出序列化發出來的參數,然後執行,最後仍以同樣的方式將方法的回傳值傳送給客戶端。
透過RPC我們可以充分利用非共享記憶體的多處理器環境(例如透過區域網路連接的多台工作站),這樣可以簡單地將你的應用程式分佈在多個工作站上,應用程式就像運行在一個多處理器的計算機上一樣。你可以方便的實現過程程式碼共享,提高系統資源的使用率,也可以將以大量數值處理的操作放在處理能力較強的系統上運行,從而減輕前端機的負擔。
擴充知識:
IPC:(Inter Process Communication )跨進程通訊
這個概念泛指進程之間任何形式的溝通行為,是個可以拿來到處套的術語。它不僅包括各種形式的訊息傳遞,還可以指共享資源,以及同步對象[mutex 或其他類似的東西,即確保安全的並發訪問共享資源(也就是防止兩個或兩個以上的對象同事對同一個資料成員進行修改,從而導致資料被破壞,或競爭條件下同事讀/寫資料而導致錯誤的情況發生)]的東西。
LPC(Local Procedure Call)
LPC是「本地程序呼叫(Local Procedure Call)」的縮寫。所謂「本地過程呼叫」是與「遠端過程呼叫」即RPC相對而言的。 RPC是廣義的,RPC可以發生在不同的主機之間,也可以發生在同一台主機上,發生在同一台主機上就是LPC。所以在Unix語境下就沒有LPC這一說,即使發生在同一台主機上也稱為RPC。
在歷史上,RPC是「開放軟體基金會(OSF)」設計和提出的一種用以實現「Unix分佈計算環境(Unix DCE)」的標準。實際上,微軟的DCOM技術,就是建立在RPC基礎上的。 Win2000的RPC可以採用TCP/IP、SPX、NetBIOS、命名管道、以及「本地」作為底層的通訊手段,這「本地」就是LPC。
另一方面,Windows是一個帶有許多微核心系統特徵的作業系統(儘管它的核心不是微核心),系統中有不少「系統級」的服務進程,例如大家已經熟知的csrss、管理用戶登入的「本地安全認證服務」進程LSASS等等,用戶進程以及微軟提供的系統工具軟體經常需要呼叫由這些服務進程提供的服務,這裡LPC就起著重要的作用。
LPC的基礎是一種稱為「連接埠(Port)」的進程間通訊機制,類似於本地的(Unix域的)Socket。這種Port機制提供了面向封包傳遞(message passing)的進程間通信,而LPC則是建立在這個基礎上的高層機制,目的是提供跨進程的過程呼叫。注意這裡所謂「跨進程的過程呼叫」不同於以前所說的「跨進程操作」。前者是雙方有約定、遵循一定規程的、有控制的服務提供,被調用者在向外提供一些什麼服務、即提供哪些函數調用方面是自主的,而後者則可以是在不知不覺之間的被利用、被操縱。前者是良性的,而後者可以是惡性的。
相關推薦:《Linux影片教學》
以上是linux中rpc是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!