[Linux]进程(十二)--task_struct结构体
- struct task_struct {
- volatile long state; /* -1 不可运行, 0 可运行, >0 表示停止 */
- void *stack;
- atomic_t usage;
- unsigned long flags; /* 每进程标志 */
- unsigned long ptrace;
- int lock_depth; /* 大内核锁深度 */
- int prio, static_prio, normal_prio;
- struct list_head run_list;
- const struct sched_class *sched_class;
- struct sched_entity se;
- unsigned short ioprio;
- unsigned long policy;
- cpumask_t cpus_allowed;
- unsigned int time_slice;
- #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT)
- struct sched_info sched_info;
- #endif
- struct list_head tasks;
- /*
- * ptrace_list/ptrace_children forms the list of my children
- * that were stolen by a ptracer.
- */
- struct list_head ptrace_children;
- struct list_head ptrace_list;
- struct mm_struct *mm, *active_mm;
- /* 进程状态 */
- struct linux_binfmt *binfmt;
- long exit_state;
- int exit_code, exit_signal;
- int pdeath_signal; /* 在父进程终止的时候发送的信号 */
- unsigned int personality;
- unsigned did_exec:1;
- pid_t pid;
- pid_t tgid;
- struct task_struct *real_parent; /* 真正的父进程(被调试的情况下) */
- struct task_struct *parent; /* 父进程 ,parent和real_parent的区别:real_parent是亲爹,调fork的那个,parent呢是干爹,大部分情况下亲爹干爹是一个人,ps看到的是干爹,什么时候亲爹干爹不一样的,比如有一种情况,比如亲爹死了,但是呢又得有一个父进程,比如1号进程就会被当成父进程。但进程不是1号fork出来的。*/
- struct list_head children; /* 子进程链表 */
- struct list_head sibling; /* 连接到父进程的子进程的链表 */
- struct task_struct *group_leader; /* 线程组组长 */
- /* PID与PID散列表的联系*/
- struct pid_link pids[PIDTYPE_MAX];
- struct list_head thread_group;
- struct completion *vfork_done; /* 用于vfork() */
- int __user *set_child_tid; /* CLONE_CHILD_SETTID */
- int __user *clear_child_tid; /* CLONE_CHILD_CLEARTID */
- unsigned long rt_priority;
- cputime_t utime, stime, utimescaled, stimescaled;;
- unsigned long nvcsw, nivcsw; /* 上下文切换计数 */
- struct timespec start_time; /* 单调时间 */
- struct timespec real_start_time; /* 启动以来的时间 */
- unsigned long min_flt, maj_flt;
- cputime_t it_prof_expires, it_virt_expires;
- unsigned long long it_sched_expires;
- struct list_head cpu_timers[3];
- /* 进程身份凭据 */
- uid_t uid,euid,suid,fsuid;
- gid_t gid,egid,sgid,fsgid;
- struct group_info *group_info;
- kernel_cap_t cap_effective, cap_inheritable, cap_permitted;
- unsigned keep_capabilities:1;
- struct user_struct *user;
- char comm[TASK_COMM_LEN]; /* 去除路径后的可执行文件名称*/
- /* 文件系统信息 */
- int link_count, total_link_count;
- /* ipc stuff */
- struct sysv_sem sysvsem;
- /* 当前进程特定的cpu信息 */
- struct thread_struct thread;
- /* filesystem information */
- struct fs_struct *fs;
- /* open file information */
- struct files_struct *files;
- /* namespace */
- struct nsproxy *nsproxy;
- /* signal handlers */
- struct signal_struct *signal;
- struct sighand_struct *sighand;
- sigset_t blocked, real_blocked;
- sigset_t saved_sigmask; /* To be restored with TIF_RESTORE_SIGMASK */
- struct sigpending pending;
- unsigned long sas_ss_sp;
- size_t sas_ss_size;
- int (*notifier)(void *priv);
- void *notifier_data;
- sigset_t *notifier_mask;
- #ifdef CONFIG_SECURITY
- v oid *security;
- #endif
- /* 线程组跟踪 */
- u32 parent_exec_id;
- u32 self_exec_id;
- /* 日志文件系统信息 */
- void *journal_info;
- /* 虚拟内存状态 */
- struct reclaim_state *reclaim_state;
- struct backing_dev_info *backing_dev_info;
- struct io_context *io_context;
- unsigned long ptrace_message;
- siginfo_t *last_siginfo; /* For ptrace use. */
- ...
- };
atomic_t usage; 有几个进程正在使用此结构
转载于:https://www.cnblogs.com/zhiliao112/p/4051378.html
[Linux]进程(十二)--task_struct结构体相关推荐
- Linux进程描述符task_struct结构体
进程是处于执行期的程序以及它所管理的资源(如打开的文件.挂起的信号.进程状态.地址空间等等)的总称.进程的两个基本元素是程序和代码相关的数据集,进程是一种动态描述,但是并不代表所有的进程都在运行.每个 ...
- Linux进程描述符task_struct结构体简析
进程是处于执行期的程序以及它所管理的资源(如打开的文件.挂起的信号.进程状态.地址空间等等)的总称 Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个 ...
- Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)
转自:http://blog.csdn.net/gatieme/article/details/51383272 日期 内核版本 架构 作者 GitHub CSDN 2016-05-12 Linux- ...
- 深入理解Linux进程描述符task_struct结构体
进程是处于执行期的程序以及它所管理的资源(如打开的文件.挂起的信号.进程状态.地址空间等等)的总称.注意,程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序,而且还有可能共享地址空间等资源. ...
- Linux进程管理之task_struct结构体详解
进程是处于执行期的程序以及它所管理的资源(如打开的文件.挂起的信号.进程状态.地址空间等等)的总称.注意,程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序,而且还有可能共享地址空间等资源. ...
- c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事
一.学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 目录 <零基础看得懂的C语言入门教程>--(二)简单带你了解流程 & ...
- Linux内核中的PCB里面task_struct结构体中的具体信息
1.PCB进程控制块--->task_struct 广义上,所有的进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合. 每个进程在内核中都有一个进程控制块来维护进程的相关信息 ...
- 【Linux 内核】进程管理 task_struct 结构体 ① ( task_struct 结构体引入 | task_struct 代码示例 )
文章目录 一.task_struct 结构体 二.task_struct 结构体代码示例 一.task_struct 结构体 在 Linux 操作系统 中 , 进程 作为 调度的实体 , 需要将其抽象 ...
- Linux进程中task_struct结构体
一.进程的定义: ①正在执行的程序: ②正在计算机上执行的实例: ③能分配给处理器并由处理器可以执行的实体. ④具有以下特征的活动单元: 一组指令序列的执行.一个当前状态和相关的系统资源. 进程的两个 ...
- 【Linux 内核】进程管理 task_struct 结构体 ⑤ ( files 字段 | nsproxy 字段 | 信号处理相关字段 | 信号量和共享内存相关字段 )
文章目录 一.task_struct 结构体字段分析 1.files 字段 2.nsproxy 字段 3.信号处理相关字段 4.信号量和共享内存相关字段 在 Linux 内核 中 , " 进 ...
最新文章
- bootstrap基础学习四篇
- 数据结构:选择排序(Selection sort)
- [crypto]-52-python3中rsa(签名验签加密解密)aes(ecb cbc ctr)hmac的使用,以及unittest测试用
- linux脚本开机自动执行脚本文件,如何让linux开机自动执行sata里头的脚本文件
- Spring Boot 2.0.5 配置Druid数据库连接池
- python 如何定义n个变量 (变量声明自动化)
- linux 基础命令 1
- PHP里面最难的是那部分,那个PHP中号称最难的‘递归函数’
- 谷歌浏览器:解决Chrome加载扩展程序提示程序包无效:
- sqlserver常用语法
- Hadoop运行原理总结
- FFmpeg入门详解之52:ffplay源码分析
- 步进电机和伺服电机的区别
- 关于QQ互联的一些坑
- python urllib.parse_Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)...
- CorelDRAW2021新增功能及增强内容
- 一步一步的手写Promise
- k8s 服务注册与发现(二)Kubernetes内部域名解析原理
- 【bootstrap 入门】
- 【微信小程序】企业付款接口