[cpp] view plaincopy
  1. struct task_struct {
  2. volatile long state; /* -1 不可运行, 0 可运行, >0 表示停止 */
  3. void *stack;
  4. atomic_t usage;
  5. unsigned long flags; /* 每进程标志 */
  6. unsigned long ptrace;
  7. int lock_depth; /* 大内核锁深度 */
  8. int prio, static_prio, normal_prio;
  9. struct list_head run_list;
  10. const struct sched_class *sched_class;
  11. struct sched_entity se;
  12. unsigned short ioprio;
  13. unsigned long policy;
  14. cpumask_t cpus_allowed;
  15. unsigned int time_slice;
  16. #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT)
  17. struct sched_info sched_info;
  18. #endif
  19. struct list_head tasks;
  20. /*
  21. * ptrace_list/ptrace_children forms the list of my children
  22. * that were stolen by a ptracer.
  23. */
  24. struct list_head ptrace_children;
  25. struct list_head ptrace_list;
  26. struct mm_struct *mm, *active_mm;
  27. /* 进程状态 */
  28. struct linux_binfmt *binfmt;
  29. long exit_state;
  30. int exit_code, exit_signal;
  31. int pdeath_signal; /* 在父进程终止的时候发送的信号 */
  32. unsigned int personality;
  33. unsigned did_exec:1;
  34. pid_t pid;
  35. pid_t tgid;
  36. struct task_struct *real_parent; /* 真正的父进程(被调试的情况下) */
  37. struct task_struct *parent; /* 父进程 ,parent和real_parent的区别:real_parent是亲爹,调fork的那个,parent呢是干爹,大部分情况下亲爹干爹是一个人,ps看到的是干爹,什么时候亲爹干爹不一样的,比如有一种情况,比如亲爹死了,但是呢又得有一个父进程,比如1号进程就会被当成父进程。但进程不是1号fork出来的。*/
  38. struct list_head children; /* 子进程链表 */
  39. struct list_head sibling; /* 连接到父进程的子进程的链表 */
  40. struct task_struct *group_leader; /* 线程组组长 */
  41. /* PID与PID散列表的联系*/
  42. struct pid_link pids[PIDTYPE_MAX];
  43. struct list_head thread_group;
  44. struct completion *vfork_done; /* 用于vfork() */
  45. int __user *set_child_tid; /* CLONE_CHILD_SETTID */
  46. int __user *clear_child_tid; /* CLONE_CHILD_CLEARTID */
  47. unsigned long rt_priority;
  48. cputime_t utime, stime, utimescaled, stimescaled;;
  49. unsigned long nvcsw, nivcsw; /* 上下文切换计数 */
  50. struct timespec start_time; /* 单调时间 */
  51. struct timespec real_start_time; /* 启动以来的时间 */
  52. unsigned long min_flt, maj_flt;
  53. cputime_t it_prof_expires, it_virt_expires;
  54. unsigned long long it_sched_expires;
  55. struct list_head cpu_timers[3];
  56. /* 进程身份凭据 */
  57. uid_t uid,euid,suid,fsuid;
  58. gid_t gid,egid,sgid,fsgid;
  59. struct group_info *group_info;
  60. kernel_cap_t cap_effective, cap_inheritable, cap_permitted;
  61. unsigned keep_capabilities:1;
  62. struct user_struct *user;
  63. char comm[TASK_COMM_LEN]; /* 去除路径后的可执行文件名称*/
  64. /* 文件系统信息 */
  65. int link_count, total_link_count;
  66. /* ipc stuff */
  67. struct sysv_sem sysvsem;
  68. /* 当前进程特定的cpu信息 */
  69. struct thread_struct thread;
  70. /* filesystem information */
  71. struct fs_struct *fs;
  72. /* open file information */
  73. struct files_struct *files;
  74. /* namespace */
  75. struct nsproxy *nsproxy;
  76. /* signal handlers */
  77. struct signal_struct *signal;
  78. struct sighand_struct *sighand;
  79. sigset_t blocked, real_blocked;
  80. sigset_t saved_sigmask; /* To be restored with TIF_RESTORE_SIGMASK */
  81. struct sigpending pending;
  82. unsigned long sas_ss_sp;
  83. size_t sas_ss_size;
  84. int (*notifier)(void *priv);
  85. void *notifier_data;
  86. sigset_t *notifier_mask;
  87. #ifdef CONFIG_SECURITY
  88. v   oid *security;
  89. #endif
  90. /* 线程组跟踪 */
  91. u32 parent_exec_id;
  92. u32 self_exec_id;
  93. /* 日志文件系统信息 */
  94. void *journal_info;
  95. /* 虚拟内存状态 */
  96. struct reclaim_state *reclaim_state;
  97. struct backing_dev_info *backing_dev_info;
  98. struct io_context *io_context;
  99. unsigned long ptrace_message;
  100. siginfo_t *last_siginfo; /* For ptrace use. */
  101. ...
  102. };

