进程Process
场景
- notepad.exe是一个程序,不是进程
- 双击notepad.exe时,操作系统会开启一个进程
定义
- 进程是程序的执行实例
- 程序在CPU上执行时的活动叫做进程
- 实际上并没有明确的定义,只有一些规则
特点
- 一个进程可以创建另一个进程(父进程与子进程)
- 通过任务管理器可以看到进程
了解CPU
特点
- 一个单核CPU,在一个时刻,只能做一件事情
- 那么如何让用户同时看电影、听声音、写代码呢?
- 答案是在不同进程中快速切换
多程序并发执行
- 指多个程序在宏观上并行,微观上串行
- 每个进程会出现「执行-暂停-执行」的规律多个进程之前会出现抢资源(如打印机)的现象
进程的两个状态
进程的两个状态阻塞
等待执行的进程中
- 都是非运行态
- 一些(A)在等待CPU资源
- 另一些(B)在等待I/O完成(如文件读取)
- 如果这个时候把CPU分配给B进程,B还是在等I/O我们把这个B叫做阻塞进程
- 因此,分派程序只会把CPU分配给非阻塞进程
进程的三个状态
进程的三个状态线程Thread的引入
分阶段
- 在面向进程设计的系统中,进程是程序的基本执行实体
- 在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器
引入原因
- 进程是执行的基本实体,也是资源分配的基本实体
- 导致进程的创建、切换、销毁太消耗CPU时间了
- 于是引入线程,线程作为执行的基本实体
- 而进程只作为资源分配的基本实体
- 此处可以以设计师和工程师分开招聘举例
线程Thread
概念
- CPU调度和执行的最小单元
- 一个进程中至少有一个线程,可以有多个线程
- 一个进程中的线程共享该进程的所有资源
- 进程的第一个线程叫做初始化线程
- 线程的调度可以由操作系统负责,也可以用户自己负责
举例
- 浏览器进程里面有渲染引擎、V8引擎、存储模块、网络模块、用户界面模块等
- 每个模块都可以放在一个线程里
网友评论