@wait1210day 首先,不知道你从哪看来的浏览器内核和Linux内核拥有差不多的代码量,不过还是建议你去git对比下linux kernel和你提到的浏览器内核(这主要是因为系统级kernel还需要做大量底层抽象和协议抽象)
其次,(以下操作属chrome渲染过程)渲染过程中web提供的css,html,js会被抽象成渲染流(由Webcontent钦定(封装管理和创建渲染进程,且接下来所有渲染操作都在它提供的沙箱进程实现。),并从这一步开始提供接口并由上层(主要提供content接口)call.而layout操作(跳过Dom tree,cssparser,computedstyle,cssselectorlist...因为需要在这上面倾注大量文字。)在style计算完成后进行,这一步首先需要对构造layout tree(里面包含了layoutview,layoutblockflow,layouttext)进行遍历,并在它的object 分离输入输出流,进行布局。而到这一步,绘制有在进行但无意义(因为没有处理层叠顺序(z-index)),paint对此负责并分多阶段进行层叠排序。随后将显现绘制操作栅格化(通过skia库生成opengl call,以缓冲区命令缓冲的方式代理到gpu进程生成真正的GL call并绕过沙箱(值得注意的是widows的这一步操作是由ANGLE实现的(因为需要把opengl翻译成dx),位图保存在OpenGL,由opengl纹理对象call。并不需要“直接与底层硬件交互”)。
总的来说,浏览器(渲染)执行的相关操作的确是十分复杂且繁琐的抽象工作,并且的确需要客户提供适量的资源,但请不要把它和任何不相关的操作(linux kernel)进行捆绑解说,这样只会越来越乱。