Linux内核学习(二)

“从一个业内人士的视角来欣赏和理解Linux内核的设计和实现之美。”

进程:是处于执行期的程序以及相关的资源的总称。完全可能存在两个或多个不同的进程执行的是同一个程序。并且两个域两个以上并存的进程还可以共享许多诸如打开的文件、地址空间之类的资源。父进程调用fork()系统产生子进程。

在现代操作系统中,进程提供两种虚拟机制:虚拟处理器虚拟内存

虚拟处理器:虽然实际上可能是许多进程正在分享一个处理器运算资源,但虚拟处理器给进程一种假象,让这些进程觉得自己在独享处理器。

虚拟内存:让进程在分配和管理内在时觉自己拥有整个系统的所有内存资源。

任务队列(task list):内核把进程的列表存放在任务队列的双向循环链表中链表中的每一项都是为task_struct(在32位机器上它大约有1.7KB)、称为进程描述符的结构,该结构定义在文件中。进程描述符中包含一个具体进程的所有信息。


Linux内核学习(二)_第1张图片
进程描述符及任务队列

进程的状态:进程描述符中的state域描述了进程的当前状态。系统中的每个进程都必然处于五种进程状态中的一种。

TASK_RUNNING(运行)----进程是可执行的,或者它正在执行,或者在运行队列中等待执行。

TASK_INTERRUPTIBLE(可中断)----进程正在睡眠(阻塞),等待某些条件的达成。

TASK_UNINTERRUPTIBLE(不可中断)----就算是接收到信号也不会被唤醒或准备投入运行。

__TASK_TRACED----被其他进程跟踪的进程。

__TASK_STOPPED(停止)----进程停止执行

你可能感兴趣的:(Linux内核学习(二))