
就绪态
不能转换为阻塞态
:
因为阻塞态是处于运行态的进程在运行时主动执行造成阻塞的代码而导致的:
- 在程序执行阻塞I/O中的
read
、recv
等系统调用时,进程将会一直处于阻塞直到数据到来或者到达设定的超时时间。 - 进程可以执行
sleep
系统调用来显式进入阻塞。
处于就绪态的进程无法执行任何造成其阻塞的代码(也就是无法执行read/recv/sleep
等阻塞系统调用),故无法转换为阻塞态。
阻塞态
不能转换为运行态
:
只有被调度的进程才会转入运行态,而只有处于就绪态的进程才会被调度,因此阻塞态必须经过就绪态后才能转换为运行态。