<-Home
进程&&线程
进程
进程:CPU资源分配的最小单位,程序的一次执行
- 程序的执行是需要其对应的相关资源的
- 这些相关资源就构成了所说的程序上下文
- 程序被分配到CPU之后开始执行
- 程序执行完成或者CPU分配时间到了,会被切出去,执行下一个程序
- 在被切出去之前,需要保存程序上下文,这是程序下一次被CPU执行时的上下文
所以说: 进程 = 程序的一次执行 = CPU加载上下文+CPU执行+CPU保存上下文
线程
线程:CPU的基本调度单位
一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线
线程共享了进程的程序上下文环境
进程和线程都是一个时间段的描述,是CPU工作时间段的描述,不过是颗粒大小不同。
多进程与多线程
- 多进程:同一时间段,系统允许同时有两个或者两个以上进程同时处于运行状态;多进程带来的好处是明显的,比如你可以听歌的同时,打开编辑器敲代码,编辑器和听歌软件的进程之间丝毫不会相互干扰;
- 多线程: 程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务;
以Chrome浏览器中为例,当你打开一个 Tab 页时,其实就是创建了一个进程,一个进程中可以有多个线程(下文会详细介绍),比如渲染线程、JS 引擎线程、HTTP 请求线程等等。当你发起一个请求时,其实就是创建了一个线程,当请求结束后,该线程可能就会被销毁。
参考:
名词:
- IPC (Inter-Process Communication)
Chrome 架构:
- 主进程
- 插件进程
- 网络进程
- 备用渲染进程
- GPU 进程
- Storage 进程
- Audio Service 进程
- 代码编译工具进程(V8)
- Tab 渲染进程
- GUI 渲染线程
- JS引擎线程
- 事件触发线程
- 定时触发线程
- 异步http线程
浏览器页面加载完成触发顺序:DOMContentLoaded(dom) -> load(dom cssom image)