Linux-进程-数据结构
2017-12-16 16:16
190 查看
进程相关函数的数据结构为:进程描述符task_struct 管理这个数据结构的为各种等待队列、执行队列等。 // 下面是任务(进程)数据结构,或称为进程描述符。 // long state 任务的运行状态(-1不可运行,0可运行(就绪),>0已停止)。 // long counter 任务运行时间计数(递减)(滴答数),运行时间片。 // long priority 优先数。任务开始运行时counter=priority,越大运行越长。 // long signal 信号位图,每个比特位代表一种信号,信号值=位偏移值+1。 // struct sigaction sigaction[32] 信号执行属性结构,对应信号将要执行的操作和标志信息。 // long blocked 进程信号屏蔽码(对应信号位图)。 // ------------------- // int exit_code 任务执行停止的退出码,其父进程会取。 // unsigned long start_code 代码段地址。 // unsigned long end_code 代码长度(字节数)。 // unsigned long end_data 代码长度 + 数据长度(字节数)。 // unsigned long brk 总长度(字节数)。 // unsigned long start_stack 堆栈段地址。 // long pid 进程标识号(进程号)。 // long pgrp 进程组号。 // long session 会话号。 // long leader 会话首领。 // int groups[NGROUPS] 进程所属组号。一个进程可属于多个组。 // task_struct *p_pptr 指向父进程的指针。 // task_struct *p_cptr 指向最新子进程的指针。 // task_struct *p_ysptr 指向比自己后创建的相邻进程的指针。 // task_struct *p_osptr 指向比自己早创建的相邻进程的指针。 // unsigned short uid 用户标识号(用户id)。 // unsigned short euid 有效用户id。 // unsigned short suid 保存的用户id。 // unsigned short gid 组标识号(组id)。 // unsigned short egid 有效组id。 // unsigned short sgid 保存的组id。 // long timeout 内核定时超时值。 // long alarm 报警定时值(滴答数)。 // long utime 用户态运行时间(滴答数)。 // long stime 系统态运行时间(滴答数)。 // long cutime 子进程用户态运行时间。 // long cstime 子进程系统态运行时间。 // long start_time 进程开始运行时刻。 // struct rlimit rlim[RLIM_NLIMITS] 进程资源使用统计数组。 // unsigned int flags; 各进程的标志,在下面第149行开始定义(还未使用)。 // unsigned short used_math 标志:是否使用了协处理器。 // ------------------------ // int tty 进程使用tty终端的子设备号。-1表示没有使用。 // unsigned short umask 文件创建属性屏蔽位。 // struct m_inode * pwd 当前工作目录i节点结构指针。 // struct m_inode * root 根目录i节点结构指针。 // struct m_inode * executable 执行文件i节点结构指针。 // struct m_inode * library 被加载库文件i节点结构指针。 // unsigned long close_on_exec 执行时关闭文件句柄位图标志。(参见include/fcntl.h) // struct file * filp[NR_OPEN] 文件结构指针表,最多32项。表项号即是文件描述符的值。 // struct desc_struct ldt[3] 局部描述符表。0-空,1-代码段cs,2-数据和堆栈段ds&ss。 // struct tss_struct tss 进程的任务状态段信息结构。 // ====================================== 105 struct task_struct { 106 /* these are hardcoded - don't touch */ 107 long state; /* -1 unrunnable, 0 runnable, >0 stopped */ 108 long counter; 109 long priority; 110 long signal; 111 struct sigaction sigaction[32]; 112 long blocked; /* bitmap of masked signals */ 113 /* various fields */ 114 int exit_code; 115 unsigned long start_code,end_code,end_data,brk,start_stack; 116 long pid,pgrp,session,leader; 117 int groups[NGROUPS]; 118 /* 119 * pointers to parent process, youngest child, younger sibling, 120 * older sibling, respectively. (p->father can be replaced with 121 * p->p_pptr->pid) 122 */ 123 struct task_struct *p_pptr, *p_cptr, *p_ysptr, *p_osptr; 124 unsigned short uid,euid,suid; 125 unsigned short gid,egid,sgid; 126 unsigned long timeout,alarm; 127 long utime,stime,cutime,cstime,start_time; 128 struct rlimit rlim[RLIM_NLIMITS]; 129 unsigned int flags; /* per process flags, defined below */ 130 unsigned short used_math; 131 /* file system info */ 132 int tty; /* -1 if no tty, so it must be signed */ 133 unsigned short umask; 134 struct m_inode * pwd; 135 struct m_inode * root; 136 struct m_inode * executable; 137 struct m_inode * library; 138 unsigned long close_on_exec; 139 struct file * filp[NR_OPEN]; 140 /* ldt for this task 0 - zero 1 - cs 2 - ds&ss */ 141 struct desc_struct ldt[3]; 142 /* tss for this task */ 143 struct tss_struct tss; 144 };
相关文章推荐
- Linux2.6内核--VFS层中和进程相关的数据结构
- Linux0.11内核--进程相关数据结构
- Linux0.11内核--进程相关数据结构
- linux 内核进程与用户进程的通信 方法一 使用sockopt与内核交换数据
- linux路由内核实现分析(二)---FIB相关数据结构(4)
- linux 程序存储结构与进程结构
- Linux 内核文件系统关键数据结构
- Linux 路由 学习笔记 之一 相关的数据结构
- [Linux]进程(十二)--task_struct结构体
- 第十五章 Linux核心数据结构
- 进程管理对象器的实现,数据结构为链表
- Linux 可执行文件结构与进程结构
- Linux下IP协议使用的地址描述数据结构结构的典型原型声明
- 简单谈一点linux内核中套接字的bind机制--数据结构以及端口确定
- 学习linux协议栈关键数据结构
- Spark修炼之道(基础篇)——Linux大数据开发基础:第七节:进程管理
- 关于linux内存管理的主要数据结构
- Linux 死进程导致数据慢
- Linux 可执行文件结构与进程结构
- linux进程结构