一、浏览器的多进程概括
要想搞明白什么是浏览器的多进程,首先得知道什么是进程。按照维基百科的说法:
进程是计算机中已运行程序的实体。进程是线程的容器,进程本身不运行。程序本身只是指令的集合,进程才是程序(指令)的真正运行。每个程序可以有多个进程,每个进程都有自己的资源。
简单来讲,进程就是CPU资源分配的最小单位,而线程则是CPU调度的最小单位。那什么又是单线程和多线程呢,我们来看一小段代码:
var a = 1 + 10086
var b = 100 * 2
var c = (20 + 1) * 2
var d = 100/10
var e = a + b + c + d
console.log(e)
譬如上面的代码,如果是在单线程的运行环境比如JavaScript,就会需要将上面的计算一个个的去执行完成,然后得出运行结果,也就需要进行六步才能将e打印出来,但如果是在多线程的运行环境中则只需要使用四个线程来同时计算上面的四个运算,待上面的四个运算全部完成后再把他们相加,然后再打印出来。因此使用多线程的并行运算可以大大的提高程序的性能以及效率。
但虽然多线程可以有效的提高程序的运行效率,但它是不能单独存在的,它需要进程的启动与管理。简单来说,进程与线程之间会存在以下四种关系:
进程中的任意一线程执行出错,都会导致整个进程的崩溃。很常见就是JavaScript出现的执行线程出错时会导致整个页面进程的崩溃,而导致页面白屏。
线程之间共享同进程中的数据。
当一个进程关闭之后,操作系统会回收进程所占用的内存。
进程之间的内容会相互隔离。每个进程都只能访问自己访