zoukankan      html  css  js  c++  java
  • linux内核中与进程相关的数据结构(基于linux3.16-rc4)

    1.进程描述符

     1 struct task_struct {
     2 
     3    volatile long state;
     4 
     5   .......
     6 
     7    struct list_head tasks;
     8 
     9   .......
    10 
    11    struct mm_struct *mm, *active_mm;
    12 
    13   .......
    14 
    15    struct vm_area_struct *vmacache[VMACACHE_SIZE];
    16 
    17   ......
    18 
    19    pid_t pid;
    20    pid_t tgid;
    21 
    22   .......
    23    }

    所在文件:include/linux/sched.h

    2.线程描述符(current指向该描述符,并通过该描述符找到进程描述符)

     1  struct thread_info {
     2          struct task_struct      *task;                             /* main task structure */
     3          struct2. exec_domain  *exec_domain;              /* execution domain */
     4          __u32                        flags;                             /* low level flags */
     5          __u32                        status;                          /* thread synchronous flags     */
     6          __u32                        cpu;                             /* current CPU */
     7          int                              saved_preempt_count;
     8          mm_segment_t         addr_limit;
     9          struct restart_block   restart_block;
    10          void __user               *sysenter_return;
    11          unsigned int              sig_on_uaccess_error:1;
    12          unsigned int              uaccess_err:1;              /* uaccess failed */
    13    };

    所在文件:arch/x86/include/asm/thread_info.h

    3.进程的内核栈

    1   union thread_union {
    2 
    3   struct thread_info thread_info;
    4 
    5   unsigned long stack[THREAD_SIZE/sizeof(long)];
    6 
    7    }

    所在文件:include/linux/sched.h

        

    4.进程的运行队列

    1 struct rt_prio_array {                            
    2 
    3    DECLARE_BITMAP(bitmap, MAX_RT_PRIO+1);
    4 
    5    struct list_head queue[MAX_RT_PRIO];
    6 
    7  }

    所在文件:kernel/sched/sched.h

  • 相关阅读:
    centos 7 -- Disk Requirements: At least 134MB more space needed on the / filesystem.
    DNS Server Centos 7
    生成report由Eamil定時寄出
    WRT 版本说明
    cisco linksys ea3500 刷机 openwrt
    [QNAP crontab 定時執行程式
    实例 编辑 .bashrc(不断更新)
    tar命令
    ls -l 显示年份
    git 丢弃本地代码时遇到的问题
  • 原文地址:https://www.cnblogs.com/liangning/p/3861182.html
Copyright © 2011-2022 走看看