js在浏览器中运行机制

js在浏览器中运行机制

浏览器工作原理:
浏览器的网络流程,页面渲染的流程,js执行流程,web安全

浏览器的多进程架构
进程和线程

并行处理 能大大提升性能
多线程可以并行处理任务,但是线程不能单独存在的,它是由进程来启动和管理的。
一个进程就是一个程序运行实例,操作系统为一个程序创建一个内存,用来存放代码,运行数据和执行主线程,这样的运行环境叫进程。

线程依附于进程
1进程中任意一个线程执行出错,都会导致怎个进程崩溃
2线程之间可以共享数据
3当一个进程关闭后,操作系统会回收操作系统占用的内存
4 进程之间是的内容是相互隔离的(默认隔离)进程之间的通信ipc机制

单进程浏览器
1 不稳定:早期浏览器需要借助插件来实现的,插件最容易出现问题的,因为插件运行在浏览器中,所以一个插件会引起整个浏览器奔溃。
2 不流畅:所有页面喧嚷模块,js执行环境以及插件都运行在一个线程中(单进程有多线程),同一时刻只能由一个模块可以执行
3 不安全 :插件可以用c++c来编写,通过插件可以获取任意资源。(操作系统就是c++ c来写)

多进程浏览器时代(资源占用率高 解构体系比较复杂)
谷歌第一个发布了多进程架构
1解决不稳定问题:进程相互隔离,当一个插件崩溃时,只是一个进程有问题,其他进程不受影响。
2解决不流畅问题:js是运行在渲染进程中的,所以即使js堵塞来渲染进程,影响到的也只是当前页面
3 安全问题:把插件进程和渲染进程放在沙箱中去运行。沙箱中进程不能读取磁盘的数据
现在的五个进程(之前三个):
js在浏览器中运行机制_第1张图片
主进程:负责页面显示,用户交互,子进程管理,提供存储
渲染进程:把html css js 转化成页面
GPU进程:绘制动画ui界面
网络进程:主要负责页面网络资源的加载
插件进程:负责插件的运行。因为容易崩溃 ,所以需要进程进行隔离。

未来的趋势:谷歌面向服务架构

js执行机制:
代码–>编译(编译环境,创建执行上下文)–>执行
1当js执行全局代码,一定会编译全局代码并创建全局执行上下文,并且全局就只有一份
2当一个函数被调用,函数体内会被编译,创建函数执行上下文,函数执行结束以后,创建的函数执行上下文会被销毁
3当使用eval函数时候,eval代码会被编译,并创建执行上下文

你可能感兴趣的:(javascript,html5)