深入现代浏览器(第一部分)【chrome 浏览器架构】

CPU, GPU, 内存, 和多线程架构

在这四篇博客系列中, 我们深入到Chrome浏览器内部, 从高级架构到渲染通道的细节, 进行观察. 如果你曾好奇浏览器如何把你的代码变成网站的功能, 或者你不确定为什么建议使用特殊的技术来提高性能, 那这个系列就是为你设计的.

作为这个系列的第一部门, 我们将会查看电脑的一些核心感念和Chrome的多线程架构.

计算机核心CPU和GPU

首先我们要了解浏览器的运行环境, 我们需要理解几个计算机的核心部分, 以及他们都做了什么.

CPU

图1: 4CPU内核, 就像办公司工作人员坐在每一张桌子钱处理到来的任务.

首先, 是中央处理器(Center Processing Unit), 也就是CPU. CPU被认为是计算机的大脑. 一个CPU核, 想象成一个官方工作者, 能够处理一个又一个不同的任务. 过去大多时候, CPU是一个简单的芯片. 一个内核就像在同一个芯片中的另一个CPU. 现代电子产品中, 通常不止一个核心, 给了你手机和笔记本电脑更强大的处理功能.

GPU

在这里插入图片描述

图2: 许多带着扳手的GPU处理器内核, 表明他们只能处理有限的任务.

图像处理器(Graphics Processing Unit), 也就是GPU, 是计算机的另一个部分. 和CPU不同, GPU擅长处理一些简单的任务, 但是可以同时跨域多个内核. 顾名思义, 起初是为了处理图像开发的. 这就是为什么在图形环境中, 使用GPU, 或者GPU支持, 总是和更快的渲染, 更顺畅的交互相关联. 近几年, 随着加速GPU计算, GPU有可能单独完成越来越多的计算.

当你在电脑或者手机打开一个应用, CPU和GPU驱动这个应用. 在通俗的说, 应用程序通过操作系统的机制, 运行在CPU和GPU上.

在这里插入图片描述

图3: 电脑的三层体系结构. 机器硬件层在最底部, 操作系统层在中间, 应用在最上面.

在进程和线程中运行程序

在这里插入图片描述

图4: 进程就好像一个封闭的盒子, 线程就好像抽象的鱼在进程中游动

在讲解浏览器的体系结构之前, 需要认识另一个概念, 就是进程和线程. 一个应用的运行, 能够被理解为一个进程. 一个线程存在进程中, 也就是执行程序的某一个部分.

当你运行一个程序的时候, 一个进程就被创建了. 这个程序也许创建了(许多)线程来帮助它工作, 但这是非必须的. 操作系统提供给进程一块内存空间用来工作, 并且所有的应用都保持在一个各自的内存空间中. 当你关闭这个应用的时候, 这个进程才会被操作系统从内存中清除.
在这里插入图片描述

图5: 进程使用空间示意图, 以及如何存储一个应用.查看动画

一个进程能够要求操作系统再运行其他的进程来运行不同的任务. 这样搞的时候, 内存会给新的进程分配不同的空间. 两个进程之间可以使用IPC(Inter Process Communication)进行通信. 许多应用使用这种设计进行工作, 所以如果一个工作进程不再响应, 它能够在不停止应用程序在进程上运行的其他部分, 而重新启动.

在这里插入图片描述

图6: 不同的进程之间通过设计的IPC进行通信.查看动画

浏览器设计

所以现在的浏览器如何使用进程和线程? 它是使用了一个进程多个线程? 还是使用了多个进程, 每个进程又有很多的线程, 进程之间使用IPC通信呢?

在这里插入图片描述

图7: 不同的浏览器使用不同的进程/线程架构

这里有一点需要注意, 不同的架构是实现细节的不同. 如何构建一个浏览器, 并没有规范. 一个浏览器某个方法的实现, 可能和另一个完全不同.

