浏览器工作基本原理与架构发展(chrome为例)

浏览器

1.我们打开一个浏览器的一个页面通常需要4个进程
什么是进程?资源分配的最小单元
什么是线程?任务调度的最小单位
简单来说: 你要完成一个项目首先你得分配一个资源吧?你可以想象进程是你的项目一个车间,车间里面有各种各样的工具或者机器(资源),一个项目可能需要多个车间处理,而这几个车间平时都是互不干扰的,当需要通信的时候必须需要一个工具ipc,你可以把他想象成一个通讯工具,负责进程间的通讯.
然后就是线程了,线程你可以想象成车间里面工作的工人,一个进程可能有多个线程,里面线程并行工作,并行工作你可以理解为每个工人都在干着自己的活,或者同时干同一件活,来完成车间的工作
想通了这里的话就会对浏览器的工作(操作系统也是这么个模式,浏览器借鉴了操作系统的设计思想)会有一个比较清晰的理解
比如

1.为什么浏览器不是单进程?

		1.不稳定:早期浏览器确实是单进程,那样就产生了很多严重的问题,早期
		浏览器靠插件来完成web视频,web游戏等功能,可插件是浏览器最容易出问题的模块,
		一个插件出问题,崩溃了,就可能引起整个浏览器的崩溃,
		(工人操作出了问题,问题小那就是本身工作完成不了,问题大比如引发火灾等等,那么整个车间进程就完了!) 
		2.不流畅 .渲染模块出问题,渲染模块主要负责js执行,页面渲染功能,如果这个模块出问题
		,比如js代码里有一段很耗时甚至死循环的操作,那么所有页面都会等待这个耗时任务或者死循环结束
		3. 不安全 同个进程资源共享(车间资源共享,资源不加锁的情况下),那么恶意脚本或者程序就能任意的获取里面的信息了

2.多进程浏览器时代

chrome2008年的架构
1.插件进程:管理插件运行资源
2.渲染进程:解析,渲染,js执行,合成网页图片 (在沙箱里运行,不能读写硬盘上的资源和获取操作系统权限 安全性提高)
3.主进程:下载资源,ipc通信资源等
浏览器为每个页面分配一个插件进程和渲染进程,这样如果出问题也只是当前页面崩溃,不会影响其他的页面(不会影响其他车间)
安全性也有沙箱解决 除非主进程崩溃 浏览器直接关闭

目前的架构
主进程:界面显示,用户交互,进程管理,本地存储等. (一个)
渲染进程:核心任务是将html,css和js转化为用户与之交互的网页,排版引擎bink和js引擎v8都运行在这个进程中,默认情况下,chrome为每个页面创建一个渲染进程.默认在沙箱里运行
GPU进程:早期这个进程只是实现3d css的效果,随后网页越来越精美,所以顺应时代发展ui界面,网页界面都用这个来绘制了
网络进程:主要负责页面的网络资源加载的,之前都是运行在主进程里,后来独立出来,降低耦合度
插件进程:这个不多说了…
用户体验提高了 ,但是造成了更高的资源占用,消耗了更多的资源内存,目前chrome团队借鉴操作系统底层设计模式,想采用面向服务的架构,降低各个模块的耦合度,当然这将是一个漫长的过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值