Architecture
Introduction à l'architecture de chromium
A haut niveau, chromium est composé:
- du composant browser (la fenêtre principale)
- du composant renderer (en charge du rendu des pages web dans chaque onglet)
Le navigateur ('browser')
Le composant 'browser' peut être relié à la fenêtre principale. Il est en charge de l'interface utilisateur globale. Il s'appuie sur le 'renderer' pour afficher les pages web dans chaque onglet.
Le composant de rendu ('renderer')
Le composant 'renderer' est en charge de chaque page web affichée dans un onglet du navigateur.
Il utilise notamment:
- Un moteur de rendu web: Blink ('fork' du code source de Webkit, adapté pour les besoins de chromium)
- Un moteur javascript: v8
L'architecture multi-processus
Chromium s'inspire d'un système d'exploitation. Les pages web et autres composants du navigateur s'executent dans des processus séparés. Cela permet d'assurer:
- La stabilité et fiabilité : si une page web, un plug, le pilote graphique... bloque ou crashe, le navigateur continue à s'executer.
- La sécurité : l'isolation en 'bac à sable' peut s'appuyer sur les mécanismes natifs des processus système pour assurer l'isolation et la gestion des droits d'accès.
Ainsi, les éléments suivant de Chromium peuvent s'executer dans des processus différents, en fonction de la plateforme (Windows, Android, etc):
- Le processus navigateur ('browser') (1): L'application et son interface graphique principale. L'application utilise les processus de rendu ('renderer') pour afficher / executer les pages web.
- Le processus de rendu ('renderer') (1..N): Le 'renderer' est en charge des pages web affiché dans un ou plusieurs onglets. Si ce composant se bloque ou crashe, le navigateur principal et les autres onglets continuent à s'executer.
- Le process GPU: la rendu graphique 2D/3D est délégué à un processus spécifique, qui s'appuie sur la carte graphique et son processeur graphique (GPU). Cela permet d'optimiser la vitesse d'affichage graphique, et de rétablir le fonctionnement lorsqu'un problème GPU se produit (crash du pilote, etc).
- Les processus Plug-in ou liés aux composants externes: les composants externes s'executent dans un processus dédié, afin que des instabilité ou problèmes de sécurité spécifiques à ces composants n'impactent pas directement le navigateur.
En pratique, l'architecture multi-processus n'est pas complètement mise en oeuvre sur toutes les plateformes / architectures.
- Sur Windows, le navigateur chrome / chromium utilise pleinement la séparation des processus.
- Sur Android, le composant Webview utilise un processus unique sur les implémentations les plus anciennes.