http://blog.csdn.net/qq_26768741/article/details/54348586

  1. struct task_struct {
  2. volatile long state;    /* -1 unrunnable, 0 runnable, >0 stopped */
  3. struct thread_info *thread_info;
  4. atomic_t usage;
  5. unsigned long flags;    /* per process flags, defined below */
  6. unsigned long ptrace;
  7. int lock_depth;     /* Lock depth */
  8. int prio, static_prio;
  9. struct list_head run_list;
  10. prio_array_t *array;
  11. unsigned long sleep_avg;
  12. long interactive_credit;
  13. unsigned long long timestamp;
  14. int activated;
  15. unsigned long policy;
  16. cpumask_t cpus_allowed;
  17. unsigned int time_slice, first_time_slice;
  18. struct list_head tasks;
  19. struct list_head ptrace_children;
  20. struct list_head ptrace_list;
  21. struct mm_struct *mm, *active_mm;
  22. /* task state */
  23. struct linux_binfmt *binfmt;
  24. int exit_code, exit_signal;
  25. int pdeath_signal;  /*  The signal sent when the parent dies  */
  26. /* ??? */
  27. unsigned long personality;
  28. int did_exec:1;
  29. pid_t pid;
  30. pid_t __pgrp;       /* Accessed via process_group() */
  31. pid_t tty_old_pgrp;
  32. pid_t session;
  33. pid_t tgid;
  34. /* boolean value for session group leader */
  35. int leader;
  36. /*
  37. * pointers to (original) parent process, youngest child, younger sibling,
  38. * older sibling, respectively.  (p->father can be replaced with
  39. * p->parent->pid)
  40. */
  41. struct task_struct *real_parent; /* real parent process (when being debugged) */
  42. struct task_struct *parent; /* parent process */
  43. struct list_head children;  /* list of my children */
  44. struct list_head sibling;   /* linkage in my parent's children list */
  45. struct task_struct *group_leader;   /* threadgroup leader */
  46. /* PID/PID hash table linkage. */
  47. struct pid_link pids[PIDTYPE_MAX];
  48. wait_queue_head_t wait_chldexit;    /* for wait4() */
  49. struct completion *vfork_done;      /* for vfork() */
  50. int __user *set_child_tid;      /* CLONE_CHILD_SETTID */
  51. int __user *clear_child_tid;        /* CLONE_CHILD_CLEARTID */
  52. unsigned long rt_priority;
  53. unsigned long it_real_value, it_prof_value, it_virt_value;
  54. unsigned long it_real_incr, it_prof_incr, it_virt_incr;
  55. struct timer_list real_timer;
  56. struct list_head posix_timers; /* POSIX.1b Interval Timers */
  57. unsigned long utime, stime, cutime, cstime;
  58. unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw; /* context switch counts */
  59. u64 start_time;
  60. /* mm fault and swap info: this can arguably be seen as either mm-specific or thread-specific */
  61. unsigned long min_flt, maj_flt, nswap, cmin_flt, cmaj_flt, cnswap;
  62. /* process credentials */
  63. uid_t uid,euid,suid,fsuid;
  64. gid_t gid,egid,sgid,fsgid;
  65. int ngroups;
  66. gid_t   groups[NGROUPS];
  67. kernel_cap_t   cap_effective, cap_inheritable, cap_permitted;
  68. int keep_capabilities:1;
  69. struct user_struct *user;
  70. /* limits */
  71. struct rlimit rlim[RLIM_NLIMITS];
  72. unsigned short used_math;
  73. char comm[16];
  74. /* file system info */
  75. int link_count, total_link_count;
  76. struct tty_struct *tty; /* NULL if no tty */
  77. /* ipc stuff */
  78. struct sysv_sem sysvsem;
  79. /* CPU-specific state of this task */
  80. struct thread_struct thread;
  81. /* filesystem information */
  82. struct fs_struct *fs;
  83. /* open file information */
  84. struct files_struct *files;
  85. /* namespace */
  86. struct namespace *namespace;
  87. /* signal handlers */
  88. struct signal_struct *signal;
  89. struct sighand_struct *sighand;
  90. sigset_t blocked, real_blocked;
  91. struct sigpending pending;
  92. unsigned long sas_ss_sp;
  93. size_t sas_ss_size;
  94. int (*notifier)(void *priv);
  95. void *notifier_data;
  96. sigset_t *notifier_mask;
  97. void *security;
  98. /* Thread group tracking */
  99. u32 parent_exec_id;
  100. u32 self_exec_id;
  101. /* Protection of (de-)allocation: mm, files, fs, tty */
  102. spinlock_t alloc_lock;
  103. /* Protection of proc_dentry: nesting proc_lock, dcache_lock, write_lock_irq(&tasklist_lock); */
  104. spinlock_t proc_lock;
  105. /* context-switch lock */
  106. spinlock_t switch_lock;
  107. /* journalling filesystem info */
  108. void *journal_info;
  109. /* VM state */
  110. struct reclaim_state *reclaim_state;
  111. struct dentry *proc_dentry;
  112. struct backing_dev_info *backing_dev_info;
  113. struct io_context *io_context;
  114. unsigned long ptrace_message;
  115. siginfo_t *last_siginfo; /* For ptrace use.  */
  116. };

