本帖最后由 Spirit_悔灭 于 2020-9-21 12:03 编辑
安全浏览器是基于chromium开发的浏览器。所有浏览器的结构就与谷歌浏览器相似。
浏览器多进程架构分为浏览器进程、实用程序进程、gpu进程、插件进程、渲染进程。
从浏览器任务管理器可以看的很清楚 (按shift+esc),这里就可以解释打开浏览器会有很多个进程。
浏览器进程: 浏览器的主体,包括打开网址、打开各种界面按钮、处理前进后退操作、处理一些其他进程请求等等
实用程序进程: 帮助浏览器进程处理解码、解压缩、收集信息等
gpu进程: 处理显卡运算任务、渲染进程和浏览器进程会使用gpu进程呈现网页。
插件进程: 控制网页用到的插件,比如flash、pdf、AtiveX等
渲染进程: 处理一个网页内所有元素的呈现,比如解析执行加载html、css、js,绘制各个网页元素
每一个进程之间是独立的,它们之间使用IPC(Inter Process Communication)进行通信,传递消息。如果一个进程反应缓慢或者卡死导致的重启,其它进程不会受到影响。
为了更方便理解各个进程之间的工作方式,我们直接用浏览器打开网页来举例,来看看我们输入了一个网页时,浏览器在电脑上做了什么。
1 输入网址后,浏览器进程判断输入的字符是URL还是某个可执行的代码。
2 判断是URL后,会执行DNS查询,与访问网站服务器请求建立TLS连接,同时浏览器界面上的刷新按钮会变成 X,表示正常加载中。
3 每一个请求都会返回一个http响应代码,浏览器会根据响应代码做出相应的动作。如果从访问网站服务器的请求成功,就会判断取回文件的格式,如果是html格式就会交给渲染进程、zip等格式文件则就会交给下载管理器。浏览器的相关安全检查也会同时触发,比如判断证书风险、判断文件安全性、判断URL的可靠性等等。
4 上述过程完成后,渲染进程才会工作,浏览器进程会将取回的html、js等其他格式转交给渲染进程处理。同时,浏览器界面上也会出现访问网页服务器返回的URL,历史记录中生成该链接,硬盘上缓存文件夹内生成网页数据方便之后恢复。有些网页会在本地有缓存,这时浏览器进程会先向渲染进程询问是从本地获取数据还是从网络获取数据,渲染进程处理网页上的js后会告诉浏览器进程是从哪里获得数据,再决定是否访问网站服务器获取缓存过的文件。
5 渲染进程会根据网页提供的访问模型来访问获取到的网页文件。之后加载网页上的css和js,绘制网页上的各个元素、元素样式。最后将网页元素的按照提供的模型加载好网页,并将整个加载后网页拆成很多个小块,转交给浏览器进程。
6 浏览器进程接收到小块以及从扩展的渲染进程收到的小块,转交给gpu进程,存入gpu显存中,并显示在屏幕上。当显示好后gpu进程会告诉浏览器进程,将刷新按钮变成圆圈,网页加载完毕。
最大进程数量是有设备的内存和cpu的运算能力决定,为了节省内存和限制,浏览器也会对进程做一些限制。每一个标签都会使用一个或多个的渲染进程,比如一个网页中有一个或多个iframe框架,那么就需要2个以上的渲染进程。如果渲染进程达到了限制,新打开的标签会共用已打开标签的渲染进程。
感谢您的阅读。如果有哪里写的不对的地方还请您指出。 |
|
|
|
评论
直达楼层