浏览器架构演进
1.单进程架构:所有模块运行在同一个进程里,包含网络、插件、JavaScript运行环境等
2.多进程架构:主进程、网络进程、渲染进程、GPU进程、插件进程
3.面向服务架构:将原来的UI、数据库、文件、设备、网络等.作为一个独立的基础服务
浏览器架构对比
单进程架构
扩展性:低,所有模块运行在同一进程里访问同一块内存区域,数据没有隔离,新增模块可能会影响原有功能
安全性:低,三方插件可直接访问操作系统里任意资源
稳定性:低,三方插件漏洞或者某个tab页面Javascript脚本问题可能导致浏览器崩溃
流畅度:卡顿,所有页面运行在同一进程中,开启多个页面时明显卡顿
多进程架构
扩展性:中,各进程分配独立的内存区域,有些进程功能较大,耦合度高
安全性:高,运行在独立沙箱中,不能访问系统敏感资源
稳定性:高,进程相互隔离,当一个页面或者插件崩溃时,不会影响其他进程
流畅度:流畅,每个页面运行在独立的渲染进程中,充分利用系统资源
面向服务架构
扩展性:高,服务模块划分更细,更内聚。耦合性低,易于扩展
安全性:高,运行在独立沙箱中,不能访问系统敏感资源
稳定性:高,进程相互隔离,当一个页面或者插件崩溃时,不会影响其他进程
流畅度:流畅,每个页面运行在独立的渲染进程中,充分利用系统资源
浏览器架构-多进程分工
浏览器:主要负责页面展示逻辑,用户交互,子进程管理;包括地址栏.书签、前进、后退、收藏夹等
GPC进程:负责UI绘制,句含整个浏览器全部UI
网络进程:网络服务进程,辅助网络资源加载
标签页(渲染进程):控制tab内的所有内容,将Html、Css和JavaScript转换为用户可交互的网页
插件进程:控制网站运行的插件,比如flash、ModHeader等
插件进程:适用程序Storage/Network/Audio Service 等