linux 快组描述符,Linux 进程描述符 task struct
大家都知道进程,可是知道linux是怎么管理其进程的吗?每一个进程都有一个进程描述符,具体是task_struct结构体存储相关的信息,在linux/sched.h文件里定义,那么我们先看看linux内核3.0版本的task_struct结构体的定义吧(删除了不必要的字段,只保留了重要的字段)。struct task_struct {
//这个是进程的运行时状态,-1代表不可运行,0代表可运行,>0代表已停止。
volatile longstate;
/*
flags是进程当前的状态标志,具体的如:
0x00000002表示进程正在被创建;
0x00000004表示进程正准备退出;
0x00000040 表示此进程被fork出,但是并没有执行exec;
0x00000400表示此进程由于其他进程发送相关信号而被杀死 。
*/
unsigned intflags;
//表示此进程的运行优先级
unsigned intrt_priority;
//这里出现了list_head结构体,详情请参考
structlist_head tasks;
//这里出现了mm_struct 结构体,该结构体记录了进程内存使用的相关情况,详情请参考
structmm_struct *mm;
/* 接下来是进程的一些状态参数*/
int exit_state;
int exit_code,exit_signal;
//这个是进程号
pid_t pid;
//这个是进程组号
pid_t tgid;
//real_parent是该进程的”亲生父亲“,不管其是否被“寄养”。
structtask_struct *real_parent;
//parent是该进程现在的父进程,有可能是”继父“
structtask_struct *parent;
//这里children指的是该进程孩子的链表,可以得到所有孩子的进程描述符,但是需使用list_for_each和list_entry,list_entry其实直接使用了container_of,详情请参考
struct list_headchildren;
//同理,sibling该进程兄弟的链表,也就是其父亲的所有孩子的链表。用法与children相似。
structlist_head sibling;
//这个是主线程的进程描述符,也许你会奇怪,为什么线程用进程描述符表示,因为linux并没有单独实现线程的相关结构体,只是用一个进程来代替线程,然后对其做一些特殊的处理。
structtask_struct *group_leader;
//这个是该进程所有线程的链表。
structlist_head thread_group;
//顾名思义,这个是该进程使用cpu时间的信息,utime是在用户态下执行的时间,stime是在内核态下执行的时间。
cputime_tutime, stime;
//下面的是启动的时间,只是时间基准不一样。
structtimespec start_time;
structtimespec real_start_time;
//comm是保存该进程名字的字符数组,长度最长为15,因为TASK_COMM_LEN为16。
charcomm[TASK_COMM_LEN];
/* 文件系统信息计数*/
intlink_count, total_link_count;
/*该进程在特定CPU下的状态*/
structthread_struct thread;
/* 文件系统相关信息结构体*/
structfs_struct *fs;
/* 打开的文件相关信息结构体*/
structfiles_struct *files;
/* 信号相关信息的句柄*/
structsignal_struct *signal;
structsighand_struct *sighand;
/*这些是松弛时间值,用来规定select()和poll()的超时时间,单位是纳秒nanoseconds */
unsigned longtimer_slack_ns;
unsigned longdefault_timer_slack_ns;
};
可以知道
task_struct是Linux内核的一种数据结构,它会被装载到RAM里并且包含着进程的信息。
每个进程都把它的信息放在 task_struct 这个数据结构里,task_struct包含了这些内容:
标示符 :描述本进程的唯一标示符,用来区别其他进程。
状态 :任务状态,退出代码,退出信号等。
优先级 :相对于其他进程的优先级。
程序计数器:程序中即将被执行的下一条指令的地址。
内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据:进程执行时处理器的寄存器中的数据。
I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
保存进程信息的数据结构叫做 task_struct,并且可以在 include/linux/sched.h 里找到它。
所有运行在系统里的进程都以 task_struct 链表的形式存在内核里。
进程的信息可以通过/proc系统文件夹查看。要获取PID为400的进程信息,你需要查看/
proc/400这个文件夹。大多数进程信息同样可以使用top和ps这些用户级工具来获取。
本文出自 “七百七十七快” 博客,转载请与作者联系!
linux 快组描述符,Linux 进程描述符 task struct相关推荐
- linux限制组访问权限,linux用户和组管理以及文件权限访问控制ACL策略
01.通配符 文件通配符可以用来匹配符合条件的多个文件,方便批量管理文件. 通配符采用特定的符号,表示特定的含义,此符号称为元 meta 字符. 常见的通配符如下: * 匹配零个或多个字符,但不匹配 ...
- linux 用户 组区别吗,Linux系统的用户和用户组有什么区别
1.用户和用户组的概念 Linux是一个多用户系统,要使用系统资源就必须在系统内拥有合法的用户账号, Linux系统可以存在多个用户,但是需要使用唯一的用户名来区分不同的用户,同时所有非系统用户都需要 ...
- linux 用户 组区别吗,Linux用户组之主组和附加组
概念介绍 主组: 也叫初始组,是用户登录系统时的组,规则如下: 创建新用户时,若未明确指定该用户所属的主组,会默认创建一个与用户名相同的组,作为该用户的主组 用户创建文件时,文件的所属权限组就是当前用 ...
- 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进程的管理与调度(一)
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 日期 内 ...
- 深入理解Linux进程描述符task_struct结构体
进程是处于执行期的程序以及它所管理的资源(如打开的文件.挂起的信号.进程状态.地址空间等等)的总称.注意,程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序,而且还有可能共享地址空间等资源. ...
- linux内核进程状态,深入理解 Linux 内核学习笔记(一):进程
进程 进程是任何多通道程序设计的操作系统中的基本概念,进程通常被定义为程序执行时的一个实例,在 Liunx 的源代码中,进程通常被称为 "任务". 进程描述符 进程描述符的作用是为 ...
- linux内存换算成b显示,Linux内存管理(下)
Linux内存管理(下)物理内存管理(页管理) Linux内核管理物理内存是通过分页机制实现的,它将整个内存划分成无数4k(在i386体系结构中)大小页,从而分配和回收内存的基本单位便是内存页了.利用 ...
最新文章
- a和a数值大小 计算机,Java求s=a+aa+aaa+aaaa+aa...a的值
- 拿下了一个美女图片网站!
- (转)扩展KMP算法模板
- 学习笔记 - MarkDown 语法
- linux下面 r和 n的区别,【冷知识】关于/r与/n以及 /r/n 的区别总结
- python中re模块_python之re模块
- 一次性定时器 setTimeout
- CentOS系统找回MySQL数据库root登录密码
- 具体化和实例化的应用
- 图解PLC与变频器通讯接线
- 同文输入法 android,同文输入法
- 动态规划法(入门)——最大正方形、最大长方形
- top在linux的命令,Linux命令详解之–top命令 | Linux大学
- 如何缩减XFS分区格式的根目录
- 萝卜小铺与商家的故事(一)
- echarts 制作图表固定的三个步骤
- latex如何使文字不空格_latex 段开头不空格
- Rikka with Travels 动态维护树直径
- UG曲面造型——手机壳
- WPS增加正则处理函数,简直如虎添翼