1. 历史浏览器是单进程的,会有很多问题:不稳定、不流畅和不安全,容易造成崩溃
2. 随着时代的发展,浏览器进入多进程时代
目前的多进程架构如下
- 浏览器进程。主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。
- 渲染进程。核心任务是将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中,默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。出于安全考虑,渲染进程都是运行在沙箱模式下。
- GPU 进程。其实,Chrome 刚开始发布的时候是没有 GPU 进程的。而 GPU 的使用初衷是为了实现 3D CSS 的效果,只是随后网页、Chrome 的 UI 界面都选择采用 GPU 来绘制,这使得 GPU 成为浏览器普遍的需求。最后,Chrome 在其多进程架构上也引入了 GPU 进程。
- 网络进程。主要负责页面的网络资源加载,之前是作为一个模块运行在浏览器进程里面的,直至最近才独立出来,成为一个单独的进程。
- 插件进程。主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。
以上每个进程独立完成属于自己的任务,这样一个进程崩溃了,不会影响别的进程,从而提高了浏览器的稳定性,安全性
总结:
1. 浏览器一开始是单进程(js,渲染,插件等都共用这一个进程的内存,当其中某一个环节出现问题,会影响整个进程,使浏览器崩溃)
2. 为了解决上面的问题,浏览器引入了多进程,多进程有:浏览器进程,渲染进程,插件进程;
后来浏览器细化之后,又把浏览器进程分为了:浏览器主进程,GPU进程和网络进程;
3. 进程与进程之间通过IPC机制通讯
4. 单个进程中,有多个线程,例如渲染进程中,js就是一个单线程
5. 多进程的好处是,一个进程崩溃,不会影响到其他进程