进程
进程是启动一个程序时,操作系统会为其创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,这样的运行环境为进程。
单进程与多进程
单进程浏览器
单进程浏览器所有功能模块都是运行在同一个进程中,而这样会导致其不稳定、不流畅、不安全。
● 不稳定:单进程很容易崩溃,导致全部功能失效,因为功能都绑定在一个进程上
● 不流畅:当一个进程被阻塞,就会出现浏览器整体的卡顿
● 不安全:通过C/C++写的插件可以对系统执行写入与读取,对信息造成危害
多进程浏览器
解决了不稳定、不流畅、不安全:
● 稳定:多进程分工,每个进程处理不同的功能模块,当一个进程崩溃后、其他模块的进程仍处于工作状态,不会导致浏览器的卡死。
● 流畅:当一个进程被阻塞,其他页面的进程并不会受到影响,所以除了阻塞进程页面,其他页面都是正常状态。
● 安全:通过安全沙箱,将主进程之外的进程放进安全沙箱,有效阻止一部分功能模块对系统进行有害操作。
多进程功能模块
浏览器进程:负责页面显示、子进程管理、用户交互、提供存储等功能。
渲染进程:将HTML、CSS、JavaScript转化为用户观察交互的页面。放于安全沙箱中。
GPU进程:负责3D绘画。
网络进程:主要负责页面的网络资源加载。
插件进程:负责插件的运行。
线程
线程是进程的基本单位,由进程启动和管理。线程依附于进程,而进程中使用多线程并行处理能提升运算效率。线程是不能单独存在的,它是由进程来启动和管理的
线程依附于进程,且进程中使用多线程并行处理来提升运算效率
特点
● 进程中任意线程出错,会导致整个进程崩溃
● 线程之间共享进程数据
● 进程关闭后,操作系统会回收进程所占用内存
● 进程之间内容相互隔离
单线程与多线程
单线程
一个线程处理一个任务,单线程会将一步一步的处理代码块
A->B->C->D
多线程
A->B
C->D
多线程仅需要两步