chrome架构-多进程

1. 进程和线程

在这里插入图片描述
这些都是进程。拥有一定的资源(cpu,内存、磁盘等等)
进程详细解释:当我们启动一个程序时,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,这样的一个运行环境就叫进程。
线程:存在于进程内部,并执行其进程程序的部分功能。多线程可以提升进程的预算效率。

1.1 进程和线程的关系

(1)进程与进程之间的内容相互隔离;
每个进程只能访问自己占有的数据,避免线程之间相互读写数据。如果想要互相通信,走IPC机制。因为进程间的隔离,一个进程挂了,不会影响到其他进程。
(2)进程关闭后,操作系统会回收该进程所占用的内存;
当一个进程退出后,操作系统会回收该进程所申请的所有资源;即使其中任意线程因为操作不当导致内存泄漏,当进程退出时,这些内存也会被正确回收。
(3)进程中的各线程共享该进程的所有数据;
(4)进程中的任意一线程执行出错,都会导致整个进程的崩溃。

2. 浏览器单进程

2007年之前,浏览器都是单进程的。浏览器的所有功能模块都运行在同一个进程中。这些模块包括network、plugin、JS 运行环境、render和UI等。
缺点:
(1)稳定性
早期浏览器依赖非常容易出问题的插件,一个插件的意外崩溃都会导致浏览器的崩溃。在渲染进程中复杂的js代码同理。
(2)性能
由于所有的网页都在一个进程中运行,若存在无限循环的JavaScript代码,将会导致整个浏览器卡顿或者失去响应。并且由于渲染引擎可能存在的内存泄露问题,在关闭时不能完全的回收内存,这样导致的问题是使用时间越长,内存占用越高,浏览器会变得越慢。
(3)安全
由于在同一个进程中运行,通过插件可以获取到操作系统的任意资源,当你在页面运行一个插件时也就意味着这个插件能完全操作你的电脑。

3. 浏览器多进程

Chrome 浏览器右上角点击“选项”>“更多工具”>“任务管理器”,可以看到打开一个页面运行的多个进程。
在这里插入图片描述

3.1 早期架构

2008年发布的浏览器架构图:
在这里插入图片描述
从图中可以看出,Chrome 的页面是运行在render process中,页面里的插件运行在plugin process之中,进程之间是通过 IPC 机制进行通信(如图中虚线部分)
解决问题
(1)稳定性
各进程之间相互隔离,每个页面的渲染进程相互独立,一个页面或者插件崩溃,不会影响浏览器或者其他页面。
(2)性能
关闭一个页面时,整个渲染进程也会被关闭,之后该进程所占用的内存都会被系统回收。解决了内存泄漏的问题。
(3)安全
chrome把插件进程和渲染进程放到了沙箱中,不能直接访问系统的硬盘、内存和系统权限。

3.2 目前架构

在这里插入图片描述
在这里插入图片描述

浏览器进程:控制应用程序的“浏览器”部分,主要负责界面的显示、用户交互和子进程管理,同时也提供存储等功能。负责应用程序不同部分的其他进程协调。
渲染进程:核心任务是将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中,默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。出于安全考虑,渲染进程都是运行在沙箱模式下。
GPU 进程:其实,Chrome 刚开始发布的时候是没有 GPU 进程的。而 GPU 的使用初衷是为了实现 3D CSS 的效果,只是随后网页、Chrome 的 UI 界面都选择采用 GPU 来绘制,这使得 GPU 成为浏览器普遍的需求。最后,Chrome 在其多进程架构上也引入了 GPU 进程。
网络进程:主要负责页面的网络资源发起和接收。
插件进程:主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。
Storage Service进程:为local/session storage, service worker, indexed_db提供存储服务。

3.3 多进程的问题:

(1)更高的资源占用。
因为每个进程都会包含公共基础结构的副本(如 JavaScript 运行环境),这就意味着浏览器会消耗更多的内存资源。
(2)更复杂的体系架构。
浏览器各模块之间耦合性高、扩展性差等问题,会导致现在的架构已经很难适应新的需求了。

4. 未来面向服务的架构

Chromium在2016年提出了以SOA(Services Oriented Architecture)为基础的高内聚,低耦合,易扩展的架构。该架构期望将功能组件以服务的形式拆分或聚合。
在这里插入图片描述
同时 Chrome 还提供灵活的弹性架构,在强大性能设备上会以多进程的方式运行基础服务,但是如果在资源受限的设备上(如下图),Chrome 会将很多服务整合到一个进程中,从而节省内存占用。

在这里插入图片描述

5. 小问题

