浏览器架构演进
- 单进程架构:所有模块运行在一个进程,包含网络、插件、JavaScript运行环境等
- 多进程架构:主进程、网络进程、渲染进程、GPU进程、插件进程
- 面向服务架构:将原来的UI、数据库、文件、设备、网络等,作为一个独立的基础服务
早期的浏览器是单进程的架构;而多进程架构是现在的浏览器,目前大部分浏览器都是多进程架构,进程之间的相互独立的;面向服务架构也是一种多进程架构,可以说是他的一个升级版本
浏览器架构对比
浏览器架构从扩展性、安全性、稳定性、流畅性的对比
| 架构类型 | 扩展性 | 安全性 | 稳定性 | 流畅性 |
|---|---|---|---|---|
| 单进程架构 | 低,所有模块运行在同一进程里,访问同一块内存区域,数据没有隔离 | 低,第三方插件可直接访问操作系统里任意资源 | 低,三方插件漏洞或者JavaScript脚本容易导致浏览器崩溃 | 卡顿,所有页面运行在同一进程中 |
| 多进程架构 | 中,各进程分配独立的内存区域,有些进程功能较大,耦合度高 | 高,运行在独立沙箱中,不能访问系统敏感资源 | 高,进程相互隔离。当一个页面或者插件崩溃的时候,不会影响其他进程 | 流畅,每个页面运行在独立的渲染进程中,充分利用系统资源 |
| 面向服务架构 | 高,服务模块划分更细,更内聚、耦合性低,易于扩展 | 高,运行在独立沙箱中,不能访问系统敏感资源 | 高,进程相互隔离。当一个页面或者插件崩溃的时候,不会影响其他进程 | 流畅,每个页面运行在独立的渲染进程中,充分利用系统资源 |
浏览器架构
任务管理器
以chrome浏览器为例子,如何打开任务管理器:
打开任务管理器之后就可以看到浏览器的里面的进程,有GPU进程等,而这个标签页就是渲染的进程
多进程分工
每个进程都负责着不同的功能作用
渲染进程
常见浏览器内核
多线程架构
内部都是多线程实现,主要负责:
- 页面渲染
- 脚本执行
- 事件处理
- 网络请求