atomic_t usage; 有几个进程正在使用此结构

转载于:https://www.cnblogs.com/zhiliao112/p/4051378.html

[Linux]进程(十二)--task_struct结构体相关推荐

  1. Linux进程描述符task_struct结构体

    进程是处于执行期的程序以及它所管理的资源(如打开的文件.挂起的信号.进程状态.地址空间等等)的总称.进程的两个基本元素是程序和代码相关的数据集,进程是一种动态描述,但是并不代表所有的进程都在运行.每个 ...

  2. Linux进程描述符task_struct结构体简析

    进程是处于执行期的程序以及它所管理的资源(如打开的文件.挂起的信号.进程状态.地址空间等等)的总称 Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个 ...

  3. Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)

    转自:http://blog.csdn.net/gatieme/article/details/51383272 日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Linux- ...

  4. 深入理解Linux进程描述符task_struct结构体

    进程是处于执行期的程序以及它所管理的资源(如打开的文件.挂起的信号.进程状态.地址空间等等)的总称.注意,程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序,而且还有可能共享地址空间等资源. ...

  5. Linux进程管理之task_struct结构体详解

    进程是处于执行期的程序以及它所管理的资源(如打开的文件.挂起的信号.进程状态.地址空间等等)的总称.注意,程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序,而且还有可能共享地址空间等资源. ...

  6. c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事

    一.学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 目录 <零基础看得懂的C语言入门教程>--(二)简单带你了解流程 & ...

  7. Linux内核中的PCB里面task_struct结构体中的具体信息

    1.PCB进程控制块--->task_struct 广义上,所有的进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合. 每个进程在内核中都有一个进程控制块来维护进程的相关信息 ...

  8. 【Linux 内核】进程管理 task_struct 结构体 ① ( task_struct 结构体引入 | task_struct 代码示例 )

    文章目录 一.task_struct 结构体 二.task_struct 结构体代码示例 一.task_struct 结构体 在 Linux 操作系统 中 , 进程 作为 调度的实体 , 需要将其抽象 ...

  9. Linux进程中task_struct结构体

    一.进程的定义: ①正在执行的程序: ②正在计算机上执行的实例: ③能分配给处理器并由处理器可以执行的实体. ④具有以下特征的活动单元: 一组指令序列的执行.一个当前状态和相关的系统资源. 进程的两个 ...

  10. 【Linux 内核】进程管理 task_struct 结构体 ⑤ ( files 字段 | nsproxy 字段 | 信号处理相关字段 | 信号量和共享内存相关字段 )

    文章目录 一.task_struct 结构体字段分析 1.files 字段 2.nsproxy 字段 3.信号处理相关字段 4.信号量和共享内存相关字段 在 Linux 内核 中 , " 进 ...

最新文章

  1. bootstrap基础学习四篇
  2. 数据结构:选择排序(Selection sort)
  3. [crypto]-52-python3中rsa(签名验签加密解密)aes(ecb cbc ctr)hmac的使用,以及unittest测试用
  4. linux脚本开机自动执行脚本文件,如何让linux开机自动执行sata里头的脚本文件
  5. Spring Boot 2.0.5 配置Druid数据库连接池
  6. python 如何定义n个变量 (变量声明自动化)
  7. linux 基础命令 1
  8. PHP里面最难的是那部分,那个PHP中号称最难的‘递归函数’
  9. 谷歌浏览器:解决Chrome加载扩展程序提示程序包无效:
  10. sqlserver常用语法
  11. Hadoop运行原理总结
  12. FFmpeg入门详解之52:ffplay源码分析
  13. 步进电机和伺服电机的区别
  14. 关于QQ互联的一些坑
  15. python urllib.parse_Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)...
  16. CorelDRAW2021新增功能及增强内容
  17. 一步一步的手写Promise
  18. k8s 服务注册与发现(二)Kubernetes内部域名解析原理
  19. 【bootstrap 入门】
  20. 【微信小程序】企业付款接口

热门文章

  1. Oracle就业课第四课之子程序
  2. 悬剑武器库之5种工具学习(shiro检测插件、子域名、信息收集、暴力破解等)
  3. 【Numpy学习记录】np.cov详解
  4. hadoop关键进程
  5. 没人告诉你的小工具整理收藏
  6. Actor生命周期理解
  7. sql 181. 超过经理收入的员工
  8. 圆方圆学院零基础入门学习Python(绝对干货,值得学习)
  9. java B2B2C springmvc mybatis多租户电子商城系统-Spring Cloud Ribbon
  10. Liunx 重新mount