【进程状态】阻塞态不能转换为运行态/就绪态不能直接转换为阻塞态的原因

【进程状态】阻塞态不能转换为运行态/就绪态不能直接转换为阻塞态的原因_第1张图片

就绪态不能转换为阻塞态

因为阻塞态是处于运行态的进程在运行时主动执行造成阻塞的代码而导致的:

  • 在程序执行阻塞I/O中的readrecv等系统调用时,进程将会一直处于阻塞直到数据到来或者到达设定的超时时间。
  • 进程可以执行sleep系统调用来显式进入阻塞。

处于就绪态的进程无法执行任何造成其阻塞的代码(也就是无法执行read/recv/sleep等阻塞系统调用),故无法转换为阻塞态。

阻塞态不能转换为运行态

只有被调度的进程才会转入运行态,而只有处于就绪态的进程才会被调度,因此阻塞态必须经过就绪态后才能转换为运行态。

你可能感兴趣的:(c语言,开发语言,操作系统)