线程与进程

235 阅读3分钟

参考资料

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)
  • 应用启动时,如果一个进程中断,可以在关闭整个应用的情况下重新启动该进程(浏览器一个窗口崩溃时,只需关闭当前窗口,不需要将浏览器整体关闭)。

image.png

Chrome多进程框架

最新的 Chrome 浏览器包括:1 个浏览器(Browser)主进程、1 个 GPU 进程、1 个网络(NetWork)进程、多个渲染进程和多个插件进程。 最新Chrome进程框架图

  • 浏览器主进程(Browser Process) 主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。控制地址栏,书签,后退或前进按钮,还处理不可见部分如文件访问等
  • 渲染进程(Render Process)。将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中。出于安全考虑,渲染进程都是运行在沙箱模式下。
  • GPU 进程(GPU Process)。主要用于 UI 界面的绘制,3D CSS 效果的实现。
  • 网络进程(NetWork Process)。主要负责页面的网络资源加载。
  • 插件进程(Plugin Process)。主要负责插件的运行。

image.png

目前浏览器多进程优势

  • 几乎每个tab页都有一个独立的渲染进程,当一个页面崩溃时,只需关闭崩溃的页面,其他页面正常访问。
  • 操作系统提供一种限制进程权限的方法,浏览器可以使用沙箱(sandbox)保护默写进程免受某些功能的影响。例如,浏览器限制处理任何用户输入的进程(Render Process)对任何文件的访问。

目前浏览器多进程缺点

  • 更高的资源占用。 因为每个进程都会包含公共基础结构的副本(如 JavaScript 运行环境),这就意味着浏览器会消耗更多的内存资源。
  • 更复杂的体系架构。 浏览器各模块之间耦合性高、扩展性差等问题,会导致现在的架构已经很难适应新的需求了。