一.进程和线程
1. 进程是正在运行的程序,它拥有自己的虚拟空间,拥有自己的代码、数据和其他系统资源;一个进程也拥有一个或多个运行在其内的线程。
2. 线程是进程内执行代码的独立实体。操作系统创建进程后,会创建一个线程执行进程中的代码,通常这个线程称为主线程。
3. 进程和程序的区别:程序时一连串静态的指令,而进程是一个容器,包含了一系列运行在这个程序实例上下文中的线程使用的资源。
二.应用程序的启动过程
1. OS并不是直接调用main函数,而是先调用C/C++的运行期启动函数,此函数会初始化C/C++运行期库。
2. 在控制台程序中,C/C++运行期启动函数会调用程序入口函数main。
3. Win32实例的运行过程:
1) OS调用CreateProcess创建新的进程,同时会创建一个新的进程内核对象(OS用来管理这个进程的小的数据结构)。
2) OS接着为新进程创建一个主线程,这个主线程通过执行C/C++运行期启动代码开始运行,C/C++运行期启动代码又会调用main函数。
4. OS在创建新的进程时会为新的进程指定一个STARTUPINFO类型的变量,一个进程也可以调用GetStartupInfo(LPSTARTUPINFO lpStartupInfo),来获取父进程创建自己时所使用的STARTUPINFO结构。
typedef struct _STARTUPINFO {
DWORD cb;
LPTSTR lpRe