为了这个博客系列, 我们会使用Chrome最近的架构, 正如下图展示的.

第一张图表示浏览器进程正在协调处理着其他功能模块的进程. 对于渲染进程, 每一个tab页都会创建一个渲染进程. 之前, 当一个tab页准备好的时候, chrome就分配给一个进程. 现在它尝试给每一个网站提供自己的进程, 包括iframes(详见: Site Isloation)
在这里插入图片描述
图8: 此图表示Chrome的多进程架构. 渲染进程下展示了多个图层, 表示Chrome为每一个tab页运行了多个渲染进程.

各种进程分别控制了什么

流程及其控制的内容
浏览器进程控制应用程序的“chrome”部分,包括地址栏、书签、后退和前进按钮。 还处理 Web 浏览器的不可见的特权部分,例如网络请求和文件访问。
渲染器进程控制显示网站的选项卡内的任何内容。
插件进程控制网站使用的任何插件,例如 flash。
图形处理器进程独立于其他进程处理 GPU 任务。它被分成不同的进程,因为 GPU 处理来自多个应用程序的请求并将它们绘制在同一个表面上。

处理其他进程中被隔离的任务.它被分散到各个进程中, 因为GPUS的处理请求来自各个应用, 并把他们画到同一个平面上

在这里插入图片描述
图9: 不同的进程指向浏览器不同的UI部分.

还有更过的进程, 例如: 扩展进程, 公用进程等. 如果你想看到更多的进程运行在你的Chrome, 点击有商家的三个点. 选择, More Tools, 再选择, Task Manager. 这会打开包括当前运行进程列表的窗口, 并且可以看到正在使用的CPU/内存等情况.

在这里插入图片描述

Chrome多进程架构的好处

刚刚, 我提到Chrome使用的是多个渲染进程.最简单的情况下: 你可以想象每个tab页都有自己的渲染进程. 如果你有三个tab页打开, 每个tab页都独立运行一个渲染进程. 若其中要给tab页不再响应, 然后你可以关闭这个不响应的tab页并继续使用, 保证其他的tab页不受影响. 如果所有的tab页都运行在同一个进程中, 当一个tab页不响应的时候, 所有的tab页都不响应了. 那将十分糟糕.
在这里插入图片描述

图10: 演示了每一个tab页中运行了不同的进程.查看动画

浏览器的分离工作方法的另一个好处就是不同的进程是安全沙箱化. 因为操作系统提供了一种方法限制进程的提权, 所以, 浏览器可以用沙箱的方法保护一些功能上的进程. 举个例子: Chrome限制了各种处理输入进程(例如渲染进程)随心所欲的文件访问权.

因为进程有各自的私人内存空间, 他们通常包含公共设施的副本(例如V8是Chrome的JS引擎). 如果他们线程不能在同一个进程中, 互相之间没有分享的方式, 就会消耗更多的内存空间.为了节省内存, Chrome对于线程能够掉起多少个线程. 这种限制取决与你设备提供的内存, 和CPU的支持, 但当Chrome达到极限时, 它会在同一个进程中运行多个tab页.

节省更多的内存, Chrome中的服务

相同的方式应用在浏览器的进程中. Chrome正在经历一个结构的改变. 将浏览程序的每一个部分作为一个服务运行, 就可以轻松的分成不同的进程, 或者聚合成一个进程.

普通的想法是: 当Chrome运行在强大的硬件上时, 它的程序会分成不同的服务运行在不同的进程中, 以此通过更多的稳定性, 但如果运行在资源受限的设备上, Chrome会把服务放到一个进程中来节省内存空间. 在这种变化之前, 类似的用合并进程来减少内存的使用, 已经在安卓平台上使用过了.
在这里插入图片描述
图11: 展示了Chrome的服务体系从多个服务分散在多个进程中, 到合并到一个进程中.查看动画

每一帧的渲染进程 - 站点隔离(Site Isolation)

