什么是进程?
程序运行要有自己专属的空间,也就是程序实例。比如我打登录了多个企鹅,也就是多个进程。 每个应用至少有一个进程,进程间相互独立。
什么是线程?
线程(Thread)是操作系统中的另一个基本概念,指计算机分配处理器时间的最小单位。与进程不同,线程是进程内部可独立调度、执行的较小单位,在同一进程内共享进程资源和地址空间。一个进程中至少有一个线程。
浏览器多进程
浏览器是多进程多线程的应用,主要进程如下:
浏览器内核
Chrome浏览器早期使用Webkit内核,2013年后使用了Blink内核。
浏览器地址栏输入url到页面展示的过程
1、输入url按下回车后,判断是url还是查询条件,如果是url组装成一个完整的url,如果是关键字查询,则将输入内容发送给搜索引擎。
2、浏览器通过进程间通信(IPC),将url发送给网络进程
3、网络进程去缓存中判断是否有需要请求的资源,如果有就直接使用缓存
4、如果没有缓存,网络进程向服务器发起网路请求:
解析DNS,获取服务器IP地址
建立TCP连接
构建请求头信息
发送请求头信息
等待服务器响应后接收响应头和响应信息,解析响应内容
5、判断响应类型,如果是下载类型,进行下载,如果是html类型通知浏览器准备解析
6、判断之前打开的页面是否有相同的站点,如果有共用一个渲染进程、如果没有,等待数据传输完成后进行渲染。
渲染过程
7、解析HTML生成DOM树;
8、解析CSS,转换成cssom,并计算样式生成渲染树;
9、创建布局树,生成布局信息;
10、对布局树进行分层,生成分层树;
11、执行绘制指令进行绘制,提交给合成线程;
12、合成线程生成图块,栅格线程进行光栅化
13、展示在屏幕上