Chrome架构

无论你是想要设计高性能 Web 应用,还是要优化现有的 Web 应用,你都需要了解浏览器 中的网络流程、页面渲染过程,JavaScript 执行流程,以及 Web 安全理论,而这些功能是 分散在浏览器的各个功能组件中的,比较多、比较散,通过浏览器 的多进程架构的学习,你就可以把这些分散的知识点串起来,组成一张网,从而让自己能站 在更高的维度去理解 Web 应用

这是在学习过程中看到的一段话,渐渐意识到浏览器原理的重要性,将学习过程中的笔记放到这里,方便自己理解记忆学习吧

进程、线程

一个程序运行的过程中至少有一个进程,一个进程中至少有一个线程
进程:
就是说,当运行一段程序的时候,操作系统会为这段程序创建一个内存,用来存放代码,数据以及执行任务的线程,也就是说这样的一个运行环境成为进程,程序一旦启动就是进程,进程是资源分配的最小单位
线程: 线程是由进程来启动和管理的,线程是依附于进程存在的
那么还有一个概念就是多线程:
比如说有这样一段程序

 A = 1+2
 B = 20/5
 C = 7*8

计算这三个式子,如果是单线程来运行的话,会从上到下依次执行A,B,C,最后输出结果,如下图进程A。但是如果是多进程的话,可以把A,B,C分别放在不同的进程中同时执行,又称并发,最后再输出结果,如下图进程B,明显进程B的效率高,所以多线程并行处理能够提高运算效率
Chrome架构_第1张图片
进程与线程之间的关系
1:如果进程中的一个线程出现问题,那么整个进程就将崩溃
2:一个进程中的多个线程共享进程中公共的数据,并可以对其进行读写
Chrome架构_第2张图片
3:当一个进程执行结束之后,操作系统就会回收这个进程所有的空间,也就是占用的内存,这样的好处就是,如果程序在运行的过程中内存泄漏,那么在进程执行结束之后,就会回收所有的内存,包括内存泄漏的那一部分
4:进程与进程之间是相互隔离,互不影响的,每个进程只能访问自己占有的数据,这样如果一个进程崩溃了,也不会影响其他进程的运行。

Chrome浏览器架构演化

在最开始Chrome是一个单进程运行的,为什么会被替代呢?在上面说过进程只有有一个线程崩溃,那么整个进程就会崩溃,那么一个进程中有这些线程,只有有一个线程运行出现问题,那么整个浏览器就会崩溃
Chrome架构_第3张图片
所以在之后,浏览器开始逐渐向多进程方向发展,目前的进程是如下的
Chrome架构_第4张图片
主要是由4个进程组成:渲染进程,网络进程,浏览器进程,GPU进程(可以打开Chrome浏览器的任务管理器看看),如果要运行插件的话,则需要再加上插件进程

浏览器进程:主要负责界面显示、用户交互、子进程管理,同时提供存储等功能
渲染进程::核心任务是将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,出于安全考虑,渲染进程都是运行在沙箱模式下(把沙箱看成是操作系统给进程上了一把锁,沙箱里面的程序可以运行,但是不能在你的硬盘上写入任何数据,也不能在敏感位置读取任何数据,例如你的文档和桌面。Chrome 把插件进程和渲染进程锁在沙箱里面,这样即使在渲染进程或者插件进程里面执行了恶意程序,恶意程序也无法突破沙箱去获取系统权限
网络进程: 主要负责页面的网络资源加载
GPU进程:使用GPU来绘制UI界面
插件进程:主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响

面向服务的架构
Chrome 整体架构会朝向现代操作系统所采用的“面向服务的架构” 方向发展,原来的各种模块会被重构成独立的服务(Service),每个服务(Service)都可以在独立的进程中运行,访问服务(Service)必须使用定义好的接口,通过 IPC 来通信,从而构建一个更内聚、松耦合、易于维护和扩展的系统
Chrome架构_第5张图片

你可能感兴趣的:(浏览器原理)