web浏览器停止运行此脚本 前端都该懂的浏览器工作原理,你懂了吗?

11/27 23:15:39 来源网站:辅助卡盟网

web浏览器停止运行此脚本 前端都该懂的浏览器工作原理,你懂了吗?

浏览器架构

在讲浏览器架构之前,先理解两个概念,进程和线程。

进程(process)是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,线程(thread)是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

简单的说呢,进程可以理解成正在执行的应用程序,而线程呢,可以理解成我们应用程序中的代码的执行器。而他们的关系可想而知,线程是跑在进程里面的,一个进程里面可能有一个或者多个线程,而一个线程web浏览器停止运行此脚本,只能隶属于一个进程。

大家都知道,浏览器属于一个应用程序,而应用程序的一次执行,可以理解为计算机启动了一个进程,进程启动后,CPU会给该进程分配相应的内存空间,当我们的进程得到了内存之后,就可以使用线程进行资源调度,进而完成我们应用程序的功能。

而在应用程序中,为了满足功能的需要,启动的进程会创建另外的新的进程来处理其他任务,这些创建出来的新的进程拥有全新的独立的内存空间,不能与原来的进程内向内存,如果这些进程之间需要通信,可以通过IPC机制(Inter Process Communication)来进行。

web浏览器停止运行此脚本_停止运行此脚本吗 此页面上的脚本造成web浏览器_易语言超文本浏览框脚本错误

很多应用程序都会采取这种多进程的方式来工作,因为进程和进程之间是互相独立的它们互不影响,也就是说,当其中一个进程挂掉了之后,不会影响到其他进程的执行,只需要重启挂掉的进程就可以恢复运行。

浏览器的多进程架构

假如我们去开发一个浏览器,它的架构可以是一个单进程多线程的应用程序,也可以是一个使用IPC通信的多进程应用程序。

不同的浏览器使用不同的架构,下面主要以Chrome为例,介绍浏览器的多进程架构。

在Chrome中,主要的进程有4个:

停止运行此脚本吗 此页面上的脚本造成web浏览器_易语言超文本浏览框脚本错误_web浏览器停止运行此脚本

web浏览器停止运行此脚本_停止运行此脚本吗 此页面上的脚本造成web浏览器_易语言超文本浏览框脚本错误

这4个进程之间的关系是什么呢?

首先,当我们是要浏览一个网页,我们会在浏览器的地址栏里输入URL,这个时候Browser Process会向这个URL发送请求,获取这个URL的HTML内容,然后将HTML交给Renderer Process,Renderer Process解析HTML内容,解析遇到需要请求网络的资源又返回来交给Browser Process进行加载,同时通知Browser Process,需要Plugin Process加载插件资源,执行插件代码。解析完成后,Renderer Process计算得到图像帧,并将这些图像帧交给GPU Process,GPU Process将其转化为图像显示屏幕。

停止运行此脚本吗 此页面上的脚本造成web浏览器_web浏览器停止运行此脚本_易语言超文本浏览框脚本错误

多进程架构的好处

Chrome为什么要使用多进程架构呢?

第一,更高的容错性。当今WEB应用中,HTML,JavaScript和CSS日益复杂,这些跑在渲染引擎的代码,频繁的出现BUG,而有些BUG会直接导致渲染引擎崩溃,多进程架构使得每一个渲染引擎运行在各自的进程中,相互之间不受影响,也就是说,当其中一个页面崩溃挂掉之后,其他页面还可以正常的运行不收影响。

易语言超文本浏览框脚本错误_停止运行此脚本吗 此页面上的脚本造成web浏览器_web浏览器停止运行此脚本

第二,更高的安全性和沙盒性(sanboxing)。渲染引擎会经常性的在网络上遇到不可信、甚至是恶意的代码,它们会利用这些漏洞在你的电脑上安装恶意的软件,针对这一问题,浏览器对不同进程限制了不同的权限,并为其提供沙盒运行环境,使其更安全更可靠

第三,更高的响应速度。在单进程的架构中,各个任务相互竞争抢夺CPU资源web浏览器停止运行此脚本,使得浏览器响应速度变慢,而多进程架构正好规避了这一缺点。

多进程架构优化

web浏览器停止运行此脚本_停止运行此脚本吗 此页面上的脚本造成web浏览器_易语言超文本浏览框脚本错误

之前的我们说到,Renderer Process的作用是负责一个Tab内的显示相关的工作,这就意味着,一个Tab,就会有一个Renderer Process,这些进程之间的内存无法进行共享,而不同进程的内存常常需要包含相同的内容。

    暂无相关资讯
web浏览器停止运行此脚本 前端都该懂的浏览器工作原理,你懂了吗?