Site Isolation是Chrome近期介绍的功能, 能够为夸站点服务运行不同的渲染进程. 我们正在讨论每一个tab模型都使用一个渲染进程, 那样便允许跨站点的iframes运行在同一个渲染进程中, 不同的站点就可以分享内存空间. 运行一个a.com和一个b.com在同一个渲染进程中, 看起来没问题. 同源策略web的核心安全机制, 它可以确保一个站点, 在另一个站点不同的情况下, 不能访问数据. 绕过此策略是安全攻击的主要目标. 进程分离, 是分离站点最有效的方式. 发生崩溃和不确定错误的时候Meltdown and Spectre, 我们需要使用进程来分离站点, 让其变得更加容易排查. 自从Chrome67以后, 站点分离的技术在桌面上是默认开启的, 每一个在tab中夸站点的iframe, 都会获得一个分离的渲染进程.

在这里插入图片描述

图12: 展示站点分离, 多个渲染进程执行站点内部的iframes.

站点分离技术能够使用经过了多年的努力. 站点分离不是简单的分配不同的渲染进程; 它从根本上改变了iframes之间的通信方式. 打开一个上面有iframes的页面的devtools, 这就意味着devtools必须做一些幕后的工作, 让它看起来很天衣无缝. 即使运行了一个简单的Ctrl+F, 在页面中查找一个单词, 也表示需要跨域不同的熏染进程进行查找. 现在你可以看到原因, 我社么浏览器引擎发布站点分离的时候, 作为一个主要的里程碑功能

总结

在这里, 我们从更高层次总结了浏览器高级架构的, 然后总结了多进程结构的好处. 也总结了Chrome服务和站点分离, 这些与多进程深深相关的功能.在下一篇文章里, 我们深入了解进程和线程都干了什么, 来显示一个网站.

原文地址: https://developers.google.com/web/updates/2018/09/inside-browser-part1

