浏览器是一个多进程的软件。当打开一个选项卡后,就相当于开始了一个进程。一个软件(项目)跑起来后,就会产生一个或多个进程。
进程是操作系统分配和调度资源(CPU和内存)的基本单位。
浏览器开一个选项卡,就是一个进程,操作系统就会给这个进程分配cpu和内存
进程中有多个线程,先记住两个,一个是js线程,一个是UI线程。对于html,css就是UI线程处理,对于JS就是JS线程处理。
UI线程把HTML构建成DOM树,把CSS构建成CSS树,DOM树和CSS树合并,形成渲染树,只有树形成了,浏览器才能根据这颗树进行渲染。
打开一个选项卡后,产生一个进程,进程是不干活。真正干活是线程。进程当成工厂,线程是工厂中的工人。
现在有两个工人:js线程,ui线程 js线程和ui线程是互斥的。
你想要让页面显示出来,那么,你必须要有一个树,浏览器会根据这个树进行渲染。
先研究ui线程是怎么干活的:
HTML会生成DOM树。
CSS会生成CSS树。
DOM树+CSS树 => 渲染树。
浏览器就可以根据这个渲染树,把页面给渲染出来。