一、流程

  1. 操作系统创建进程,把控制权交给程序的入口(往往是运行库中的某个入口函数)
  2. 入口函数对运行库和程序运行环境进行初始化(包括堆、I/O、线程、全局变量构造等等)。
  3. 入口函数初始化后,调用 main 函数,正式开始执行程序主体部分。
  4. main 函数执行完毕后,返回到入口函数进行清理工作(包括全局变量析构、堆销毁、关闭I/O等),然后进行系统调用结束进程。

二、glibc 入口

_start -> __libc_start_main -> exit -> _exit

其中 main(argc, argv, __environ) 函数在 __libc_start_main 里执行。

三、MSVC CRT 入口

int mainCRTStartup(void)

执行如下操作:

  1. 初始化和 OS 版本有关的全局变量。
  2. 初始化堆。
  3. 初始化 I/O。
  4. 获取命令行参数和环境变量。
  5. 初始化 C 库的一些数据。
  6. 调用 main 并记录返回值。
  7. 检查错误并将 main 的返回值返回。

转载于:https://github.com/huihut/interview

(SAW:Game Over!)

OS / 进程启动过程相关推荐

  1. Android应用程序进程启动过程

    相关文章 Android系统架构与系统源码目录 Android系统启动流程(一)解析init进程启动过程 Android系统启动流程(二)解析Zygote进程启动过程 Android系统启动流程(三) ...

  2. 从源码角度看Android系统SystemServer进程启动过程

    SystemServer进程是由Zygote进程fork生成,进程名为system_server,主要用于创建系统服务. 备注:本文将结合Android8.0的源码看SystemServer进程的启动 ...

  3. 从源码角度看Android系统Zygote进程启动过程

    在Android系统中,DVM.ART.应用程序进程和SystemServer进程都是由Zygote进程创建的,因此Zygote又称为"孵化器".它是通过fork的形式来创建应用程 ...

  4. Android 系统(14)---SystemServer进程启动过程

    SystemServer进程的启动 在上一篇文章Framework学习(二)Zygote进程启动过程中,我们已经知道Zygote进程会启动SystemServer进程,但具体启动流程还没有涉及,本文我 ...

  5. Android 系统(12)---Zygote进程启动过程

    android系统进程启动流程 android系统的Zygote进程是所有android进程的父进程,包括SystemServer和各种应用进程都是通过Zygote进程fork出来的.Zygote(孵 ...

  6. android 启动app过程,应用程序进程启动过程

    原标题:应用程序进程启动过程 作者:慕涵盛华 链接:https://www.jianshu.com/p/b158615cc2ad 一.背景 首先注意的是:这里要说的是应用程序进程的启动过程,而不是应用 ...

  7. [日更-2019.4.26、27、28] cm-14.1 Android系统启动过程分析(四)-应用程序进程启动过程...

    2019独角兽企业重金招聘Python工程师标准>>> 声明 前阶段在项目中涉及到了Android系统定制任务,Android系统定制前提要知道Android系统是如何启动的: 本文 ...

  8. Android系统启动(二) — Zygote进程启动过程

    1 概述 在 Android 系统中,DVM(Dalvik 虚拟机)和 ART,系统服务进程 system_server 以及应用程序进程都是由 Zygote 进程来创建的(而 Native 程序,也 ...

  9. 应用程序进程启动过程

    --摘自<Android进阶解密> 1.AMS在启动应用程序时会检查者应用程序需要的应用进程是否存在,不存在就会请求Zygote进程启动需要的应用程序进程 2.Zygote的Java框架层 ...

最新文章

  1. 谈谈近况,谈谈自由职业,谈谈金饭碗
  2. SQL2008代理作业出现错误: c001f011维护计划创建失败的解决方法
  3. iOS架构-静态库.framework之依赖第三方库(7)
  4. 社交网络用户并非越多越好
  5. zabbix 监控项自动发现过滤_Zabbix监控之配置Linux自动发现与自动注册报警
  6. Linux Mint 18.2 Sonya 将于 6 月上旬发布公测版本
  7. Express engine 学习笔记 - 工作在反向代理背后的 Express 设置
  8. android 可行性分析,可行性研究项目分析程序与步骤
  9. 谐波分析显著性检验matlab,关于谐波检测方法的MATLAB仿真及综合性能分析.pdf
  10. linux 画图 源码,Drawing:一款开源的类似微软画图的 Linux 桌面应用
  11. 成都Uber优步司机奖励政策(3月23日)
  12. 数据库正确建立索引以及最左前缀原则
  13. 著名mybb论坛的汉化步骤
  14. MongoDB 常用shell命令汇总
  15. html 复制文本 点击复制按钮
  16. mongodb删除某个字段
  17. 树莓派CM4的6路串口测试
  18. Excel如何筛选数据重复项?
  19. 10款超实用的程序员工具,工具用得好,头发掉的少
  20. 使用DiskGenius(原DiskMan)修复损坏的硬盘分区

热门文章

  1. zookeeper在Dubbo中的作用
  2. UWP Composition API - GroupListView(一)
  3. Android 中文 API —— TextSwitcher
  4. SQL重复记录查询(转载)
  5. “2012年度IT博客大赛”获奖感言--梦想、学习、坚持、自信、淡定
  6. RhinoMock入门(3)——4种Mock类型
  7. pyspark randomSplit代码示例
  8. idea安装golang插件(仅针对2017年之前的idea版本)
  9. 深入理解java虚拟机(全章节完整)
  10. Scala重写父类普通方法