转载来源:[https://twinkle.blog.csdn.net/article/details/120031894](https://twinkle.blog.csdn.net/article/details/120031894)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WAP(无线通讯协议)是在数字移动电话、互联网或其他个人数字助理机(PDA)、计算机应用乃至未来的信息家电之间进行通讯的全球性开放标准。这一标准的诞生是WAP论坛成员努力的结果,WAP论坛是在1997年6月,由诺基亚、爱立信、 摩托罗拉和无线星球(Unwi redPlanet)共同组成的。   通过WAP这种技术,就可以将Internet 的大量信息及各种各样的业务引入到移动电话、PALM等无线终端之中。无论你在何地、何时只要你需要信息,你就可以打开你的WAP手机,享受无穷无尽的网上信息或者网上资源。   WAP能够运行于各种无线网络之上,如GSM、GPRS、CDMA等。WML是无线注标语言(Wireless Makeup language)的英文缩写。支持WAP技术的手机能浏览由WML描述的Internet内容。   WML是以XML为基础的标记语言,用在规范窄频设备,如手机、呼叫器等如何显示内容和使用者接口的语言。因为窄频使得WML受到部分限制,如较小型的显示器、有限的使用者输入设备、窄频网络联机、有限的内存和资源等。   WML支持文字和图片显示,内容组织上,一个页面为一个Card,而一组Card则构成一个Deck。当使用者向服务器提出浏览要求后,WML会将整个Deck发送至客户端的浏览器,使用者就可以浏览Deck里面所有Card的内容,而不需要从网络上单独下载每个Card。   通过WAP这种技术,就可以将Internet的大量信息及各种各样的业务引入到移动电话、PALM等无线终端之中。无论在何时、何地只要需要信息,打开WAP手机,用户就可以享受无穷无尽的网上信息或者网上资源。如:综合新闻、天气预报、股市动态、商业报道、当前汇率等。电子商务、网上银行也将逐一实现。通过WAP手机用户还可以随时随地获得体育比赛结果、娱乐圈趣闻等,为生活增添情趣,也可以利用网上预定功能,把生活安排的有条不紊。   WAP协议包括以下几种:   1、WirelessApplicationEnvironment(WAE)   2、WirelessSessionLayer(WSL)   3、WirelessTransactionLayer(WTP)   4、WirelessTransportLayerSecurity(WTLS)   5、WirelessTransportLayer(WDP)   其中,WAE层含有微型浏览器、WML、WMLSCRIPT的解释器等等功能。WTLS 层为无线电子商务及无线加密传输数据时提供安全方面的基本功能。
学校学生选课管理 源码描述: 一、源码特点 1、老师或学生根据自己的账号登录即可。【测试账号:学生身份:(账号/密码):(123456/123456)】 2、如果本服务器已经注册,再次注册将出现“ 服务器已经授权,不需要重复申请 二、菜单功能 1、特色重点说明: a.WEB兼容.(ie9+,google,firefox…) b.支持手机端与微信端。 兼容浏览器:IE9+ FireFox, Safari, Chrome and more. 软件视频:http://edu.25175.com 2、本套软件适合于各个学校学生选课管理系统。没有复杂的操作,普通人员都很容易上手实践。并且在软件上不需要投入很多的人力培训进行操作。 学生,老师,账号,都可以由管理导入。 本管理平台,采用了BS架构开发,利用.NET技术和SQLserver数据库进行系统的开发,系统是一款专业的选课管理平台。所有普通用户无需安装和繁琐的配置,因为我们的管理平台运行在服务器上.使用时所有要做的就是登录系统。 管理且使用好软件可以有效提高您的生产力和效率。对于学校/企业来说,时间就是金钱 -- 生产率的提高,可以促使节约更多的成本。 使用者可以随时随地在任何操作系统中服务。用户端支持浏览器访问及手机访问两种方式。目录(文件)类似于资源管理器形式进行管理,它支持无限级分类,服务端对于目录、文件具有自动检索功能,无须管理员干预,极大方便管理员日常维护与管理。 3、后期完善更新: 学生用户: 显示和修改个人信息:学生登录系统后,可以查看和修改学生的个人信息,如姓名,性别,电话等。 查看必修课程:学生登录后,可以查看所有的必修课程。查看该课程的信息,上课时间地点,开课教师信息等。 选择选修课程:学生登录系统后,在所有选修课程中可以选择至少两门选修课程。同时可以查看相关信息。 锁定选课信息:学生登录系统,确定了所选教师用户: 显示和修改个人信息:教师用户登录系统后,可以查看和修改教师的个人信息。 开设课程:教师用户登录系统后,可以开设课程,可以设置该课程,报名方式,课程性质,开课组,开课校区,录取方式,预定教材,评分方式、限制性别、限制要求等功能。 编辑课程上课时间:教师在开设了课程后,可以灵活地设置上课时间、地点、限定人数、学时等。 给学生分数:课程结束后,教师用户登录系统,可以为学过课程的学生给予相应的成绩,若及格,给予学生学分等。 课程后,可以锁定自己的选课信息,以防被别人或则自己不小心修改。 查看最终选课信息:学生登录系统后,可列出已选择的课程,若选课信息未被锁定,则可以退选等。 查看学分和成绩课程结束后,学生登录系统可查看自己学习课程的成绩和已获的学分。 三、注意事项 1、开发环境为Visual Studio 2015,数据库为SqlServer2008,使用.net 4.6开发。开发语言:VB.net 2、数据库文件在DB文件夹中,附加即可 3、后台地址:http://t.25175.com:8001/ 4、所有设置默认在后面系统显示为第一条 5、在没有开启任何状态时 ,关闭屏蔽此选项 6、不能重复选同门课 7、设定为“关闭”的选项,在课程登记时不会显示出来 8、如果全部 关闭, 自动弹出 “选项至少一项开启”

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值