本节目标:linux
进程的三种基本状态数据结构
就绪(Ready)状态ide
当进程已分配到除CPU之外的全部必要的资源,只要得到处理机即可当即执行,这时的进程状态称为就绪状态。函数
执行(Running)状态
当进程已得到处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。操作系统
阻塞(Blocked)状态
正在执行的进程,因为等待某个事件发生而没法执行时,便放弃处理机而处于阻塞状态。引发进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能知足、等待信件(信号)等。设计
状态转换图:指针
一个进程在运行期间,不断地从一种状态转换到另外一种状态,它能够屡次处于就绪状态和执行状态,也能够屡次处于阻塞状态。调试
(1) 就绪→执行
处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。blog
(2) 执行→就绪
处于执行状态的进程在其执行过程当中,因分配给它的一个时间片已用完或更高优先级的进程抢占而不得不让出处理机,因而进程从执行状态转变成就绪状态。队列
(3) 执行→阻塞
正在执行的进程因等待某种事件发生而没法继续执行时,便从执行状态变成阻塞状态。
(4) 阻塞→就绪
处于阻塞状态的进程,若其等待的事件已经发生,因而进程由阻塞状态转变为就绪状态。
(5) 运行→终止
程序执行完毕,撤销而终止
以上是最经典也是最基本的三种进程状态,但如今的操做系统都根据须要从新设计了一些新的状态。
如linux:
其和浅度睡眠基本相似,但有一点就是不可被其余进程信号或时钟中断唤醒。Linux 使用TASK_UNINTERRUPTIBLE 宏表示此状态。
状态转换图以下:
就绪态在支持虚拟内存的操做系统中可能分为:在内存中就绪和在交换空间就绪,由于支持虚拟内存的操做系统会将当前不太活跃的一些进程交换到交换空间,交换空间就绪进程要运行要先换人内存出入内存就绪态,在由cpu调度执行。
进程描述信息:
进程控制信息:
资源信息:
现场保护信息(cpu进行进程切换时):
能够经过:cat /proc/sys/kernel/pid_max 查看系统支持多少进程
init进程其实是用户进程,它是一个程序,在/sbin/init,linux启动的第一个进程
实际上linux中还存在0号进程(内核进程),它是一个空闲进程,它进行空闲资源的统计及交换空间的换入换出,1(init)进程是由0号进程建立的。
进程终止时操做系统作如下工做: