浏览器架构概览

浏览器架构概览

浏览器本质上是运行在计算机操做系统下的一个应用软件css

前言知识

多任务

简单地说, 就是操做系统能够同时运行多个任务。
真正的并行执行多任务只能在多核CPU上实现,但在实际应用中,因为任务数量远远多于CPU的核心数量,因此,操做系统也会自动把不少任务轮流调度到每一个核心上执行,让各个任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去。表面上看,每一个任务都是交替执行的,可是,因为CPU的执行速度实在是太快了,咱们感受就像全部任务都在同时执行同样。html

进程

编写完毕的代码,在没有运行的时候,咱们称之为程序;正在运行着的代码,就成为进程
进程是系统资源分配的单位,简单来讲就是一段运行着的程序;
启动一个进程时,系统会给它分配地址空间(每一个进程都有本身独立的地址空间,因此互不影响),创建数据表来维护代码段,堆栈信息,数据段,占用不少资源.
进程之间有本身的通讯方式(IPC), ICP.git

线程

线程就是系统资源调度的单位,是程序执行的最小单位;
能够理解为进程中执行代码的指针,线程存在于进程并执行程序任意部分,由系统的调度算法来决定其如何运行.
线程是共享进程中的数据的,使用相同的地址空间;因此 cpu 切换线程很快,要比操做进程快;
线程间通讯快, 由于他们共享同一进程下的全局变量,静态数据等; 固然这样也会互相影响,利弊都有.github

浏览器结构组成

image
1.用户界面(user interface)
浏览器中菜单栏、地址栏、向前/回退按钮、书签目录等除了页面显示窗口外的全部地方都属于用户界面。算法

2.浏览器引擎(browser engine)
浏览器引擎是各个组件之间通讯的核心,它在用户界面与渲染引擎间传递指令。为渲染引擎提供接口,将用户界面上的给定的网址、用户浏览器操做(如刷新、向前、退后等)信息提供给为渲染引擎;同时,浏览器引擎 为用户界面提供各类如错误提示、资源下载进度等消息。还有,它能够在客户端本地缓存中读写数据。后端

3.渲染引擎(rendering engine)
渲染引擎负责显示请求的内容。例如,若是请求的内容是HTML文件,则它负责解析文件里的html、css等信息,并将网页内容渲染呈现出来。渲染引擎的内部包括了html解析器、css解析器等。浏览器

4.网络模块(networking)
处理网络请求,好比http请求网页、图片资源等。缓存

5.JavaScript解释器(JavaScript interpreter)
网页中常常有JS脚原本动态操做网页,就是靠这个JS引擎来解析执行的。好比Chrome浏览器的V8引擎、Safari浏览器的JavaScriptCore引擎,IE的Chakracookie

6.界面后端(UI backend)
前面介绍的用户界面是展现给用户看到的,界面后端是浏览器的图形库,用来绘制基本的浏览器窗口内控件,如输入框、按钮、单选按钮、组合框和窗口等,不一样浏览器绘制的视觉效果不太想同,但功能基本都是同样的。网络

7.数据存储(data persistence)
管理用户数据,将与浏览会话相关联的各类数据存储在硬盘上,例如保存书签、cookie、缓存、偏好设置等各类数据,可经过浏览器引擎提供的API进行调用。

浏览器架构组成

浏览器本质上是一个软件(应用程序),采用的是多进程架构,软件在运行时会建立多个进程,协同工做,保证程序正常运行...

  • 进程分类:
浏览器进程(主进程): 管理用户交互(如地址栏,书签...),子进程管理,文件存储等(负责tab外的工做)

渲染进程(沙箱模式): 负责页面渲染,JS脚本的执行,页面事件的处理等,能够同时开启多个渲染进程(tab页);
  > js引擎和 render引擎都运行在这个进程下
  - 渲染线程(引擎)
  - js 线程(引擎)

网络进程: 面向渲染进程和浏览器进程等提供网络下载功能

GPU(图形处理器)进程: 处理gpu任务,负责3D绘制

插件进程: 管理浏览器扩展程序等

其余进程...
相关文章
相关标签/搜索