Linux - 프로 세 스 - 데이터 구조

4623 단어 LinuxOS
     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 pgrp                         。

    // long session                     。

    // long leader                       。

    // int groups[NGROUPS]                 。          。

    // task_struct *p_pptr                   。

    // task_struct *p_cptr                     。

    // task_struct *p_ysptr                          。

    // task_struct *p_osptr                          。

    // 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 timeout                         。

    // long alarm                         (   )。

    // long utime                           (   )。

    // long stime                           (   )。

    // long cutime                             。

    // long cstime                             。

    // long start_time                       。

    // struct rlimit rlim[RLIM_NLIMITS]            。

    // unsigned int flags;                 ,    149     (    )。

    // 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      。

    // struct m_inode * library            i      。

    // unsigned long close_on_exec                。(  include/fcntl.h)

    // struct file * filp[NR_OPEN]          ,  32 。            。

    // struct desc_struct ldt[3]           。0- ,1-   cs,2-      ds&ss。

    // struct tss_struct tss                     。

    // ======================================

105 struct task_struct {

106 /* these are hardcoded - don't touch */

107         long state;     /* -1 unrunnable, 0 runnable, >0 stopped */

108         long counter;

109         long priority;

110         long signal;

111         struct sigaction sigaction[32];

112         long blocked;   /* bitmap of masked signals */

113 /* various fields */

114         int exit_code;

115         unsigned long start_code,end_code,end_data,brk,start_stack;

116         long pid,pgrp,session,leader;

117         int     groups[NGROUPS];

118         /*

119          * pointers to parent process, youngest child, younger sibling,

120          * older sibling, respectively.  (p->father can be replaced with

121          * p->p_pptr->pid)

122          */

123         struct task_struct      *p_pptr, *p_cptr, *p_ysptr, *p_osptr;

124         unsigned short uid,euid,suid;

125         unsigned short gid,egid,sgid;

126         unsigned long timeout,alarm;

127         long utime,stime,cutime,cstime,start_time;

128         struct rlimit rlim[RLIM_NLIMITS];

129         unsigned int flags;     /* per process flags, defined below */

130         unsigned short used_math;

131 /* file system info */

132         int tty;                /* -1 if no tty, so it must be signed */

133         unsigned short umask;

134         struct m_inode * pwd;

135         struct m_inode * root;

136         struct m_inode * executable;

137         struct m_inode * library;

138         unsigned long close_on_exec;

139         struct file * filp[NR_OPEN];

140 /* ldt for this task 0 - zero 1 - cs 2 - ds&ss */

141         struct desc_struct ldt[3];

142 /* tss for this task */

143         struct tss_struct tss;

144 };

좋은 웹페이지 즐겨찾기