linux内核基础进程管理
发布网友
发布时间:2022-04-19 14:00
我来回答
共1个回答
热心网友
时间:2023-09-26 00:34
linux内核基础进程管理
进程管理
进程:
处于执行期的程序(目标码存放在内存中),进程是其所用的资源和打开的文件描述符,CPU的使用情况,挂起的信号,内核的内部数据等等一系列的信息与资源的总称。
执行线程:
简称线程,是在进程中活动的对象,每一个线程都拥有一个独立的程序计数器,进程栈,和一组进程寄存器。
在内核看来,线程只是一种特殊的进程,所以内核的调度对象是线程,而不是进程。
进程提供两种虚拟机制:
虚拟处理器和虚拟内存,其实就是一种假象,给进程提供的一种假象,好像进程正在独立的使用所有的内存资源与整个处理器,假象一直是计算机的一个重要问题,在《深入理解计算机系统》一书中有更详细的描述。
进程描述符及任务结构:
内核把进程的列表放在一个叫做任务队列的双向链表中,其中的每一项是一个结构体,task_struct这是一个称为进程描述符的结构这个结构包含一个进程所需的所有信息。在32位机器上就有1.7KB已经不小了。
分配进程描述符:
linux通过slab分配器分配进程描述符。现在一般建立一个struct thread_info 结构体来记录进程描述符的,这个结构体是为了减少对寄存器的依赖,尤其是像X86 这种寄存器较少的结构,一般进程描述符是提前分配并且在一个进程死亡后它的描述符还可以再次使用所以linux的进程创建非常迅速。
进程描述符的存放:
内核通过唯一的进程标识值或者PID来标识每一个进程。PID其实是一个整形,可以通过改变系统代码的宏值来改变进程ID的上限。