linux 运行可执行文件_linux 50hz运行一次可执行文件-程序员宅基地

本文只为整理思路,供自己日后参考。现在就从从一个执行文件a.out的运行开始,自上而下地分析linux是如何运行一个执行文件的。

1、首先,需要了解一下a.out这个目标文件。a.out在linux下是ELF(Executable Linkable Format)文件格式,该目标文件由一个文件头、代码段、数据段(已初始化)、从定位信息区、符号表及符号名字字符串构成,如下左图所示,经过链接后生成执行文件如下右图所示,需要说明的是1).bss段在目标文件和执行文件中并不占用文件的空间,但是它在加载时占用地址空间;2)链接后各个段在虚拟空间上的地址就确定了,并且linux下,ELF可执行文件默认从地址0x080480000开始分配。

img img

我们知道在linux下运行一个程序只要在shell中执行 ./a.out 这个命令就OK了,剩下的事情操作系统会替我们完成。但是操作系统到底做了什么,它是怎么做的呢,接下来就来解析一下。

2、linux系统中每个程序都运行在一个进程上下文中,这个进程上下文有自己的虚拟地址空间。当shell运行一个程序时,父shell进程生成一个子进程,它是父进程的一个复制品。子进程通过execve系统调用启动加载器。加载器删除子进程已有的虚拟存储段,并创建一组新的代码、数据、堆、栈段,新的堆和栈被初始化

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/manongxianfeng/article/details/114194786

智能推荐

计算机网络:05---网络类型:局域网、城域网、广域网、个域网、无线网络-程序员宅基地

文章浏览阅读2w次,点赞12次,收藏74次。网络类型简单的分为5种局域网(LAN) 城域网(MAN) 广域网(WAN) 个域网(PAN) 无线网络一、局域网(LAN)1.概念:局域网是指局限于一个地点、一栋建筑或一组建筑的网络2.组成:由多种组件构成:比如台式机、打印机、服务器以及其他存储设备3.特点所有的主机地址都落在一个单一连续的地址范围内 局域网不包含路由器,通常由单一的组织者进行管理 局域网内的通信..._城域网

讲解如何在虚拟机上安装Kali Linux_gns3路由连接 本地kali虚拟机-程序员宅基地

文章浏览阅读6.3k次,点赞8次,收藏94次。本文讲解如何在虚拟机上安装Kali Linux,希望对大家有所帮助。准备:一台电脑,VMware(VMware安装教程)一、下载系统镜像文件1.首先下载系统镜像,进入kali官网,在Downloads中选择Download Kali Linux,如下图所示。2.根据电脑配置选择合适的版本,在这里我选择的是64位版本,点击HTTP下载镜像文件。二、创建新的虚拟机1.打开VMware Workstation,创建新的虚拟机,我们使用自定义的配置方法。2.导入系统镜像文件。3.选择客户机_gns3路由连接 本地kali虚拟机

台式机关闭计算机时没有待机,台式电脑怎么设置成不会自动休眠?-程序员宅基地

文章浏览阅读1.1k次。优质回答 回答者:韬光养晦AA在开始菜单选择控制面板选项进入;在控制面板设置界面选择“系统与安全”;在系统与安全界面选择“更改计算机睡眠时间”;在更改睡眠时间页面,将电源接通时的睡眠时间修改为从不;修改设置后,点击保存修改按钮完成所有操作,电脑就不会休眠了。-----------------------------------------------------------------回答者:辜月..._电脑怎么设置关机不是休眠

排序算法_时间复杂度小于nlogn的排序-程序员宅基地

文章浏览阅读257次。十大排序算法可分为两类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。计数排序:第一次循环遍历数组,对每个值计数;第二次循环遍历每个值,形成排序数组。k为值个数。适用于值在一定可数范围,如公司..._时间复杂度小于nlogn的排序

android studio download maven-metadata.xml卡住问题_android studio xml下载不了-程序员宅基地