进程控制块 与 task_struct的更多相关文章

  1. 进程控制块的task_struct结构

    >进程控制块 在linux中进程信息存放在叫做进程控制块的数据结构中,每个进程在内核中都有⼀个进程控制块(PCB)来维护进程相关的信息,Linux内核的 进程控制块是task_struct结构体 ...

  2. Linux下进程描述(1)—进程控制块

    进程概念介绍 进程是操作系统对运行程序的一种抽象. • 一个正在执行的程序: • 一个正在计算机上执行的程序实例: • 能分配给处理器并由处理器执行的实体: • 一个具有普以下特征的活动单元:一组指令 ...

  3. Linux-进程描述(1)—进程控制块

    进程概念介绍 进程是操作系统对运行程序的一种抽象. • 一个正在执行的程序: • 一个正在计算机上执行的程序实例: • 能分配给处理器并由处理器执行的实体: • 一个具有普以下特征的活动单元:一组指令 ...

  4. Linux下进程描述(1)—进程控制块【转】

    转自:http://www.cnblogs.com/33debug/p/6705391.html 进程概念介绍 进程是操作系统对运行程序的一种抽象. • 一个正在执行的程序: • 一个正在计算机上执行 ...

  5. 进程控制块(PCB)

    进程控制块PCB 我们知道,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体. /usr/src/linux-headers- ...

  6. 进程控制块PCB结构体 task_struct 描述

    进程控制块,英文名(Processing Control Block),简称 PCB . 进程控制块是系统为了管理进程设置的一个专门的数据结构,主要表示进程状态. 每一个进程都对应一个PCB来维护进程 ...

  7. 进程控制块PCB结构 task_struct 描述

    注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...

  8. 进程控制块PCB学习

    参考这篇文章:http://blog.csdn.net/shuizhilan/article/details/6642040 PCB(process control block),进程控制块,是我们学 ...

  9. 进程控制块(PCB)结构

    一.进程控制块(PCB)结构 进程控制块(PCB)是系统为了管理进程设置的一个专门的数据结构.系统用它来记录进程的外部特征,描述进程的运动变化过程.同时,系统可以利用PCB来控制和管理进程,所以说,P ...

随机推荐

  1. Image动画

    前几课讲的静态Image挺有趣的,但是如果能有动画的效果,那就更有趣了,mPython做出动画效果也不难.用images的列表,list. 下面就是一个列表: eggs bacon tomatoes ...

  2. (一)将mockjs集成到VUE中后,怎样根据接口入参返回mock结果

    1)安装mockjs,这一步跳过 2)在项目中建立mock模块,笔者的目录结构如下 mock模块与接口模块一一对应,有一个接口,就有一个mock 3)编写登陆模块mock接口,代码如下: import ...

  3. NVDLA软件架构和源码解析 第一章—内核驱动【华为云技术分享】

    驱动整体设计介绍 不同的processor Nvidia DLA的内核驱动KMD(Kernel mode driver)中,并不是把DLA当成一个设备来控制,而是把不同的功能模块当做不同的proces ...

  4. 理解 Kubernetes 的亲和性调度

    这次给大家介绍下k8s的亲和性调度:nodeSelector.nodeAffinity.podAffinity.Taints以及Tolerations用法. 一般情况下我们部署的 POD 是通过集群自 ...

  5. comet oj #7

    A 签到题 题目描述 多次询问,每次询问给一个值域范围 [l,r][l,r],要回答下列四个问题: 从这个范围内选出两个整数(两个数可相同), (1) 这两个数的最小公倍数最大是多少? (2) 这两个 ...

  6. mybatis关联映射一对多

    实际项目中也存在很多的一对多的情况,下面看看这个简单的例子 table.sql CREATE TABLE tb_clazz( id INT PRIMARY KEY AUTO_INCREMENT, CO ...

  7. ASP.NET Core中使用Cache缓存

    ASP.NET Core中使用Cache缓存 缓存介绍: 通过减少生成内容所需的工作,缓存可以显著提高应用的性能和可伸缩性. 缓存对不经常更改的数据效果最佳. 缓存生成的数据副本的返回速度可以比从原始 ...

  8. SpringBoot+Jpa+SpringSecurity+Redis+Vue的前后端分离开源系统

    项目简介: eladmin基于 Spring Boot 2.1.0 . Jpa. Spring Security.redis.Vue的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 ...

  9. C#8.0——异步流(AsyncStream)

    异步流(AsyncStream) 原文地址:https://github.com/dotnet/roslyn/blob/master/docs/features/async-streams.md 注意 ...

  10. Golang: 常用的文件读写操作

    Go 语言提供了很多文件操作的支持,在不同场景下,有对应的处理方式,今天就来系统地梳理一下,几种常用的文件读写的形式. 一.读取文件内容 1.按字节读取文件 这种方式是以字节为单位来读取,相对底层一些 ...