作为本系列的第 1 部分,我们将介绍关键技术名词和 Chrome 的多进程架构。
1. CPU(中央处理器)
CPU(Central Procession Unit) 可以被认为是你计算机的大脑。CPU 核心,就像办公室工作人员,可以逐个处理交代给他们的许多不同的任务。它可以处理从数学到艺术的所有事情,并把处理结果返回出去。曾经大多数 CPU 都是单核,但在现代硬件中,你通常会操作的是多核 CPU,多核 CPU 为你的手机和计算机提供更强的计算能力。
2. GPU
GPU(Graphics Processing Unit)是计算机的另一部分。与 CPU 不同,GPU 更擅长处理简单任务,同时可以跨多个核心。顾名思义,它最初是为处理图形而诞生的。这就是为什么在图形处理中,当我们说到 “使用 GPU” 或者 “GPU 支持” 的时候,通常就在说快速渲染和平滑交互。近年来,随着 GPU 加速发展,仅在 GPU 上就可以实现越来越多的计算任务。
如上图所示,三层计算机体系结构中,硬件位于底部,操作系统位于中间,应用程序则在最上层。
当你在计算机或手机上启动应用程序时,CPU 和 GPU 就是为应用程序提供有力的支持。通常,应用程序使用操作系统提供的机制在 CPU 和 GPU 上运行。
Process 和 Thread 上执行的程序
在深入浏览器架构之前,要掌握的另一个概念是 Process(进程) 和 Thread(线程)。
进程可以理解是应用程序的执行程序,线程则是存在于进程内部,并执行其进程程序的部分功能。
进程作为线程的边界,而线程就像游动在进程中的鱼。
进程可以通过操作系统,启动另一个进程来执行不同的任务。此时,系统将为新进程分配不同的内存。如果两个进程间需要通信,他们可以利用 IPC(Inter Process Communication)的方式进行通信。许多应用程序都是以这种方式执行的,因此如果某个工作进程(例如一个选项卡)无响应,重启它,并不会影响相同应用程序的其他进程。
浏览器架构
那么如何使用进程和线程构建 Web 浏览器?
它可能是一个具有多个线程的独立进程,或者存在多个进程但是只有部分进程之间会进行 IPC 通信的结构。
这里有个非常重要的点需要注意,这些不同的架构是实现细节。关于如何构建 Web 浏览器没有标准规范,不同浏览器的架构可能完全不同。
最重要的是浏览器进程,如何与负责应用程序不同部分的其他进程协调。对于渲染器进程,将创建多个进程,并将其分配给每个选项卡。直到最近,Chrome 才为每个标签提供了一个执行进程,现在它尝试为每个站点提供自己的进程,包括 iframe。
如图所示,Chrome 的多进程架构,渲染进程会显示多个图层,表示 Chrome 为每个选项卡运行多个渲染器进程。
这些进程控制什么?
下面介绍了每个 Chrome 进程以及其控制的范围:
- 浏览器(Browser):控制 “Chrome” 应用程序,包括地址栏、书签、后退和前进按钮等。还需要处理 Web 浏览器的权限管理,例如网络请求和文件访问。
- 渲染器(Renderer):控制选项卡内,网站里显示的所有内容。
- 插件(Plugin):控制网站使用的插件,例如:Flash。
- GPU:独立于其他进程,专用于处理 GPU 任务,它被分成不同的进程,因为 GPU 会处理来自多个进程的请求,并将它们绘制在相同的 Surface 中。
不同的进程,用于处理 Chrome 的不同部分。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
尾声
如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。
Android进阶学习资料库
一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!
大厂面试真题
PS:之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
《2019-2021字节跳动Android面试历年真题解析》
-
自行下载直达领取链接:【GitHub】
-
以上进阶BATJ大厂学习资料可以免费分享给大家,需要完整版的朋友,【点这里可以看到全部内容】。
6601)】**
- 以上进阶BATJ大厂学习资料可以免费分享给大家,需要完整版的朋友,【点这里可以看到全部内容】。