当下开发人员应用最多的两大操作系统,linux & windows。
在程序开发中,进程与线程的概念,是一个好的程序员所必备的基础知识。如果对这两个概念没有很好的理解与应用,想要成为一个优秀的开发人员是很难的。
应侯捷MFC快速入门中的概念,对有关进程的概念进行下述简单的阐述。
执行一个应用程序,必然就产生一个进程(process)。
在windows最直接的程序执行的方式就是在shell中以鼠标双击某一个可执行文件图标,执行起来的App进程其实是shell调用CreateProcess激活的。相应的在linux下,你可能更会选择使用terminal的方式执行一个应用程序,现在linux完美的图形化界面下,也同样支持windows下这种执行方式。
其实两种系统大体的执行方式都可以概括如下:
注:这里针对windows下MFC的调用以及系统调用,linux没有多大区别。
1、shell调用CreateProcess激活App.exe。
2、系统产生一个“进程核心对象”,计数值加1.
3、系统为此进程建立一个4GB地址空间。
4、加载器将必要的代码加载到上述地址空间中,包括App.exe的程序、数据,以及所需的动态加载函数库(DLLs)。
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技术进程。
转载于:https://blog.51cto.com/gooner/1269278