进程
-
概念:操作系统资源分配的基本单位
-
特性
- 进程之间的地址空间和资源是相互独立
- 一个进程崩溃不会影响其他进程
- 进程可以包含多个线程(至少一个)
-
进程间通信:匿名管道、命名管道、消息队列、共享内存、信号、信号量、socket
-
孤儿进程:父进程退出,子进程仍在运行(确保父进程在退出前正确等待子进程终止)
-
僵尸进程:子进程已经终止,但父进程未回收其资源(在父进程中调用
wait()或waitpid()来回收子进程的资源)
线程
-
线程:CPU调度的最小单位(建立在进程基础上的程序运行单位)
-
特性
- 同一进程的线程共享该进程地址空间和资源
- 一个线程崩溃,它所在进程也会崩溃
- 一个CPU核心单位时间只能执行一个线程(可以并发执行多个线程)
浏览器进程
-
早期浏览器为单进程应用
- 线程崩溃会导致整个浏览器崩溃
- 所有资源共享导致信息安全问题
- 单一进程负责所有任务调度,可能造成卡顿
-
现代浏览器为多进程应用
-
浏览器主进程:负责除标签页外的内容,如前进、后退,地址栏、存储以及协调其他进程等
-
GPU进程:负责图形渲染、硬件加速、css动画、视频、3D等渲染
-
网络进程:负责网络请求和响应,包括DNS解析、HTTP请求等
-
渲染进程
- 负责将 HTML、CSS 和 JavaScript 转换为用户可以交互的网页
- 一般而言每个标签页会打开一个渲染进程
-
插件进程:负责插件运行
-
-
标签页之间通信:LocalStorage/SessionStorage、ShareWorker、postMessage等
浏览器渲染进程中的线程
- GUI渲染线程:负责解析HTML和CSS
- JS引擎线程:负责解析与执行JS(渲染进程中只有一个该线程,同时该线程与GUI线程不能同时执行)
- 定时器线程:负责setInterval和setTimeOut执行
- 异步请求线程
- webWorker线程