win32程序运行原理
cpu的保护模式和windows系统
80386处理器有3种工作模式:实模式、保护模式、虚拟86模式。实模式和虚拟86模式是为了8086处理器兼容而设置的。保护模
式是80386处理器的主要工作模式,保护主要是对存储器的保护,windows操作系统就运行在此模式下。
CPU在保护模式下支持虚拟存储,即虚拟内存。
进程的地址空间:分为用户空间和系统空间。用户空间部分是进程的私有地址空间,进程不能以任何方式读、写其他进程此部分
空间中的数据,大量的进程的数据都被保存在这块空间中。系统空间部分放置操作系统的代码,包括内核代码、设备驱动代码、
设备I/O缓冲区等。系统空间部分在所有的进程中是共享的。
内核模式和用户模式:80386处理器共定义了4种(0~3)特权级别,或者称为环。其中, 0级是最高级(特权级), 3级是最低级(用
户级)。
系统中的每个进程都有自己的4GB私有地址空间,但是,内核模式下的系统和设备驱动程序共用一块虚拟地址空间。
进程
组成Win32进程的两个部分:
1. 进程内核对象。操作对象使用此内核对象来管理该进程,这个内核对象也是操作系统存放进程统计信息的地方。
2. 私有的虚拟地址空间。此地址空间包含了所有可执行的或者是DLL模块的代码的数据,它也是程序动态申请内存的地方,比如
线程堆栈和进程堆。
应用程序的启动过程:
控制台应用程序的入口函数将会是main(),操作系统事实上并不是真的调用main函数,而是去调用C/C++运行期启动函数,此函
数会初始化C/C++运行期库。
创建进程:
当一个线程调用CreateProcess函数的时候,系统会创建一个进程内核对象,其使用计数初始化为1。
创建一个新的进程将促使系统创建一个进程内核对象和一个线程内核对象。
当一个进程内核对象创建以后,系统会为这个内核对象分派一个唯一的ID号。
进程控制:
获取进程信息:使用ToolHelp函数,需要用到头文件<tlhelp32.h>。
终止当前进程:ExitProcess函数或者TerminateProcess函数。