这是我参与更文挑战的第2天,活动详情查看:更文挑战
浏览器架构
现在大多数的浏览器架构是以chrome浏览器为例来讲解的,因为Chrome是目前世界上使用率最高的浏览器。我这里也通过chrome浏览器来讲解。
一、计算机架构
计算机的架构可以分为上下三层: 硬件、操作系统和应用,中间的操作系统使应用可以使用硬件资源而不会直接访问硬件资源。
二、进程与线程
很常见却又很基础的问题。 进程是什么?线程又是什么?有什么区别?各自有什么作用?
1、进程
一个进程就是应用正在运行的程序。详细点的说就是启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放各种数据,这样的运行环境就是进程。
2、线程
线程就是依附于进程的,它由进程来启动和管理。
另外这里提一个比线程更小的存在就是协程,而协成是运行在线程中更小的单位。async/await 就是基于协程实现的。
3、进程和线程之间的关系
1、进程中的任意一线程执行出错,都会导致整个进程的崩溃。
2、线程之间共享进程中的数据。
3、当一个进程关闭之后,操作系统会回收进程所占用的内存。
4、进程之间的内容相互隔离。如果进程之间需要进行数据通信,就需要使用进程间通信(IPC)的机制了。
三、首先为什么要学习浏览器的架构?
因为我们的web网页基本上都是基于浏览器运行的,如果想要提高web应用的性能,就必须要了解浏览器里面的页面渲染过程、执行过程、网络流程等等。
四、浏览器的架构是什么?
浏览器的架构是多进程的。
而最新的Chrome浏览器包括:
浏览器主进程、GPU进程、网络进程、多个渲染进程和多个插件进程
接下来逐个来看看:
- 浏览器进程
主要负责页面的显示、用户的交互、子进程的管理,同时提供存储等功能。
- 渲染进程
主要负责将HTML、CSS和JavaScript转换成用户可以与之交互的网页。
- GPU进程
主要负责实现3D CSS的效果,绘制UI界面。
- 网络进程
主要负责页面的网络加载。
- 插件进程
主要是负责插件的运行,因为插件容易崩溃,所以需要通过插件进程来隔离,以保证插件进程不会对浏览器和页面造成影响。
不同的进程分别负责不同的任务,构成了chrome如今的多进程架构。