浏览器运行原理(一)

这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战web

进程(process)和线程(thread)

image.png

进程就像是一个有边界的生产厂间,而线程就像是厂间内的一个个员工,能够本身作本身的事情,也能够相互配合作同一件事情。浏览器

当咱们启动一个应用,计算机会建立一个进程,操做系统会为进程分配一部份内存,应用的全部状态都会保存在这块内存中,应用也许还会建立多个线程来辅助工做,这些线程能够共享这部份内存中的数据。若是应用关闭,进程会被终结,操做系统会释放相关内存。更生动的示意图以下:安全

一个进程还能够要求操做系统生成另外一个进程来执行不一样的任务,系统会为新的进程分配独立的内存,两个进程之间可使用 IPC (Inter Process Communication)进行通讯。不少应用都会采用这样的设计,若是一个工做进程反应迟钝,重启这个进程不会影响应用其它进程的工做。markdown

浏览器的多进程架构

有了上面的知识作铺垫,咱们能够更合理的讨论浏览器的架构了,其实若是要开发一个浏览器,它能够是单进程多线程的应用,也能够是使用 IPC 通讯的多进程应用。网络

一个好的程序经常被划分为几个相互独立又彼此配合的模块,浏览器也是如此,以 Chrome 为例,它由多个进程组成,每一个进程都有本身核心的职责,它们相互配合完成浏览器的总体功能,每一个进程中又包含多个线程,一个进程内的多个线程也会协同工做,配合完成所在进程的职责。多线程

image.png

不一样浏览器采用了不一样的架构模式,这里并不存在标准,本文以 Chrome 为例进行说明 :架构

Chrome 采用多进程架构,其顶层存在一个 Browser process 用以协调浏览器的其它进程。svn

image.png

具体说来,Chrome 的主要进程及其职责以下:工具

  • Browser Process:
  1. 负责包括地址栏,书签栏,前进后退按钮等部分的工做;
  2. 负责处理浏览器的一些不可见的底层操做,好比网络请求和文件访问;
  • Renderer Process:
  1. 负责一个 tab 内关于网页呈现的全部事情
  • Plugin Process:
  1. 负责控制一个网页用到的全部插件,如 flash
  • GPU Process
  1. 负责处理 GPU 相关的任务

image.png

Chrome 还为咱们提供了「任务管理器」,供咱们方便的查看当前浏览器中运行的全部进程及每一个进程占用的系统资源,右键单击还能够查看更多类别信息。oop

经过「页面右上角的三个点点点 --- 更多工具 --- 任务管理器」便可打开相关面板,

Chrome 还为咱们提供了「任务管理器」,供咱们方便的查看当前浏览器中运行的全部进程及每一个进程占用的系统资源,右键单击还能够查看更多类别信息。

经过「页面右上角的三个点点点 --- 更多工具 --- 任务管理器」便可打开相关面板,

image.png Chrome 任务管理器面板

Chrome 多进程架构的优缺点

优势

  1. 某一渲染进程出问题不会影响其余进程
  2. 更为安全,在系统层面上限定了不一样进程的权限

缺点

因为不一样进程间的内存不共享,不一样进程的内存经常须要包含相同的内容。

为了节省内存,Chrome 限制了最多的进程数,最大进程数量由设备的内存和 CPU 能力决定,当达到这一限制时,新打开的 Tab 会共用以前同一个站点的渲染进程。(测试了一下在 Chrome 中打开不断打开知乎首页,在 Mac i5 8g 上能够启动四十多个渲染进程,以后新打开 tab 会合并到已有的渲染进程中。)

Chrome 把浏览器不一样程序的功能看作服务,这些服务能够方便的分割为不一样的进程或者合并为一个进程。以 Broswer Process 为例,若是 Chrome 运行在强大的硬件上,它会分割不一样的服务到不一样的进程,这样 Chrome 总体的运行会更加稳定,可是若是 Chrome 运行在资源贫瘠的设备上,这些服务又会合并到同一个进程中运行,这样能够节省内存,示意图以下。

iframe 的渲染 -- Site Isolation

在上面的进程图中咱们还能够看到一些进程下还存在着 Subframe,这就是 Site Isolation 机制做用的结果。

Site Isolation 机制从 Chrome 67 开始默认启用。这种机制容许在同一个 Tab 下的跨站 iframe 使用单独的进程来渲染,这样会更为安全。

image.png

Site Isolation 被你们看作里程碑式的功能, 其成功实现是多年工程努力的结果。Site Isolation 不是简单的叠加多个进程。这种机制在底层改变了 iframe 之间通讯的方法,Chrome 的其它功能都须要作对应的调整,好比说 devtools 须要相应的支持,甚至 Ctrl + F 也须要支持。关于 Site Isolation 的更多内容可参考下述连接

link.zhihu.com/?target=htt…

相关文章
相关标签/搜索