内核层的进程机构--KPROCESS
来源:互联网 发布:3d美工 编辑:程序博客网 时间:2024/05/21 20:29
1.WRK中的KPROCESStypedef struct _KPROCESS { // // The dispatch header and profile listhead are fairly infrequently // referenced. // DISPATCHER_HEADER Header;//此域表明KPROCESS对象也是一个分发器对象 LIST_ENTRY ProfileListHead;//用于该进程参与性能分析时,作为一个节点加入到全局的性能分析进程列表。 // // The following fields are referenced during context switches. // ULONG_PTR DirectoryTableBase[2];//第一项指向该进程的页目录表地址,第二项指向该进程的超空间的页目录地址#if defined(_X86_) KGDTENTRY LdtDescriptor;//该进程的LDT(局部描述符表) KIDTENTRY Int21Descriptor;//为了兼容DOS程序,允许他们通过int 21H指令来调用DOS USHORT IopmOffset;//指定了IOPM的位置,内核通过IOPM可控制进程的用户模式I/O访问权限 UCHAR Iopl;//定义了进程的I/O优先级 BOOLEAN Unused;#endif#if defined(_AMD64_) USHORT IopmOffset;#endif volatile KAFFINITY ActiveProcessors;//记录了当前进程正在哪个处理上允许。 // // The following fields are referenced during clock interrupts. ////这两个字段分别记录了当前进程对象在内核模式和用户模式下所化的时间//KernelTime和UserTime时间值等于其所属线程的对应KernelTime和UserTime值的和。//由于仅当一个线程结束时才更新其进程的这两个时间,所以,若有一个进程中尚未有一个线程结束,则这两个域中的//值为0 ULONG KernelTime; ULONG UserTime; // // The following fields are referenced infrequently. // LIST_ENTRY ReadyListHead;//双向练链表,记录了这个进程中处于就绪状态但尚未被加入全局就绪链表的线程。 SINGLE_LIST_ENTRY SwapListEntry;#if defined(_X86_) PVOID VdmTrapcHandler;//指向处理Ctril+C中断的函数,仅用于在VDM环境下运行16位程序#else PVOID Reserved1;#endif LIST_ENTRY ThreadListHead;//一个链表头,此链表包含了该进程的所有当前线程。 KSPIN_LOCK ProcessLock;//自旋锁(spin lock)对象,它的用途是保护此进程中的数据成员。 KAFFINITY Affinity;//指定该进程的线程可以在哪写处理器上运行,去类型是KAFFINITY // // N.B. The following bit number definitions must match the following // bit field. // // N.B. These bits can only be written with interlocked operations. //#define KPROCESS_AUTO_ALIGNMENT_BIT 0#define KPROCESS_DISABLE_BOOST_BIT 1#define KPROCESS_DISABLE_QUANTUM_BIT 2 union { struct { LONG AutoAlignment : 1;//内存访问对其设置 LONG DisableBoost : 1;//下面这两个字段和线程调度过程中的优先级提升和时限分配有关, LONG DisableQuantum : 1; LONG ReservedFlags : 29; }; LONG ProcessFlags; }; SCHAR BasePriority;//进程中的线程调度参数,基本优先级,所有线程在启动时都会继承进程的BasePriority SCHAR QuantumReset; UCHAR State;//进程是否在内存中 UCHAR ThreadSeed;//该进程的线程选择适当的处理器 UCHAR PowerState;//记录电源状态 UCHAR IdealNode; BOOLEAN Visited; union { KEXECUTE_OPTIONS Flags; UCHAR ExecuteOptions; };#if !defined(_X86_) && !defined(_AMD64_) PALIGNMENT_EXCEPTION_TABLE AlignmentExceptionTable;#endif ULONG_PTR StackCount; LIST_ENTRY ProcessListEntry;//将当前系统所有具有活动线程的进程串成一个链表。} KPROCESS, *PKPROCESS, *PRKPROCESS;
简单归纳一下,KPROCESS对象中记录中记录的信息主要包括两类:一类跟进进程的内存环境相关,比如页目录表,交换状态等;另一类与其线程相关的一些属性,比如线程列表以及线程所需的优先级,时限设置等。
- 内核层的进程机构--KPROCESS
- 内核层 inlinehook 隐藏进程
- 内核层 inlinehook 隐藏进程
- KPROCESS IDT PEB Ldr 《寒江独钓》内核学习笔记(3)
- KPROCESS IDT PEB Ldr 《寒江独钓》内核学习笔记(3)
- Linux2.6内核--VFS层中和进程相关的数据结构
- Linux2.6内核--VFS层中和进程相关的数据结构
- Spark内核机构图
- 《Windows内核原理与实现》第三章学习笔记---KPROCESS学习
- 内核进程的堆栈
- 内核进程的复制
- 内核进程的堆栈
- 内核进程的堆栈
- 进程的内核栈
- 内核进程的堆栈
- 内核---内核基础层的数据结构
- Linux从用户层到内核层系列 - 进程管理系列1: 进程之子承父业
- 内核层监控进程 线程 创建和销毁
- 兼容所有主流浏览器的图片上传本地预览(IE\FIREFOX\CHROME)
- 万历十五年读后感
- 九度1544
- log buffer space、log file switch、log file sync
- Ambi实习(三)
- 内核层的进程机构--KPROCESS
- uart(4)-输入命令来控制灯亮灭
- Ubuntu12.04 Sublime不能输入中文解决方法
- #多么痛的领悟# 关于数组中的元素默认初始值
- Ubuntu的安装
- [ACM - 博弈]Rabbit and Grass(hdu1849) Brave Game(hdu1846)
- ip首部校验和计算
- 内存对齐详解
- 如何让Android横竖屏切换时不销毁当前activity