Linux内核的一种数据结构--task_struct

来源:互联网 发布:如何开发三维软件 编辑:程序博客网 时间:2024/05/21 21:43

在linux中每一个进程都由task_struct数据结构来定义.task_struct就是我们通常所说的PCB.她是对进程控制的唯一手段也是最有效的手段.当我们调用fork()时, 系统会为我们产生一个task_struct结构。然后从父进程,那里继承一些数据, 并把新的进程插入到进程树中,以待进行进程管理。因此了解task_struct的结构对于我们理解任务调度(在linux中任务和进程是同一概念)的关键。 

task_struct:

  • 进程状态 ,将纪录进程在等待,运行,或死锁 
  • 调度信息, 由哪个调度函数调度,怎样调度等 
  • 进程的通讯状况 
  • 因为要插入进程树,必须有联系父子兄弟的指针, 当然是task_struct型
  • 时间信息, 比如计算好执行的时间, 以便cpu分配
  • 标号 ,决定改进程归属  
  • 可以读写打开的一些文件信息 
  • 进程上下文和内核上下文 
  • 处理器上下文 
  • 内存信息  
因为每一个PCB都是这样的, 只有这些结构, 才能满足一个进程的所有要求。打开./usr/src/kernels/2.6.32-431.el6.i686/include/linux/sched.h(centos6.5)可以找到task_struct的定义 


1 0
原创粉丝点击