Chromium多进程,多线程剖析

本文深入剖析Chromium的多进程架构,旨在提高浏览器的健壮性和安全性。详细介绍了Browser进程、Render进程、PPAPI插件进程、GPU进程的角色与责任,以及它们之间的IPC通信。同时,阐述了Chromium的多线程模型,如UI线程、IO线程、File线程和数据库线程等,确保高效且响应迅速的用户体验。
摘要由CSDN通过智能技术生成

Chromium多进程的原因:

1. 提高浏览器的健壮性:包括单个plugin,单个页面的崩溃导致整个浏览器的崩溃;

2. 提高浏览器的安全性:基于多进程的安全模型(sanbox模型),比如Render进程默认是基于Sandox模型的,限制了该进程除I/O之外的能力。


Chromium中的进程:

Browser进程:负责管理浏览器的界面,页面间的管理,其它进程的管理;

Render进程:负责页面的显示,页面的渲染过程,chromium中使用webkit的地方;

PPAPI插件进程:同NPAPI,都是插件模型,改善了NPAPI存在的可移植性(和浏览器所处的系统和使用的窗口管理系统密切相关)、性能(图形的绘制效率,基于多进程的保留模式进行内存共享来代替网页发送无效通知给插件的的模式)、安全性方面(通过把具有存取底层os的接口运行在sanbox模型下来保证安全)的缺项。PPAPI是一种对本地api的跨平台的C/C++语言的封装,目的在于提供一个介于插件和浏览器之间的抽象层,用来区分浏览器和系统级别的功能实现。

GPU进程:当用户启动硬件加速时会启动该进程,用于硬件加速;负责处理绘图请求并调用OPENGL进行绘制工作

#if defined(ENABLE_PLUGINS)
    { switches::kPluginProcess,      PluginMain },
    { switches::kWorkerProcess,      WorkerMain },
    { switches::kPpapiPluginProcess, PpapiPluginMain },
    { switches::kPpapiBrokerProcess, PpapiBrokerMain },
#endif  // ENABLE_PLUGINS
    { switches::kUtilityProcess,     UtilityMain },
    { switches::kRendererProcess,    RendererMain },
    { switches::kGpuProcess,         GpuMain },



进程之间通过IPC进行通讯,render和browser进程可以和任何进程直接通讯。


chromium的多进程架构见下图




多进程加载网页资源架构,用来补充说明ResourceDispatcherHost和Channel的Filter模块

在chromium中,所有网络访问在Browser进程中进行,这样做的目的一是有利于全局控制,二是能在不同进程间保持cookie等的session状态。架构图如下所示


可以看到资源加载是依赖chromium多进程架构设计的,Renderer进程的ResourceDispatcher与Browser进程的ResourceDispatcherHost通信,通过Browser完成资源加载。chromium通过重新实现webkit中的ResourceHandle来实现这一逻辑。具体参考: Multi-process Resource Loading


chromium的多线程模型

由于每个进程会处理很多的事情,为了在当前进程中不阻塞别的任务和充分利用多核CPU的特性,我们需要根据不同进程的任务来给进程创建一些线程。

Browser进程中的主要线程:由于browser需要管理其它进程,需要负责用户的响应,资源的加载管理,打开和读取各种文件设备,数据库的操作,历史记录的操作等,我们这些项都创建了单独的线程去完成这些任务。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值