进程
l 进程概念
l 进程的诞生
l 进程的死亡
一、进程:
1、简单的说
双击一个EXE图标时,系统就会产生一个相应的进程,分配相应的资源,并执行相应的代码。
2、标准一些的说法:
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
3、进程的定义
进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
二、 进程,线程相关函数
Process and Thread Functions
下列是进程与线程相关的函数
三、进程的诞生
假设EXE文件名为app.exe
CreateProcess
1、系统Shell调用CreateProcess 创建名为app.exe的进程
2、系统产生一个“进程核心对象”,计数值为1
3、系统为此进程建立一个4GB的地址空间
4、系统将代码及相关数据加载映射到上述地址空间(如app.exe的程序代码,数据资源,dll动态链接库等)
5、系统为此进程创建一个线程,这个线程称为主线程(primary thread),线程才是CPU时间分配对象。
进程可以想成是一个家庭,线程是家里的成员,主线程就是一家之长!,一个进程最少有一个线程。
6、系统调用C runtime 函数库的Startup code
7、Startup code 调用App程序的WinMain入口函数
8、App程序开始运行
四、进程的死亡
9、使用者关闭app主窗口,使WinMain消息循环结束,于是winMain结束。
10、回到Startup code
11、回到系统,系统调用 ExitProcess结束进程
TerminateProcess
五、相关代码测试
CreateProcess
PROCESS_INFORMATION pi;
STARTUPINFO si={sizeof(si)};
CreateProcess(NULL,"notepad.exe d:\\1.txt",
NULL,NULL,false,NORMAL_PRIORITY_CLASS,NULL,NULL,
&si,&pi);
ExitProcess
TerminateProcess