- 就绪态、运行态:父进程调用
fork()
函数创建子进程,子进程处于就绪态,经过os的调度器进入运行态,运行一个时间片
后让出cpu的控制权并返回就绪态。 - 睡眠态:当
cpu的资源
被别的进程
占用时,该进程进入睡眠状态,等待资源。(进程本身也可以调用sleep()
函数来主动进入睡眠状态) - 暂停态:一般是由user发信号给进程使其暂停。
- 僵尸态、死亡态:
exit()
退出函数后,进程进入僵尸状态。必须要等到父进程调用了wait()
函数才会销毁掉存储进程信息的结构体,因为子进程需要通过wait()
函数把退出状态告诉父进程。然后由僵尸态进入死亡态。
- 进程状态有关的宏
TASK_RUNNING,,就绪/运行状态
TASK_INTERRUPTIBLE,,可中断睡眠状态
TASK_UNINTERRUPTIBLE,,不可中断睡眠状态
TASK_TRACED,,调试态(调试程序时发送调试命令后进入)
TASK_STOPPED,,暂停态 (发送信号给进程使其进入暂停状态)
EXIT_ZOMBIE,,僵尸状态
EXIT_DEAD,,死亡状态