进程管理

首先我们弄清楚,进程在linux中的含义:
程序本身并不是进程,进程是处于执行期的程序以及相关资源的总称。注意,有两点:

  • 执行期的程序
  • 相关资源

补充一点:在Linux中,进程的另一个名字就是叫做task,任务。

那么进程在如何存放的?

  • Linux将进程放置在任务队列中,并且用进程描述符进行表示,描述符中包含了进程相关的所有信息。

进程如何区分?

  • 通过PID给每个进程编号,以此来区分进程。

进程有哪些状态?

进程描述符中state中存储着进程的状态信息,系统中的进程必然处于下列五种状态中:

  • task_running(运行)
  • task_interruptible(可中断)--睡眠(阻塞)
  • task_uninterruptible(不可中断)--除了收到信号不会被中断或者准备投入运行,其它与上面一样
  • task_traced(被跟踪进程)
  • task_stop(停止)

有时候我们在执行ps(1)命令时,会有被标记为D状态而又不能被杀死的进程的原因就是这个进程的状态为: 不可中断状态。

Linux进程家族树?

  • 延续UNIX风格,所有进程都是PID为1的进程的后代。

进程最终会结束,那么结束之后就要进行一系列的操作,主要操作有以下几步:
1.设置task_struct为PF_EXITING
2.释放进程内资源
3.重新为子进程寻找父类(防止孤儿进程出现)
4.删除进程描述符

这一章我们了解到进程的一些基本信息及生存周期里面的一些动作。下一章为进程调度,讲解内核以某种机制来控制进程的运行顺序。

你可能感兴趣的:(进程管理)