进程以及Linux中的进程相关概念(三)

来源:互联网 发布:阿里云数据库降低配置 编辑:程序博客网 时间:2024/05/21 06:20

6.进程控制块

       进程控制块(PCB)是进程这一抽象概念在计算机中的描述,是对进程生命周期内所有事情的全面描述。进程和进程控制块之间有非常严格的一一对应关系,在进程的整个生命周期中,内核通过PCB对进程进行控制。
       PCB所包含的内容很多,Linux2.6内核中task_struct已经达到1.7KB的大小,里面的信息相当多,可以简单地归纳为下面三个方面:
      基本信息:亲属关系、标识符
      管理信息(系统和程序指定):进程间通信信息、文件系统信息、虚拟内存信息、调度信息
      控制信息(实时变化):当前状态、时间和定时器信息、寄存器及堆栈状态
     
      当然PCB信息可以有以下更详细的描述:     
      调度时刻需要跟踪的信息:跟踪状态,是否需要调度,上下文,多处理器支持等
      进程结构之间的组织:队列前后指向指针,父进程,子进程
      进程属性:优先级,进程号,对应的程序等等
      用户以及资源配置:计时(跟踪记录各种时间信息),文件相关(掌握的文件资源),内存相关(内存资源管理包括页表映射等配额、用户信息)
      进程间通信、扩展点以及异常处理:信号以及处理的挂钩,各种锁,信号量等

        Linux为每个进程分配一个8KB大小的内存区域thread_union,用于存放该进程两个不同的数据结构:
            thread_info
            –进程的内核态堆栈
       
       下图是对thread_union的示意:
      
       
      内核控制路径所用的堆栈很少,对thread_union来说,8KB足够了。
      thread_info和task_struct中都有一个域指向对方,因此是一一对应的关系。
      进程控制块的所有成员中被引用最频繁的部分、和硬件关系最密切的一些数据存放在thread_info中。

原创粉丝点击