OS / 进程启动过程
一、流程
- 操作系统创建进程,把控制权交给程序的入口(往往是运行库中的某个入口函数)
- 入口函数对运行库和程序运行环境进行初始化(包括堆、I/O、线程、全局变量构造等等)。
- 入口函数初始化后,调用 main 函数,正式开始执行程序主体部分。
- main 函数执行完毕后,返回到入口函数进行清理工作(包括全局变量析构、堆销毁、关闭I/O等),然后进行系统调用结束进程。
二、glibc 入口
_start -> __libc_start_main -> exit -> _exit
其中 main(argc, argv, __environ)
函数在 __libc_start_main
里执行。
三、MSVC CRT 入口
int mainCRTStartup(void)
执行如下操作:
- 初始化和 OS 版本有关的全局变量。
- 初始化堆。
- 初始化 I/O。
- 获取命令行参数和环境变量。
- 初始化 C 库的一些数据。
- 调用 main 并记录返回值。
- 检查错误并将 main 的返回值返回。
转载于:https://github.com/huihut/interview
(SAW:Game Over!)
OS / 进程启动过程相关推荐
- Android应用程序进程启动过程
相关文章 Android系统架构与系统源码目录 Android系统启动流程(一)解析init进程启动过程 Android系统启动流程(二)解析Zygote进程启动过程 Android系统启动流程(三) ...
- 从源码角度看Android系统SystemServer进程启动过程
SystemServer进程是由Zygote进程fork生成,进程名为system_server,主要用于创建系统服务. 备注:本文将结合Android8.0的源码看SystemServer进程的启动 ...
- 从源码角度看Android系统Zygote进程启动过程
在Android系统中,DVM.ART.应用程序进程和SystemServer进程都是由Zygote进程创建的,因此Zygote又称为"孵化器".它是通过fork的形式来创建应用程 ...
- Android 系统(14)---SystemServer进程启动过程
SystemServer进程的启动 在上一篇文章Framework学习(二)Zygote进程启动过程中,我们已经知道Zygote进程会启动SystemServer进程,但具体启动流程还没有涉及,本文我 ...
- Android 系统(12)---Zygote进程启动过程
android系统进程启动流程 android系统的Zygote进程是所有android进程的父进程,包括SystemServer和各种应用进程都是通过Zygote进程fork出来的.Zygote(孵 ...
- android 启动app过程,应用程序进程启动过程
原标题:应用程序进程启动过程 作者:慕涵盛华 链接:https://www.jianshu.com/p/b158615cc2ad 一.背景 首先注意的是:这里要说的是应用程序进程的启动过程,而不是应用 ...
- [日更-2019.4.26、27、28] cm-14.1 Android系统启动过程分析(四)-应用程序进程启动过程...
2019独角兽企业重金招聘Python工程师标准>>> 声明 前阶段在项目中涉及到了Android系统定制任务,Android系统定制前提要知道Android系统是如何启动的: 本文 ...
- Android系统启动(二) — Zygote进程启动过程
1 概述 在 Android 系统中,DVM(Dalvik 虚拟机)和 ART,系统服务进程 system_server 以及应用程序进程都是由 Zygote 进程来创建的(而 Native 程序,也 ...
- 应用程序进程启动过程
--摘自<Android进阶解密> 1.AMS在启动应用程序时会检查者应用程序需要的应用进程是否存在,不存在就会请求Zygote进程启动需要的应用程序进程 2.Zygote的Java框架层 ...
最新文章
- 谈谈近况,谈谈自由职业,谈谈金饭碗
- SQL2008代理作业出现错误: c001f011维护计划创建失败的解决方法
- iOS架构-静态库.framework之依赖第三方库(7)
- 社交网络用户并非越多越好
- zabbix 监控项自动发现过滤_Zabbix监控之配置Linux自动发现与自动注册报警
- Linux Mint 18.2 Sonya 将于 6 月上旬发布公测版本
- Express engine 学习笔记 - 工作在反向代理背后的 Express 设置
- android 可行性分析,可行性研究项目分析程序与步骤
- 谐波分析显著性检验matlab,关于谐波检测方法的MATLAB仿真及综合性能分析.pdf
- linux 画图 源码,Drawing:一款开源的类似微软画图的 Linux 桌面应用
- 成都Uber优步司机奖励政策(3月23日)
- 数据库正确建立索引以及最左前缀原则
- 著名mybb论坛的汉化步骤
- MongoDB 常用shell命令汇总
- html 复制文本 点击复制按钮
- mongodb删除某个字段
- 树莓派CM4的6路串口测试
- Excel如何筛选数据重复项?
- 10款超实用的程序员工具,工具用得好,头发掉的少
- 使用DiskGenius(原DiskMan)修复损坏的硬盘分区