一个进程的诞生于死亡
2015-06-08 19:44
232 查看
执行一个程序,必然就产生一个进程,最直接的程序执行方式就是在shell中以鼠标双击某个可执行的行文件图标,执行起来的app进程其实是shell调用createprocess激活的,看看整个流程:
1,shell调用creaeprocess激活app。exe
2,系统产生一个“进程核心对象”,计数值为1.
3,系统为此进程建立一个4GB地址空间。
4,加载器将必要的代码加载到上述地址空间中,包括app。exe的程序,数据,以及所需的动态链接库。加载如何知道要加载哪些dlls呢?他们被记录在可执行文件的.idata section中/
5,系统为此进程建立一个线程,称为主线程。线程才是CPU时间的分配对象。
6,系统调用C runtion 函数库的Startup code/
7,Startup code 调用app 程序的winmain函数。
8,app程序开始执行/
9,使用者关闭app主窗口,使winmain中的消息循环结束掉,于是winmain结束。
10,回到startup code/
11,回到系统,系统调用exitprocess结束进程
1,shell调用creaeprocess激活app。exe
2,系统产生一个“进程核心对象”,计数值为1.
3,系统为此进程建立一个4GB地址空间。
4,加载器将必要的代码加载到上述地址空间中,包括app。exe的程序,数据,以及所需的动态链接库。加载如何知道要加载哪些dlls呢?他们被记录在可执行文件的.idata section中/
5,系统为此进程建立一个线程,称为主线程。线程才是CPU时间的分配对象。
6,系统调用C runtion 函数库的Startup code/
7,Startup code 调用app 程序的winmain函数。
8,app程序开始执行/
9,使用者关闭app主窗口,使winmain中的消息循环结束掉,于是winmain结束。
10,回到startup code/
11,回到系统,系统调用exitprocess结束进程
相关文章推荐
- 操作系统--文件管理
- POJ - 2239 Selecting Courses 二分图 最大匹配
- 关于cron和crond,crontab以及bash脚本的写法等知识 cron的语法用法
- ADT下载地址整理(转)
- MyEclipse注册代码
- HTML和CSS书写心得
- 性能测试——流量测试
- Linux网卡配置与绑定
- HDU1198Farm Irrigation——并查集
- 11g查看性能慢sql的一个方法
- nefu 553 念珠的差异
- linux常用指令(二)
- QT4.8.6 Designer 集成VTK5.10.1 中QVTKWidgets插件
- HDU5265——贪心——pog loves szh II
- 智慧树
- Leetcode--RegularExpressionMatching
- java中volatile关键字的含义
- caffe学习,持续更新
- 对三层架构的理解
- 嵌入式的 gdb 远程调试