task_struct源码

来源:互联网 发布:java基础面试题2017 编辑:程序博客网 时间:2024/05/17 09:00

struct i387_struct
{
long cwd;            // 控制字(Control word)。
long swd;            // 状态字(Status word)。
long twd;            // 标记字(Tag word)。
long fip;            // 协处理器代码指针。
long fcs;            // 协处理器代码段寄存器。
long foo;
long fos;
long st_space[20];        /* 8*10 bytes for each FP-reg = 80 bytes */
};
// 任务状态段数据结构(参见列表后的信息)。
struct tss_struct
{
long back_link;        /* 16 high bits zero */
long esp0;
long ss0;            /* 16 high bits zero */
long esp1;
long ss1;            /* 16 high bits zero */
long esp2;
long ss2;            /* 16 high bits zero */
long cr3;
long eip;
long eflags;
long eax, ecx, edx, ebx;
long esp;
long ebp;
long esi;
long edi;
long es;            /* 16 high bits zero */
long cs;            /* 16 high bits zero */
long ss;            /* 16 high bits zero */
long ds;            /* 16 high bits zero */
long fs;            /* 16 high bits zero */
long gs;            /* 16 high bits zero */
long ldt;            /* 16 high bits zero */
long trace_bitmap;        /* bits: trace 0, bitmap 16-31 */
struct i387_struct i387;
};

struct task_struct

{

long state;          //任务的运行状态(-1 不可运行,0 可运行(就绪),>0 已停止)。
long counter;     //任务运行时间计数(递减)(滴答数),运行时间片。
long priority;      //运行优先数。任务开始运行时counter = priority,越大运行越长。
long signal;       //信号。是位图,每个比特位代表一种信号,信号值=位偏移值+1。
struct sigaction sigaction[32]; //信号执行属性结构,对应信号将要执行的操作和标志信息。
long blocked;    //进程信号屏蔽码(对应信号位图)。     
int exit_code;    //任务执行停止的退出码,其父进程会取。
        unsigned long start_code  // 代码段地址。
        unsigned long end_code   //代码长度(字节数)。
        unsigned long end_data    //代码长度 + 数据长度(字节数)。
        unsigned long brk              //总长度(字节数)。
        unsigned long start_stack  //堆栈段地址。

         long pid      //进程标识号(进程号)。
         long father //父进程号。
         long pgrp   //父进程组号。
         long session  //会话号。
         long leader    //会话首领

         unsigned short uid    //用户标识号(用户id)。
         unsigned short euid  // 有效用户id。
         unsigned short suid   //保存的用户id。

unsigned short gid    //组标识号(组id)。
        unsigned short egid  //有效组id。
        unsigned short sgid  //保存的组id。
long alarm;         //报警定时值(滴答数)。
long utime          //用户态运行时间(滴答数)。
        long stime          //系统态运行时间(滴答数)。
        long cutime        //子进程用户态运行时间。
        long cstime        //子进程系统态运行时间。
        long start_time   //进程开始运行时刻。
unsigned short used_math;  //标志:是否使用了协处理器。
int tty;             //进程使用tty 的子设备号。-1 表示没有使用。
unsigned short umask;   //文件创建属性屏蔽位。
struct m_inode *pwd;     //当前工作目录i 节点结构。
struct m_inode *root;     //根目录i 节点结构。
struct m_inode *executable;       //执行文件i 节点结构
unsigned long close_on_exec;   //执行时关闭文件句柄位图标志
struct file *filp[NR_OPEN];         //进程使用的文件表结构
struct desc_struct ldt[3];             //本任务的局部表描述符。0-空,1-代码段cs,2-数据和堆栈段ds&ss
struct tss_struct tss;                   //本进程的任务状态段信息结构。

};

0 0
原创粉丝点击