Architecture
Introduction to chromium architecture
At a high level, chromium is made of:
- the browser part (the main window)
- the renderer part (doing the actual web page rendering in each tab)
The browser
The browser is the top level browser window. It is in charge of the overall UI. The browser relies on the renderer to display web pages in each tab.
The renderer
The renderer renders a web page in its tab.
It notably uses:
- A web rendering engine: Blink (forked from Webkit)
- A javascript engine: v8
Multiprocess architecture
Chromium is inspired by modern Operating Systems. Web pages, plugins and other parts of the browser are hosted in different processes. Process separation insures:
- Stability / Reliability : if a web page or plug in hangs or crashes, the full browser still continues to run.
- Security : Sandboxing (of web pages or plugins) can rely on native process security / access rights mechanisms.
Hence, the following parts of chromium can run in different processes, depending on the target platform:
- The browser process (1): the top level window and UI has its own specific process. The Browser / UI relies on te renderer processes to display/run web pages.
- The renderer processes (1..N): the renderer is in charge of one or several tabs (web pages). If the component hangs or crashes, the top browser or other pages can still continue to run.
- The GPU process: actual 2D/3D compositing is delegated to a specific GPU process. Hence, it is possible to optimise display and recover when a GPU issue occurs.
- The Plug-in processes / external components process: external components (shockwave / flash, other) run in their own dedicated process.
In practice, the multiprocess architecture is not fully implemented on all architectures.
- On Windows, the chrome / chromium browser typically uses the full process separation
- On Android, the Webview component uses a single process in older implementations.