文章浏览阅读1.6w次,点赞8次,收藏12次。android studio download maven-metadata.xml卡住问题我的android studio版本已经升级到4.0.1了,Gradle插件版本,即com.android.tools.build:gradle后面跟着的版本,也是4.0.1,对应的gradle版本已经是6.1.1了,即使用的是gradle-6.1.1-all.zip。最近经常遇见更新代码后第一次编译dowlnad maven-metadata.xml文件卡住半天,最后还是sync fail的问题,最后的解决方法_android studio xml下载不了

智能时代的到来,我们是否应该信任人工智能?-程序员宅基地

文章浏览阅读1.1k次。智造观点人工智能的概念自从被提出来以后,就备受关注。现在,这项新兴的技术也已经出现在了我们生活的方方面面,涉及各种各样的应用程序,比如各类搜索引擎、打车软件以及智能助手S..._你对人工智能技术依赖性和信任感的看法

随便推点

计算1-N中第K小的数字(按字典序排序)_长度为n的第k个排列 1,2,3,...,n 的字典序第k 小的排列。-程序员宅基地

文章浏览阅读2.5k次。public static int calK(int n, int k) { if (k > n) { return 0; } int target = 1; for (int i = 2; i <= k; i++) { target = next(target, n..._长度为n的第k个排列 1,2,3,...,n 的字典序第k 小的排列。

stylecloud ,wordcloud 库学习及使用例子_stylecloud安装-程序员宅基地

文章浏览阅读1k次。安装pyhton安装库stylecloudpip install numpypip install pillowpip install matplotlibpip install wordcloudpip install stylecloud因为要修改源代码stylecloud,所以要查看路径#安装两次就可以看到安装路径了,如执行两次 pip install numpy。查看python则可以直接where python因为stylecloud 默认不能设置模板及..._stylecloud安装

谷歌浏览器修改启动命令_修改谷歌浏览器命令行-程序员宅基地

文章浏览阅读2.9w次。最近项目要上线,需要各种环境的测试,来来回回的修改host文件,改一次host就需要重启一下谷歌浏览器,很烦,就查了一下,做个整理 为防止每次修改hosts文件之后都需要重新启动一次浏览器这种行为 首先,我们需要给谷歌浏览器安装插件DNS Flusher for Chrome 接下来修改谷歌的启动命令 方式一:修改快捷方式的启动命令 添加阴影部分的命令:–enable-net-benc_修改谷歌浏览器命令行

2022-2028年中国体声波滤波器(BAW)行业市场专项调研及投资前景规划报告_baw滤波器市场-程序员宅基地

文章浏览阅读1.7k次。本研究报告数据主要采用国家统计数据,海关总署,问卷调查数据,商务部采集数据等数据库。其中宏观经济数据主要来自国家统计局,部分行业统计数据主要来自国家统计局及市场调研数据,企业数据主要来自于国统计局规模企业统计数据库及证券交易所等,价格数据主要来自于各类市场监测数据库。报告目录:第一章 体声波滤波器(BAW)行业相关概述第一节 体声波滤波器(BAW)行业定义及特征一、体声波滤波器(BAW)行业定义及分类二、行业特征分析第二节 体声波滤波器(BAW)行业经营模式分析一、采购模式分析..._baw滤波器市场

STM32F10x—DMA总结_dma_it_tc-程序员宅基地

文章浏览阅读3.5k次。各个寄存器作用1) DMA_CPARx或DMA_CMARx寄存器指定外设基地址或存储器单元2) 执行一次DMA_CNDTRx寄存器的递减操作,该寄存器包含未完成的操作数目。3) 每个通道的优先权可以在DMA_CCRx寄存器中设置,有4个等级4) 外设和存储器的传输数据量可以通过DMA_CCRx寄存器中的PSIZE和MSIZE位_dma_it_tc

MySQL 8 无法找到 my.ini 文件_mysql8 my.ini-程序员宅基地

MySQL 8无法找到my.ini文件,需要解决该问题来启动MySQL服务器。

推荐文章

热门文章

相关标签