Linux内核管理子系统和进程管理子系统

内核管理子系统职能:1、管理虚拟地址与物理地址的映射

          2、物理内存的分配

程序:存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体。

进程:是一个执行中的程序,它是动态的实体

进程四要素:

1、有一段程序供其执行。这段程序不一定是某个进程所有,可以与其他进程公用。

2、有进程专用的内核空间堆栈

3、在内核中有一个task_struct数据结构,即通常所说的“进程控制块”。有了这个数据结构,进程才能成为内核调度的一个基本单位接受内核的调度

4、有独立的空间。

Linux内核管理子系统和进程管理子系统

Linux进程状态:最经典的三态,但是Linux的进程状态比这个要复杂

Linux内核管理子系统和进程管理子系统Linux内核管理子系统和进程管理子系统

1.TASK_RUNNING(就绪或者执行)

进程正在被CPU执行,或者已经准备就绪,随时可以执行。当一个进程刚被创建时,就处于TASK_RUNNING状态。 

2.TASK_INTERRUPTIBLE

处于等待中的进程,待等待条件为真时被唤醒,也可以被信号或者中断唤醒。 

3.TASK_UNINTERRUPTIBLE

处于等待中的进程,待资源有效时唤醒,但不可以由其它进程通过信号(signal)或中断唤醒。

4.TASK_KILLABLE

Linux2.6.25新引入的进程睡眠状态,原理类似于TASK_UNINTERRUPTIBLE但是可以被致命信号(SIGKILL)唤醒。 

5.TASK_TRACED

正处于被调试状态的进程。

6. TASK_DEAD

进程退出时(调用do_exit),所处的状态。

Linux进程描述:

Linux内核代码中,线程、进程都使用结构task_struct(sched.h)来表示,它包含了大量描述进程/线程的信息,其中比较重要的有:
pid_t pid; //进程号
vlong state; //进程状态
vint prio; //进程优先级