参考资料
CPU与GPU
电脑的核心是CPU与GPU
CPU
- CPU- Centeral Processing Unit
- CPU类似于计算机的大脑,可以处理许多不同的任务,并予以回应
GPU
- GPU - Graphics Processing Unit
- GPU跨多个核心处理一些简单的任务,它刚开始是为处理图片而生的。
application于CPU,GPU的关系
当我们在手机或电脑上开启一个应用的时候,CPU和GPU是驱动该应用程序的两个部件。通常,应用程序使用操作系统提供的机制在CPU和GPU上运行
Process(进程)与Thread(线程)
- 线程是不能单独存在的,它是由进程来启动和管理的。 进程中使用多线程并行处理能提升运算效率, 线程之间共享进程中的数据,进程中任意一个线程执行错误,会导致整个进程崩溃。
- 一个进程就是一个程序的运行实例。 当我们开启一个应用的时候,一个进程就会被创建。此时可能会创建线程来帮助它工作。同时操作系统会为进程提供一块内存,当关闭应用时,该进程消失,操作系统释放内存。
- 一个进程可以要求操作系统启动另一个进程来运行不同的任务,进程之间的内容相互隔离,会有独立的内存,如果两个进程间需要通信的话使用IPC(Inter Process Communication)。
- 应用启动时,如果一个进程中断,可以在关闭整个应用的情况下重新启动该进程(浏览器一个窗口崩溃时,只需关闭当前窗口,不需要将浏览器整体关闭)。
Chrome多进程框架
最新的 Chrome 浏览器包括:1 个浏览器(Browser)主进程、1 个 GPU 进程、1 个网络(NetWork)进程、多个渲染进程和多个插件进程。
- 浏览器主进程(Browser Process) 主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。控制地址栏,书签,后退或前进按钮,还处理不可见部分如文件访问等
- 渲染进程(Render Process)。将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中。出于安全考虑,渲染进程都是运行在沙箱模式下。
- GPU 进程(GPU Process)。主要用于 UI 界面的绘制,3D CSS 效果的实现。
- 网络进程(NetWork Process)。主要负责页面的网络资源加载。
- 插件进程(Plugin Process)。主要负责插件的运行。
目前浏览器多进程优势
- 几乎每个tab页都有一个独立的渲染进程,当一个页面崩溃时,只需关闭崩溃的页面,其他页面正常访问。
- 操作系统提供一种限制进程权限的方法,浏览器可以使用沙箱(sandbox)保护默写进程免受某些功能的影响。例如,浏览器限制处理任何用户输入的进程(Render Process)对任何文件的访问。
目前浏览器多进程缺点
- 更高的资源占用。 因为每个进程都会包含公共基础结构的副本(如 JavaScript 运行环境),这就意味着浏览器会消耗更多的内存资源。
- 更复杂的体系架构。 浏览器各模块之间耦合性高、扩展性差等问题,会导致现在的架构已经很难适应新的需求了。