1、进程的状态及状态转换
尽管每个进程是一个独立的实体,有着自己的程序计数器和内部状态,但进程之间经常需要相互作用。
进程的三种状态为:
- 运行态(该时刻进程实际占用 CPU)。
- 就绪态(可运行,但因为其他进程正在运行而短暂停止)。
- 阻塞态(除非某种外部事件发生,否则进程不能运行)。
进程的三种状态间有四种转换关系,如下图所示。
- 运行 -> 阻塞:当一个进程在逻辑上不能继续运行时发生转换1,如进程等待输入。
- 运行 -> 就绪:当操作系统认为一个运行的进程占用处理器的时间过长,决定让其他进程使用 CPU 时间时,则会发生转换 2,如时间片到。
- 就绪 -> 运行:当一个就绪态的进程被调度程序选中重新占用 CPU 时,发生转换 3。
- 阻塞 -> 就绪:当进程等待的一个外部事件发生时(如输入到达),则发生转换 4。如果此时没有其他进程运行,则立即出发转换 3,该进程便开始运行。
2、进程和线程的区别
(1) 地址空间:线程是进程内的一个执行单元,一个进程至少有一个线程,它们共享进程的地址空间,而进程有自己独立的地址空间;
(2) 资源拥有:进程是资源分配和拥有的基本单位,而同一个进程内的线程共享进程的资源;
(3) 线程是处理器调度的基本单位,但进程不是。