鱼C论坛

 找回密码
 立即注册
查看: 1647|回复: 6

[庖丁解牛] 03 - 多线程架构

[复制链接]
发表于 2020-2-6 12:44:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2020-2-6 13:44 编辑

00 讲中打开一个页面,为什么有多个线程?

今天就能解开谜题:

Snip20200206_206.png


Chrome 的发展是滚滚向前的,相较之前,目前的架构又有了很多新的变化。

最新的 Chrome 浏览器包括:

1 个浏览器(Browser)主进程、1 个 GPU 进程、1 个网络(NetWork)进程、多个渲染进程和多个插件进程。

简单的逐个分析下这几个进程的功能。


浏览器进程

主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。


渲染进程

核心任务是将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页。

排版引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中。

默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。

出于安全考虑,渲染进程都是运行在沙箱模式下。


GPU 进程

其实,Chrome 刚开始发布的时候是没有 GPU 进程的。

而 GPU 的使用初衷是为了实现 3D CSS 的效果。

只是随后网页、Chrome 的 UI 界面都选择采用 GPU 来绘制,这使得 GPU 成为浏览器普遍的需求。

最后,Chrome 在其多进程架构上也引入了 GPU 进程。


网络进程

主要负责页面的网络资源加载,之前是作为一个模块运行在浏览器进程里面的。

最近才独立出来,成为一个单独的进程。


插件进程

主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。

讲到这里,现在你应该就可以回答文章开头提到的问题了:

仅仅打开了 1 个页面,为什么有多个进程?


因为打开 1 个页面至少需要:

游客,如果您要查看本帖隐藏内容请回复

如果打开的页面有运行插件的话,还需要再加上 1 个插件进程。

不过凡事都有两面性,虽然多进程模型提升了浏览器的稳定性、流畅性和安全性。

但同样不可避免地带来了一些问题


过多的资源占用

因为每个进程都会包含公共基础结构的副本(如 JavaScript 运行环境),这就意味着浏览器会消耗更多的内存资源。


复杂的体系架构

浏览器各模块之间耦合性高、扩展性差等问题,会导致现在的架构已经很难适应新的需求了。

对于上面这两个问题,Chrome 团队一直在寻求一种弹性方案。

既可以解决资源占用高的问题,也可以解决复杂的体系架构的问题。

为了解决这些问题,在 2016 年,Chrome 官方团队使用“面向服务的架构”(Services Oriented Architecture,简称 SOA)的思想设计了新的 Chrome 架构。

A-general-service-oriented-architecture.png


也就是说 Chrome 整体架构会朝向现代操作系统所采用的“面向服务的架构” 方向发展。

原来的各种模块会被重构成独立的服务(Service),每个服务(Service)都可以在独立的进程中运行。

访问服务(Service)必须使用定义好的接口,通过 IPC 来通信,从而构建一个更内聚、松耦合、易于维护和扩展的系统。

更好实现 Chrome 简单、稳定、高速、安全的目标。

如果你对面向服务的架构感兴趣,可以去网上搜索下资料,这里就不过多介绍了。

Chrome 最终要把 UI、数据库、文件、设备、网络等模块重构为基础服务。

结论就是 Chrome 优化其灵活的弹性架构。

强大性能设备上会以多进程的方式运行基础服务。

但是如果在资源受限的设备上,Chrome 会将很多服务重新整合到一个进程中,节省内存占用。




如果有收获,别忘了评分


                               
登录/注册后可看大图


如果想看更多,请订阅 淘专辑传送门)(不喜欢更要订阅

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-7 12:06:15 | 显示全部楼层
看看隐藏内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-28 08:59:31 From FishC Mobile | 显示全部楼层
q
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-3 13:29:31 | 显示全部楼层
4个进程
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-20 12:27:32 | 显示全部楼层
多个进程
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-15 20:25:29 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-22 08:43:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-6 03:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表