进程 一般进程可以定为一个正在运行的程序的一个实例,
一个内核对象,操作系统可以用它来管理进程。也是系统保存进程统计信息的地方。
一个地址空间,其中包含了可执行文件和DLL模块的代码数据,同时包括动态内存分配,和线程堆栈和堆得分配。
CPU的工作方式,是 一个进程可以有多个线程..然后CPU会轮流调度资源分配给各个线程,就像一个时钟一样。
关于Windows应用程序的组成 要点描述:
1. GUI 和 CUI 分别表示 图形和控制台的界面,
2./SUBSYSTEM:CONSOLE 和 /SUB-SYSTEM:WINDOWS 分别是控制台和窗口的链接器开关
3._tWinMain 图形界面的入口点函数 和
_tmain 控制台界面的入口点函数。
一、Windows一般可以建立两种应用程序。 1.GUI程序 - 图形用户界面 - 它使用的连接器开关是/SUBSYSTEM:CONSOLE
2.CUI程序 - 控制台界面 - 它使用的连接器开关是/SUB-SYSTEM:WINDOWS
操作系统会加载并检查可执行文件映像的文件头,并获取这个子系统值。
根据子系统值来创建 一个符合要求的程序界面。
二、 Windows 应用程序 都会有个入口点函数,在程序运行时,函数会被调用。
int WINAPI _tWinMain(
HINSTANCE hInstanceExe,
HINSTANCE,
PTSTR pszCmdLine,
int nCmdShow);
int _tmain(
int argc,
TCHAR *argv[],
TCHAR *envp[]);
操作系统实际并不调用我们所写的入口点函数。相反,它会调用由C/C++运行库实现并链接时使用-entry:命令选项来设置
的一个C/C++运行时启动函数。该函数将初始化C/C++运行库,使我们能调用malloc和free之类函数。
应用程序类型和相应的入口点函数表

当链接器正确选择了C/C++运行库启动函数后,链接器会根据指定的链接器开关,寻找相应的入口点函数,否则会返回
"unresolved external symbol"(无法解析的外部符号)错误。 不然一般会根据情况分别选择 嵌入可执行文件的启动函数。
当然我们也可以从自己的项目中移除/SUBSYSTEM链接器开关,让程序自动判断应该使用哪个子系统。
去启动入口点函数 (WinMain, wWinMain, main, or wmain) 。
VisualC++有自带C运行库的源码。可以在ertex.c文件中找到 这4个启动入口点函数源代码。这些启动函数的用途下面简单说下:
1.获取指向心进程的完整命令行的一个指针。
2.获取指向新进程的坏境变量的一个指针。
3.初始化C/C++运行库的全局变量。如果包含了StdLib.h,我们的代码就可以访问这些变量。
4.初始化C运行库内存分配函数malloc和calloc和其他底层I/O历程使用的堆。
5.调用所有全局和静态C++类对象的构造函数。
[1] [2] 下一页
责任编辑:张瑶