Architecture du navigateur Chrome

Architecture de navigateur commune

Il peut s'agir d'un processus comportant de nombreux threads différents ou d'un processus comportant plusieurs threads communiquant via IPC.

Un processus avec de nombreux threads différents

                        image.png

Processus de plusieurs threads communiquant via IPC

                            image.png

Attention

Ces différentes architectures sont des détails d'implémentation. Il n'y a pas de spécification standard sur la façon de créer un navigateur Web. Une méthode de navigation peut être complètement différente d'une autre

 

Architecture du navigateur Chrome

 Architecture du site officiel de Chrome (18 ans)

                        image.png

 Dernier diagramme d'architecture de Chrome (19 ans)

image.png

Avantages et inconvénients du modèle multi-processus

Avantage

  • Stabilité, un crash de page n'affectera pas les autres pages, car différents processus de rendu sont utilisés
  • Sécurité et sandboxing, le navigateur peut sabler certains processus à partir de certaines fonctions. Par exemple, le navigateur Chrome restreint tout accès aux fichiers aux processus qui traitent toute entrée utilisateur, tels que les processus de rendu.

Inconvénients

  • Utilisation accrue des ressources. Étant donné que chaque processus contiendra une copie de l'infrastructure commune (comme V8, qui est le moteur JavaScript de Chrome), cela signifie que le navigateur consommera plus de ressources mémoire.
  • Architecture plus complexe. Problèmes tels qu'un couplage élevé et une faible évolutivité entre les modules du navigateur

 

Architecture orientée services

Afin de résoudre une série de problèmes provoqués par l'architecture précédente, dès 2016, l'équipe officielle de Chrome a utilisé le concept d '«architecture orientée services» (SOA) pour concevoir une nouvelle architecture Chrome. Les différents modules d'origine seront reconstruits en services indépendants (Service). Les services d'accès (Service) doivent utiliser une interface définie pour communiquer via IPC. Chaque service (Service) peut s'exécuter dans un processus distinct et Divisez facilement en différents processus ou agrégez en un seul processus. Lorsque Chrome s'exécute sur un matériel puissant, il peut diviser chaque service en différents processus pour offrir une plus grande stabilité, mais s'il se trouve sur un appareil à ressources limitées, Chrome intégrera les services en un seul. Afin d'économiser de la mémoire.

Diagramme officiel de l'architecture du service du site Web (18 ans)

image.pngDiagramme du modèle de processus "architecture orientée service" de Chrome (le plus récent)

image.png

Diagramme du modèle de processus de "l'architecture orientée service" de Chrome (sur les appareils à ressources limitées)image.png

Processus Chrome

Processus principal

Processus du navigateur, processus de rendu, processus GPU, processus réseau, processus de plug-in

 

  • Processus du navigateur

Principalement responsable de l'affichage de l'interface, de l'interaction avec l'utilisateur, de la gestion des sous-processus, tout en assurant le stockage et d'autres fonctions. Contrôle la partie "chrome" de l'application, y compris la barre d'adresse, les signets, les boutons Précédent et Suivant, et gère également les parties invisibles et privilégiées du navigateur Web, telles que les requêtes réseau et l'accès aux fichiers.

  • Processus de rendu

La tâche principale consiste à convertir HTML, CSS et JavaScript en pages Web avec lesquelles les utilisateurs peuvent interagir. Le moteur de composition Blink et le moteur JavaScript V8 sont tous deux en cours d'exécution dans ce processus. Par défaut, Chrome créera un processus de rendu pour chaque balise Tab. Pour des raisons de sécurité, le processus de rendu s'exécute en mode sandbox.

  • Processus GPU

En fait, lorsque Chrome a été publié pour la première fois, il n'y avait pas de processus GPU. L'intention initiale d'utiliser le GPU est d'obtenir l'effet du CSS 3D. Après cela, la page Web et l'interface de Chrome UI ont choisi d'utiliser le GPU pour dessiner, ce qui fait du GPU une demande courante des navigateurs. Enfin, Chrome a également introduit des processus GPU sur son architecture multi-processus.

  • Processus réseau

Il est principalement responsable du chargement des ressources réseau de la page. Il était auparavant exécuté en tant que module dans le processus du navigateur. Ce n'est que récemment qu'il est devenu indépendant et est devenu un processus distinct.

  • Processus de plugin

Il est principalement responsable du fonctionnement du plug-in. Comme le plug-in est facile à planter, il doit être isolé par le processus du plug-in pour garantir que le processus du plug-in n'affectera pas le navigateur et la page.

  • processus utilitaire

Parfois, le processus principal du navigateur doit faire des choses "dangereuses", comme le décodage d'images et la décompression de fichiers. Si ces opérations "dangereuses" échouent, cela entraînera un crash anormal de l'ensemble du processus principal, que nous ne voulons pas voir. Chromium a donc conçu un mécanisme pour le processus d'utilité. Lorsque le processus principal doit temporairement effectuer des tâches incommodes, vous pouvez démarrer un processus utilitaire pour remplacer le processus principal. Le processus principal et le processus utilitaire communiquent via des messages IPC.

S'il existe actuellement d' autres processus dans l'environnement avec des ressources suffisantes ,

  • Processus de l'interface utilisateur
  • Processus stocké
  • Processus de l'appareil
  • Processus audio
  • Processus vidéo
  • Processus de profil
  • ........

Développement

Compte tenu de la complexité de l'architecture actuelle, on estime qu'il faudra plusieurs années pour achever la transition vers une architecture orientée services. Cependant, le développement de Chrome est un processus progressif, et de nouvelles fonctionnalités seront ajoutées un peu, ce qui signifie également que nous pouvons toujours voir de nouveaux changements dans Chrome.

Attention

⚠️ Le dernier navigateur Chrome est actuellement sur une architecture orientée services, nous pouvons ouvrir le gestionnaire de tâches Chrome pour y jeter un œil

image.png

Lien de référence

Principe de fonctionnement et temps de Geek Time Browser

Site officiel de Chrome  https://developers.google.com/web/updates/2018/09/inside-browser-part1

Je suppose que tu aimes

Origine www.cnblogs.com/suihang/p/12718528.html
conseillé
Classement