Google Chrome 「Multi-process」 架構(中)

researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

元件和介面(Components and interfaces)

在排版程序內:

  • RenderProcess:通過IPC與瀏覽器內對應的 RenderProcess 進行通訊。每一個排版程序,包含一個唯一的RenderProcess 物件。
  • RenderView 物件,聯繫著瀏覽器程序裡面的RenderView Host物件(通過RenderProcess)和WebKit排版引擎。RenderView 負責顯示每個分頁下的網頁以及彈出視窗。

在瀏覽器程序內:

  • Browser 物件負責顯示最上層的瀏覽器視窗。
  • RenderProcessHost 物件顯示單個瀏覽器的側邊 ↔ 排版程序的IPC連接(原文為:The RenderProcessHost object represents the browser side of a single browser ↔ renderer IPC connection)。
  • 每個排版程序僅有一個RenderProcessHost物件。
  • RenderViewHost 物件封裝與遠程RenderView 之間的通訊。同時負責RenderWidget物件的輸入和顯示。
  • 更多細節可以參考 How Chromium displays web pages

排版程序的共享

通常情況下。每頁新視窗或者是新分頁都將在新程序裡面打開。瀏覽器程序負責創建新程序,並引導它創建一個RenderView。有時候有必要讓分頁或者是視 窗共享排版線程。一個網頁應用開啟了一個新的視窗並採用同步實現進行通訊。例如:Javascript裡面的 window.open。在這種情況下,當我們創建一個新的視窗或者一個新的分頁。我們需要重用當前程序打開的視窗。我們還有一種策略:當創建程序的數量 太多的時候,我們會把新創建的分頁附加到已有的程序上。或者當用戶已經有一個程序打開了所需的地址。這個策略我們已經在in Process Models. 裡面描述過。

參考來源

Chrome 多進程架構

Related Posts


Comments are closed.