因为每开一个页签,通常是开一个新的进程。但是当新开的页面和父页面是同一站点(根域名+协议相同)时,新页面会复用父页面的渲染进程。所以,这种情况下,一个页面崩溃了,会导致同一站点的页面同时崩溃,因为他们使用了同一个渲染进程。

为什么要让他们跑在一个进程里面呢?
因为在一个渲染进程里面,他们就会共享JS的执行环境,也就是说A页面可以直接在B页面中执行脚本。因为是同一家的站点,所以是有这个需求的。

学习笔记参考:https://time.geekbang.org/column/intro/216
https://blog.csdn.net/youzhangjing_/article/details/131416655

  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Chrome OS底层架构主要由以下几个组成部分: 1. Chrome浏览器 - Chrome OS的界面和应用程序均以Chrome浏览器为核心,Chrome浏览器提供了Chrome App及Extension等应用平台和云服务,这些应用程序和服务完全运行在浏览器中,安全、易管理。 2. Linux内核 - Chrome OS基于Linux内核,可以通过Linux命令进行系统的基本操作。Chrome OS的安全机制、网络通信、驱动程序等也是依托于Linux内核实现的。 3. Chrome OS Shell - Chrome OS Shell是一种基于命令行的Shell环境,可以对底层的Linux内核进行配置和管理,并且提供了一些快捷命令和工具。 4. 组件 - Chrome OS中还包含了多个重要的组件,包括HTML5、CSS3、JavaScript引擎、V8垃圾回收器、Native Client等。这些组件提供了Chrome OS的核心功能和性能。 总体上,Chrome OS底层架构是一个基于浏览器和Linux内核的简单、安全和易管理的操作系统平台。它支持多任务、云平台和无需安装软件等特性,旨在为用户提供更轻松、更便捷的计算体验。 ### 回答2: Chrome OS是由Google公司开发的一款基于Linux内核和Google Chrome浏览器的操作系统。它的底层架构主要包括内核、浏览器和系统应用三个部分。 首先,Chrome OS的内核采用的是Linux内核,它是操作系统的核心部分,负责管理硬件设备、内存管理、文件系统等功能。Linux内核具有开放源代码和稳定性的特点,可以支持广泛的硬件和软件平台。Chrome OS的内核经过了Google团队的定制和优化,以确保其在轻量化和安全性方面具有卓越的表现。 其次,Chrome OS的浏览器是基于Google Chrome浏览器开发的,它是Chrome OS的核心应用之一。Chrome浏览器的特点是快速、安全、简洁,它支持多标签、扩展插件等功能,用户可以在浏览器中完成大部分的工作和娱乐需求。Chrome OS的浏览器作为操作系统的一部分,承担了应用程序的运行和数据存储的功能,使得用户可以随时随地访问和管理自己的数据。 最后,Chrome OS的系统应用包括文件管理器、设置、邮件、日历等功能模块,它们都是基于Web技术开发的,可以在浏览器中运行,并且与Google云服务深度集成。Chrome OS强调云存储和在线应用,用户可以通过Google账户登录,将自己的数据和设置同步到云端,实现多设备间的无缝切换和数据备份。 综上所述,Chrome OS的底层架构包括Linux内核、Google Chrome浏览器和系统应用。通过这种轻量化、安全性强和云服务集成的架构Chrome OS获得了快速启动、节能省电、稳定可靠等优势,并且为用户提供了简单易用的操作界面和丰富的应用生态。 ### 回答3: Chrome OS是由谷歌开发的一种基于Linux内核的操作系统。它的底层架构被设计为简单、安全和快速。 Chrome OS的底层架构主要由三个主要组件组成:Linux内核、Chrome浏览器和Chrome OS服务。 首先,Linux内核是Chrome OS的基础。它提供了操作系统的核心功能,如进程管理、内存管理和设备驱动程序。Linux内核也是Chrome OS与硬件层之间的接口,使得Chrome OS能够与各种硬件设备进行交互。 其次,Chrome浏览器是Chrome OS的主要用户界面。它提供了浏览器功能,如网页浏览、媒体播放和网络连接。Chrome浏览器是Chrome OS的核心应用程序,所有的应用程序、文件和系统设置都在浏览器中运行。 最后,Chrome OS服务是一系列谷歌提供的云服务和技术支持。这些服务包括Google Drive存储服务、Google Play商店应用下载、Chrome OS系统更新和安全补丁更新等。这些服务使得Chrome OS能够与云端进行数据同步、软件更新和安全保护。 总体而言,Chrome OS的底层架构是基于Linux内核的,通过Chrome浏览器提供用户界面,并提供了一系列云服务和技术支持。这个架构使得Chrome OS具备了简单、安全和快速的特点,并且能够适应各种不同设备的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值