Windows进程数据结构及创建流程
来源:互联网 发布:淘宝双查号 编辑:程序博客网 时间:2024/06/05 16:17
数据结构
每个Windows进程都表现为一个executive进程(EPROCESS)结构,除了包括很多进程相关的属性外,还包括一些指针。比如,每个进程都有一个或多个线程,每个线程都是executive线程(ETHREAD)结构。
每个执行Win32程序的进程,Win32子系统进程(Csrss.exe)维护一个叫做CSR_PROCESS的并行的结构。最后,内核模式部分的Win32子系统(Win32k.sys)维护每个进程的数据结构,W32PROCESS。W32PROCESS结构在线程第一次调用Windows USER函数或GDI函数时创建。
下图是进程和线程数据结构的简化图表:
下图是EPROCESS 的结构.
类似于内核API和组件划分成独立两部分并且分层成模块的方式,进程的数据结构也差不多的设计。
下图是PEB的数据结构:
下图是CSR_PROCESS的数据结构:
进程的创建流程
因为Windows是多环境子系统架构,创建一个executive进程对象与创建子系统进程是分开的。下面总结了CreateProcess()函数的几个主要步骤,每个步骤的可能是由CreateProcess()函数自己操作的,也可能是NtCreateProcess()函数或者它在内核模式下的辅助函数。当应用程序调用CreateProcess,CreateProcessAsUser,CreateProcessWithTokenW,CreateProcessWithLogonW等系统函数时,Windows子系统进程就被创建了。下面是具体步骤:
- 验证参数,将Windows子系统标记和选项转换成native对应的部分。
- 打开 进程中要被执行的image文件(.exe)。
- 创建Windows executive进程对象。
- 创建初始化线程(栈,上下文,Windows executive线程对象)。
- 初始化进程。
- 开始执行初始化线程。
- 完成地址空间的初始化,开始执行程序。
- Windows进程数据结构及创建流程
- 进程及线程创建流程
- Windows进程创建的流程分析。
- Windows进程创建的流程分析
- Windows进程创建的流程分析
- 翻译: Windows Internals: 第六章: 进程创建流程
- 进程创建流程
- NPTL进程创建流程
- Windows下SVN创建流程及认证失败的解决方法
- windows下创建进程,CreateProcess()详解及用法
- Windows进程的创建
- Windows的进程创建
- Windows版进程创建
- Windows的进程创建
- 创建进程windows
- windows 创建子进程
- Windows创建进程
- windows编程->进程创建
- Android严格验证手机号码正则表达式
- USB HID 小记
- 堆排序(依据算法导论伪代码)
- 字符串专项:Ural 1354
- cocos2d-x学习耗时点备忘之一 —— CCLayer 初始化
- Windows进程数据结构及创建流程
- java连接SQL2008
- XNA Development.com
- VS2012下基于Glut 绘制矩形管示例程序:
- 部署Google Code的SVN代码托管环境——VS2008+CollabNet+TortoiseSVN
- 软件工程基础<五>
- C#学习笔记(5)
- windows phone CollectionViewSource类的使用
- sed 出现unknown command: ``' (只针对fedora18,其他系统没有试,不知道是否有问题)