浏览器与系统

浏览器是一个多进程框架

主要进程由一下几点构成:

1.browser进程,主进程,除了处理tab页之外还有关于window的一些方法也是由在这个进程中运行。比如常见的history还有storage线程等。还有的话在这个进程当中包括由一个ui线程,这个主要用于绘制元素。network线程用于请求资源。

2.render进程,每一个页面就是一个进程,主要负责每个页面展示的内容。 对于这个来说iframe现在也会单独申请一个render process

3.gpu进程,emmm大概了解的应用是webgpu?

4.plugin进程,用于处理一些插件相关的,比如说falsh,??4399之痛?

5.extension进程,处理谷歌插件,现在用的edge比较多,想油猴一类的?

一个很经典的一道面试题:从网站上输入一个url网址发生了一些什么

接下来从系统调用等一些方面来回答一下这个问题。

1.输入url时,ui线程判断一个搜索问题还是一个url,搜索问题找搜索引擎,不然请求url—发起请求 browser进程

2.ui线程转network线程,用对应的协议建立请求。301重定向—重新发起请求 browser进程

3.network进程对相应的数据进行不同的处理。html文件—render进程,zip文件(或其他文件?)—下载管理器。报错:不符合安全策略以及跨域

4.network线程需要跳转对应页面,通过ui线程通知render进程。

5.进程之间通过ipc进行通信,使用stream方式传递html数据。当browser线程收到render进程的commit后开始文档加载阶段。

6.地址栏更新,history增加历史,信息存与硬盘

7.render进程结束后,通知browser结束loading。至此结束。

参考资料:从URL到页面展示:浏览器背后的进程协作之旅 - 掘金 (juejin.cn)