首页 > 编程语言 >Chromium源码分析一:基础知识

Chromium源码分析一:基础知识

时间:2024-11-15 18:40:43浏览次数:1  
标签:Google 浏览器 渲染 基础知识 源码 线程 进程 Chromium

目录

我的衣食父母基于Chromium实现小程序功能,现在已经开发维护代码一年多了,抽时间对公开的知识做个笔记总结。
本文内容源于《WebKit技术内幕》

Webkit、chromium、Google chrome

WebKit是一个开源的浏览器引擎,包含了两个主要组件:WebCore(负责渲染 HTML 和 XML 文档)和 JavaScriptCore(负责执行 JavaScript 代码)。WebKit 被设计为一个可嵌入的框架,可以被各种应用程序使用,而不局限于浏览器。
它最初是由 KDE 项目的一部分演化而来,主要由苹果公司在 Safari 浏览器中进行开发和改进。

Chromium 是一个开源的浏览器项目,由 Google 发起和维护。它不仅仅是一个浏览器引擎,而是一个完整的浏览器框架,包括了浏览器界面、扩展程序支持、安全性特性等。Chromium 的核心部分使用了 WebKit 作为其渲染引擎,但随着时间的推移,Google 开始对 WebKit 进行了大量的修改和扩展,最终在 2013 年宣布将 WebKit 的渲染引擎部分分离出来,形成了 Blink 渲染引擎。

Chromium 和 Google Chrome(通常简称 Chrome)都是由 Google 开发的基于 Chromium 开源项目的网络浏览器,但 Google 在 Chromium 的基础上加入了一些专有组件和功能,使其成为一个闭源软件。尽管大部分代码仍然是开放的,但某些部分(如数字签名证书、部分多媒体解码器等)是闭源的。

各模块结构图

Chromium各模块结构
Chromium模块结构图

Blink:渲染引擎
V8 JavaScript引擎:用来解析和执行js代码的。
沙箱模型:三大特点:进程隔离、权限限制、安全策略。Linux中的沙箱是依赖于内核的,chromium中的沙箱是应用层实现的。
CC(Chromium Compositor): Chromium 的合成器模块,它负责将多个图层(cc::Layer)组合成最终的画面,进行高效的图形渲染和动画处理。
IPC:负责IPC通信,chromium的各个进程之间也是通过ipc进行通信的。同时,也可以和外部通信,比如播放音视频什么的,打开内置页面什么的。就可以自己在系统里实现个适配器通过IPC跟chromium进行通信,来控制chromium的行为。
Content Shell:不负责任的说,相当于C语言中的main函数的入口。开几个进程,进程的初始化参数都是在这里处理的。我所在的某公司通过修改这部分代码调用自定义的一些模块,实现了小程序的功能。在Android系统上,Content Shell的作用更大,这是因为同它并排的左侧的“Chromium浏览器”部分的代码根本就没有开源,这直接导致开发者只能依赖Content Shell。

进程模型

Chromium进程模型

1.Browser进程收到用户的请求,首先由UI线程处理,而且将相应的任务转给IO线程,它随即将该任务传递给Renderer进程。
2.Renderer进程的IO线程经过简单解释后交给渲染线程。渲染线程接受请求,加载网页并渲染网页,这其中可能需要Browser进程获取资源和需要GPU进程来帮助渲染。最后Renderer进程将结果由IO线程传递给Browser进程。
3.最后,Browser进程接收到结果并将结果绘制出来。

代码结构

Chromium源码结构
Chromium源码结构
Chromium中src/content部分的源码结构

标签:Google,浏览器,渲染,基础知识,源码,线程,进程,Chromium
From: https://www.cnblogs.com/bugutian/p/18548474

相关文章

  • ssm111基于MVC的舞蹈网站的设计与实现+vue(论文+源码)_kaic
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,舞蹈网站当然也不能排除在外。舞蹈网站是以实际运用为开发背景,运用软件工程开发方法,采用Java技术构建的一个管理系统。整个开发过程首先对软件系统进行需求......
  • JAVA部分基础知识点(四)【持续更新】
    1.方法重写当子类觉得父类中的某个方法不好用,或者无法满足自己的需求时,子类可以重写一个方法名称、参数列表一样的方法,去覆善父类的这个方法,这就是方法重写。【注意:重写后,方法的访问,Java会遵循就近原则】方法重写的其它注意事项:重写小技巧:使用Override注解,他可以指定java......
  • 淘宝代购系统;海外代购系统;代购程序,代购系统源码PHP介绍
    以下是关于淘宝代购系统、海外代购系统、代购程序以及代购系统源码PHP的相关介绍:——在成长的路上,我们都是同行者。这篇关于搭建1688淘宝代购集运系统搭建的文章,希望能帮助到您。期待与您继续分享更多跨境系统搭建的知识,请记得关注Taobaoapi2014哦!  淘宝代购系统:......
  • chromium 下载 编译
    下载配置系统proxy,配置gitproxy,配置运行批处理窗体的proxy下载git,python下载depot_tools下载源码迁出指定版本并创建本地分支(gitcheckout-blocalnamecommitid)注意点:默认下载main分支,不稳定,使用--no-hostory不下载历史版本否则,仅src/.git就将近50G下载......
  • pg16源码部署
    环境:OS:Centos7pg:pg16说明:pg16已经不提供在centos7下使用yum方式安装了,只能通过源码编译的方式安装.1.源码下载:https://www.postgresql.org/ftp/source/v16.4/ 2.解压源码包[root@localhostsoft]#cd/soft/pg16[root@localhostpg16]#tar-zxvfpostgresql-16.4.tar......
  • STM32项目实战:基于STM32U5的智能大棚温控系统(LVGL),附项目教程/源码
    《智能大棚温控系统_STM32U5》项目完整文档、项目源码,点击下方链接免费领取。项目资料领取https://s.c1ns.cn/F5XyUSTM32项目实战之“智能大棚温控系统”(基于STM32U5)今天小编来分享一个《智能大棚温控系统》的项目案例,硬件平台是STM32U5开发板+资源扩展板+显示触摸屏+仿真器,项......
  • SSM冷链物流管理系统的设计与开发90b3l 程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:用户,站点信息,司机,车辆信息,商品信息,订单信息,配送信息开题报告内容一、研究背景随着全球经济的飞速发展和人们生活水平的日益提高,冷链食品的市场......
  • 【C++源码编译】
    C++源码到二进制可执行文件的过程与C语言类似,包括四个过程:预编译、编译、汇编、链接1、预编译C/C++编译过程中的第一个阶段,主要目的是对源代码进行处理和准备工作。下面是预编译的主要步骤:去除宏定义:将所有的#define删除,并展开所有的宏定义,将宏替换为具体的值或表达......
  • 搭建指南:宠物社交、APP小程序平台开发!源码部署,支持二开!
    宠物现在成了大家生活中少不了的小伙伴,而且越来越多人开始关心宠物的健康和快乐。这样一来,宠物行业就火了起来,各种宠物用品、服务和交友平台也跟着冒了出来。那么,如何搭建一个宠物交友系统呢?一、搭建指南搭建一个同城宠物交友系统涉及多个方面,包括需求分析、技术选型、系统设......
  • 线上线下游戏陪玩app源码,陪玩平台源码有哪些功能?
    系统源码 交友系统APP游戏陪玩系统源码圈子同城搭子小程序源码陪玩接单平台app家政系统源码家政预约服务小程序源码游戏陪玩源码搭建平台 陪玩小游戏源码是一套专为游戏爱好者设计的软件开发工具,它集成了多种功能,旨在为用户提供一个全方位的游戏社交平台。游戏陪玩app......