进程的几种状态描述1
就绪
当程序被分配到除cpu以外所有必要资源后,只要在获得cpu的使用权,就可以立即运行。其他资源都准备好,只差cpu资源的状态为就绪状态。在一个系统中可能有多个处于就绪状态的进程,这些进程排成一个队列,被称为就绪队列。阻塞
进程因某种原因无法继续执行的状态。比如打印机,进程向打印机申请,但是打印机是外围设备,反应的比较慢,当进程等待打印机回复的状态。同样有阻塞队列。执行
进程获得cpu使用权,其程序正在执行的状态。在单处理器中(单核),在某个时刻只能是有一个进程处于执行态。创建
创建进程时,拥有PCB但是其他资源还没有就绪的状态(操作系统提供了fork接口,可以让用户创建进程)。终止
进程结束由系统清理或者归还PCB的状态称为终止状态。
进程状态描述2
R-TASK_RUNNING(可执行状态)
只有处于ř态的进程才有可能在CUP上运行,进程的的的task_struct中(进程控制块)会被放入CPU的可执行队列中(一个进程只能出现在一个CPU的可执行队列中),进程调度器从对应的可执行队列中选择一个进程在CPU上执行。S-TASK_INTERRUPTIBLE(可中断的睡眠状态)
处于这个状态的进程因为等待某某事件的发生(比如等待插座连接,等待信号量),而被挂起。这些进程的task_struct的中的结构被放入对应事件的等待队列中。当这些事件发生时(由外部中断触发,或由其他进程触发),对应的等待队列中的一个或多个进程将被唤醒。D-TASK_UNINTERRUPTIBLE(不可中断的睡眠状态)
与TASK_INTERRUPTIBLE状态类似,进程处于睡眠状态,但是此刻进程是不可中断的。不可中断,指的并不是CPU不响应外部硬件的中断,而是指进程不响应异步信号。T-TASK_STOPPED或TASK_TRACED(暂停状态或跟踪状态)
向进程发送一个SIGSTOP信号,它就会因响应该信号而进入TASK_STOPPED状态(除非该进程本身处于TASK_UNINTERRUPTIBLE状态而不响应信号)。(SIGSTOP与SIGKILL信号一样,是非常强制的。不允许用户进程通过信号系列的系统调用重新设置对应的信号处理函数。)向进程发送一个SIGCONT信号,可以让其从TASK_STOPPED状态恢复到TASK_RUNNING状态。Z-TASK_DEAD - EXIT_ZOMBIE(退出状态,进程成为僵尸进程)
进程在退出的过程中,处于TASK_DEAD状态。
在这个退出过程中,进程占有的所有资源将被回收,除了task_struct中的结构(以及少数资源)以外。于是进程就只剩下的task_struct的这么个空壳,故称为僵尸。X-TASK_DEAD - EXIT_DEAD(退出状态,进程即将被销毁)