《Windows程序设计》复习:
Chap 2, Win32程序运行原理
1. 进程、程序与线程
程序是一个文件,比如,一个.exe文件,是一种静态的代码
进程是程序的一个实例(正在运行的程序),存在内存中,有自己的虚拟地址空间(比如,32位系统是4G),并被OS分配一定的资源,如代码段,数据段及文件Handle等其它资源
线程是进程内执行代码的独立实体;一个进程至少有一个线程,否则就会被销毁。
2. 内核对象与Handle
Handle是一个数字,代表一个内核对象(一种OS内核才参访问的数据结构)
3. 一个程序被执行的过程
任何一个程序执行,实质都是调用系统调用CreateProcess --------- 无论用户程序调用或者是Shell调用
CreateProcess大致过程如下:
* 根据参数确定程序文件名
* 创建一个进程内核对萌
* 创建进程虚拟地址空间,装载文件内容,为其分配代码段、数据段及其它资源
* 创建主线程内核对象
* 在主线程中执行C/C++ Runtime启动代码(做一些初始化)
* Runtime调用入口函数main(...),程序启动完成。
4. 重要数据结构
STARTUPINFO
LPROCESS_INFORMATION
## 一些零星的知识点
1. WINAPI, __stdcal, __cdelc, __pascal
主要区别:
参数入stack顺序
调用者还是被调用者谁来管理clear stack
WINAPI = __stdcall,所有Windows回调函数都必须使用此约定
一个比较好的解释文章:http://zhidao.baidu.com/question/107145682.html?fr=qrl&cid=868&index=1
本文介绍了Win32程序的基本概念,包括进程、程序与线程的区别,内核对象与Handle的作用,以及程序从加载到执行的具体流程。还讨论了不同调用约定的主要差异。
1088

被折叠的 条评论
为什么被折叠?



