struct task_struct 结构分析 \linux-1.0\linux\include\linux\sched.h
//任务机构体,大小大概1024字节
struct task_struct {/* these are hardcoded - don't touch */ //硬件代码 不可被修改volatile long state; //状态标志 /* -1 unrunnable, 0 runnable, >0 stopped */ long counter; //计数long priority; //优先权unsigned long signal; //信号unsigned long blocked; //信号标志的bit映射 /* bitmap of masked signals */ unsigned long flags; //上个进程标志/* per process flags, defined below */ int errno; //出错代码int debugreg[8]; //硬件编译寄存器。/* Hardware debugging registers */ /* various fields */ //可变区域struct task_struct *next_task, *prev_task; //本结构的链表双向指针struct sigaction sigaction1[32]; //信号活动数组unsigned long saved_kernel_stack; //内核中保存的堆栈点 unsigned long kernel_stack_page; //内核堆栈页int exit_code, exit_signal; //结束代码,结束信号int elf_executable:1; //是否自己可以执行标志int dumpable:1; //是否可以拆卸标志int swappable:1; //是否可以交换标志int did_exec:1; //是否为执行文件标志//启动代码点,结束代码点,结束数据点,断点开始点,断点,堆栈开始点,虚拟映射页开始点!unsigned long start_code,end_code,end_data,start_brk,brk,start_stack,start_mmap;//变量开始点,变量结束点,环境开始点,环境结束点unsigned long arg_start, arg_end, env_start, env_end;//进程id,组,会话,引入点int pid,pgrp,session,leader;//分组数组int groups[NGROUPS];/* * pointers to (original) parent process, youngest child, younger sibling,* older sibling, respectively. (p->father can be replaced with * p->p_pptr->pid)*///指向最原始的进程任务指针,父进程任务指针,子进程任务指针,新兄弟进程任务指针,旧兄弟进程任务指针。struct task_struct *p_opptr,*p_pptr, *p_cptr, *p_ysptr, *p_osptr;//任务队列指针struct wait_queue *wait_chldexit; /* for wait4() *//** For ease of programming... Normal sleeps don't need to* keep track of a wait-queue: every task has an entry of its own*///real user ID (uid): 实际用户ID,指的是进程执行者是谁//effective user ID (euid): 有效用户ID,指进程执行时对文件的访问权限//saved set-user-ID (saved uid): 保存设置用户ID。是进程刚开始执行时,euid的副本。在执行exec调用之后能重新恢复原来的effectiv user ID.unsigned short uid,euid,suid; //用户ID,有效用户ID,保存设置用户IDunsigned short gid,egid,sgid; //组ID,有效组ID,保存设置组ID;unsigned long timeout; //超时时间unsigned long it_real_value, it_prof_value, it_virt_value; //真实间隔定时器计数器的当前值,PROF间隔定时器计数器的当前值,虚拟间隔定时器计数器的当前值unsigned long it_real_incr, it_prof_incr, it_virt_incr; //真实间隔定时器计数器的初始值,PROF间隔定时器计数器的初始值,虚拟间隔定时器计数器的初始值long utime,stime,cutime,cstime,start_time; //用户时间,系统时间,累计用户时间,进程启动时间unsigned long min_flt, maj_flt; //次要页错误的数量,主要页错误的数量unsigned long cmin_flt, cmaj_flt; //累计次要页错误,累计主要页错误struct rlimit rlim[RLIM_NLIMITS]; //右限制值数组unsigned short used_math; //被使用的数字unsigned short rss; /* number of resident pages */ //寄存页号char comm[16]; //comm口struct vm86_struct * vm86_info; //86虚拟机结构unsigned long screen_bitmap; //屏幕位映射
/* file system info */ //文件系统信息int link_count; //链接数int tty; //终端类型 /* -1 if no tty, so it must be signed */unsigned short umask; //权限掩码struct inode * pwd; //密码节点指针struct inode * root; //root节点指针struct inode * executable; //执行表节点指针struct vm_area_struct * mmap; //虚拟区域映射指针struct shm_desc *shm; //struct sem_undo *semun; //信号量操作标志struct file * filp[NR_OPEN]; //已经打开的文件描述字数组fd_set close_on_exec; //进程所有文件描述符(文件句柄)的位图标
/* ldt for this task - used by Wine. If NULL, default_ldt is used */struct desc_struct *ldt; //局部描述符表
/* tss for this task */struct tss_struct tss; //任务状态段信息结构
#ifdef NEW_SWAPunsigned long old_maj_flt; /* old value of maj_flt */unsigned long dec_flt; /* page fault count of the last time */unsigned long swap_cnt; /* number of pages to swap on next pass */short swap_table; /* current page table */short swap_page; /* current page */
#endif NEW_SWAPstruct vm_area_struct *stk_vma; //虚拟区域映射指针
};
struct task_struct 结构分析 \linux-1.0\linux\include\linux\sched.h相关推荐
- linux 内核模块 编译错误 include/linux/mmzone.h:18:26: fatal error: linux/bounds.h: No such file or director
解决方案:内核编译后 不要执行make clean 出现的问题:编译的时候提示缺少头文件 mmzone.h ....bounds.h...等 include/linux/mmzone.h:18:26: ...
- linux shell $0怎么输出,linux shell中$0,$?,$!等的特殊用法
一.Shell脚本中$0.$?.$!.$$.$*.$#.$@等的意义说明 (1)$$ Shell本身的PID(ProcessID,即脚本运行的当前进程ID号) (2)$! Shell最后运行的后台Pr ...
- linux 4.0内核编译选项,linux 2.40.20-8 内核编译选项.doc
linux 2.40.20-8 内核编译选项 内核编译配置选项简介 (2.4.20-8) 来源: ChinaUnix博客 日期: 2007.06.25 10:18 (共有0条评论) 我要评论 Code ...
- linux ps 0 1 console,linux终端-console
echo $TERM 在ssh上是xterm 在console上是linux setterm -foreground black -background white -store http://blo ...
- ug11 linux,UG11.0升级包MP02Win#Linux系统下载就上UG网
UG11.0软件又出升级包啦!抽空可以为NX升级啦,从11.0发布到现在,近三个月了,每一次版本的更新,都会带来较多功能的改善,以及对错误BUG的有效处理,下图为升级后的UG11.0软件: UG11. ...
- codova添加android慢_从 0 开始学 Linux 内核之 android 内核栈溢出 ROP 利用
作者:Hcamael@知道创宇404实验室 最近在研究一个最简单的android内核的栈溢出利用方法,网上的资料很少,就算有也是旧版内核的,新版的内核有了很大的不同,如果放在x86上本应该是很简单的东 ...
- linux进程的环境变量,LINUX系统学习一(进程、MMU,环境变量、getenv、fork、getpid/ge...
LINUX系统学习一(进程.MMU,环境变量.getenv.fork.getpid/ge LINUX系统学习一(进程.MMU,环境变量.getenv.fork.getpid/getppid.ps.ki ...
- Linux内核 sched,struct sched_domain在include / linux / sched.h中的含义(在内核中调度域)...
我试图了解负载均衡器如何在Linux内核中的多处理器系统上运行, Linux调度程序基本上使用runques来存储它必须在下一次运行的任务,现在以执行load_balancer()的方式处理多处理器系 ...
- 深入理解Linux进程调度(0.4)
学习方法论 写作原则 标题括号中的数字代表完成度与完善度 0.0-1.0 代表完成度,1.1-1.5 代表完善度 0.0 :还没开始写 0.1 :写了一个简介 0.3 :写了一小部分内容 0.5 :写 ...
最新文章
- 不愧是摸鱼高手Python matplotlib 绘制频谱图都会,能怪老板不管
- Oracle使用遇到的问题
- c++ 结构体地址 转换成ulong_零基础入门之结构体字节对齐
- git branch 为什么会进入编辑状态_Git很难,搞砸很容易,好在有神奇命令让时光倒流...
- SQL服务器引擎组件概览
- JavaScript 移动和触摸框架
- ubuntu 16.04 更改jupyter notebook工作路径
- 创建Docker私有仓库
- 使用xcap进行更改报文并进行回放以及回放报文只能看到请求流量看不到响应流量的问题
- dell服务器全系列手册,DELL服务器 RAID配置中文手册.pdf
- 详细解析Linux /etc/shadow文件
- SQL AND OR 运算符的用法
- 计算机基础,Java介绍和环境搭建及Hello World
- 多线程之基于积分法与欧拉恒等式法的圆周率计算及OMP优化
- U盘量产之更改U盘容量大小
- Leetcode-1737-满足三条件之一需改变的最少字符数
- 苹果华为不送充电头后,这些人赚翻了
- Levy distribution(列维分布)和Levy fligt(列维飞行)
- UE4插件BlueMan_VehicleAI使用
- 2022-2027年(新版)中国质子交换膜行业发展状况及前景趋势预测报告