码迷,mamicode.com
首页 > Windows程序 > 详细

Windows内核原理研究——进程创建

时间:2016-04-13 23:41:39      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:

进程可能是用户接触的Windows系统中最多的部分了,对于Windows系统而言,进程是一个独立的地址空间可以为线程提供一个独立的执行环境,

也就是说

进程=

  • 独立的地址空间
  • 一个进程内核对象

线程=

  • 一个线程自己的栈
  • 一个线程内核对象

当然这个栈是在进程的地址空间中。那么,也就是说线程才是真正“干活”的东西,进程只不过是一些资源的集合而已。只能说是“原材料”。

在我学习Windows内核以前一直觉得进程的种种特性很神奇,比如说地址空间独立是怎么实现的呢?我们的电脑使用的都是同一块内存怎么能实现独立呢?

再比如说进程是怎么进行管理和实现那些功能的?这些疑问随着我的学习过程不减反增,尤其是当我接触了用户层的一些安全知识后,举个例子:游戏外挂,

外挂自身是一个进程,它要去读游戏进程的数据,那就是跨越进程了。可是这是怎么实现的呢?

事实上一切问题的答案都可以在内核中找到答案,因为内核才是真正的一起东西的管理者。我们只要知道了内核是怎么做的那么一切问题都迎刃而解了。

事实上Windows进程管理器处于Windows内核执行体,进程管理器实际上并不存在这么一个“东西”,所谓管理器是指一系列函数和程序的抽象集合。

我先提出几个疑问,然后通过解答这几个疑问来叙述Windows系统是怎么操作进程的。

  1. 凡事都有第一次,那么Windows系统中第一个进程是怎么创建的?或者说没有进程的情况下,系统怎么创建进程?事实上这涉及系统初始化的知识。
  2. 进程是怎么创建的?系统怎样去管理进程?

注意的一点是,创建一个进程是一系列的工作而不是单单创建了进程这么个东西。打个比方,我双击记事本程序,这个进程运行起来了。运行起来了包含着有线程创建了,有模块加载了等等。

提到创建进程,只要是接触过Windows编程的人就会想到CreateProcess函数,熟悉驱动开发的人也会知道NtCreateProcess函数,这个函数正是进程创建的重要函数之一,注意是之一。原因上面已经说了,创建进程是一系列的过程而不只是新建一个进程结构而已。

 

Windows内核原理研究——进程创建

标签:

原文地址:http://www.cnblogs.com/Ox9A82/p/5389072.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!