Dive Into Browser(一): 浏览器架构

本文深入探讨了 Chromium 浏览器的架构,重点介绍了其多进程设计,包括 Render Process 和 Browser Process,以及它们之间的 IPC 通信。渲染进程负责页面内容的解析和布局,而浏览器进程则管理 UI 和插件进程。Chromium 使用命名管道进行进程间通信,每个渲染进程拥有 Render thread 和 Main thread,浏览器进程中的 I/O 线程处理 IPC 和网络通信。文中还详细阐述了鼠标点击和设置光标消息的生命周期,揭示了浏览器内部复杂的通信机制。
摘要由CSDN通过智能技术生成

随着 Web 技术的发展,现代浏览器已经具备了空前的复杂度,chromium 连带着 blink 成为了千万行代码的庞然大物,单是总览的设计文档以及相关资料的数量就足够令人劳神费力了。
虽然想着把资料整合的详细一些,对于 chromium 整体的理解更为深入之后再回过头来写几篇资料整理,但是经过这中间的跨度怕是前头学的东西都落的七七八八了(更不用说工头安排了开发任务,抽不出足够的成块时间 )。

在这里整理的资料内容主要基于 chromium 项目官网 的设计文档。里头的内容质优量足,不过有些 outdated 的内容需要自己甄别。

浏览器部件

在介绍浏览器的架构之前,首先来理一理现代浏览器需要什么。

浏览器部件
来自 浏览器的工作原理:新式网络浏览器幕后揭秘

对照着诸位自己正盯着看的浏览器界面以及上图,让我们来看看现代浏览器里头都包含了哪些部件:

  • User Interface: 用户交互界面,里头装着地址栏,书签栏、标签栏等。除了主窗口所显示的内容,其余的部分都属于用户界面的内容;
  • Browser Engine: 浏览器引擎负责与渲染引擎之间的通信,传送相应的指令;
  • Rendering Engine: 渲染引擎将对应的内容进行呈现,例如对 html 的绘制;
  • Networking: 网络模块用于处理网络调用,例如 Http 请求,其将不同平台的网络资源进行封装以提供统一的平台无关的调用接口;
  • JavaScript Interpreter: JavaScript 解释器很直白,就是对 JavaScript 代码进行解析以及执行;
  • UI Backgroud: UI 后端处理基本的窗口小部件的绘制,例如组合框以及窗口,其同样对底层操作系统提供的界面方法进行封装,并向上提供接口;
  • Data Persistence: 数据持久化处理浏览器工作中需要写入磁盘的数据,例如 Cookie、WebStorage (其为 HTML 规范所定义的轻量级数据库)等。

需要注意的,上述的各个部件并不代表其每个部件都是一个独立的进程,而仅仅代表起是具有某个功能的“模块”。其相互之间的组织结构以及通讯结构,将在接下来的内容中呈现。

多进程架构

为了应对(很有)可能出现的崩溃以及安全问题,chromium 为浏览器设计了多进程的架构:

多进程架构
来自 Multi-process Architecture

Chromium 主要包含 主进程(浏览器进程,browser process) 以及 渲染进程(render process)。其中:

  • browser process 负责绘制浏览器 User Interface 以及插件进程的管理;
  • render process 也就是 renderer,其负责对 HTML 进行解析以及布局(在 chromium 中 render process 使用 blink
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值