当前位置: 首页 > news >正文

linux进程加载和启动过程分析

我们的源代码通过预处理,编译,汇编,链接后形成可执行文件,那么当我们在终端敲下指令$ ./a.out argv1 argv2 后,操作系统是怎么将我们的可执行文件加载并运行的呢?

首先知道,计算机的操作系统的启动程序是写死在硬件上的,每次计算机上电时,都将自动加载启动程序,之后的每一个程序,每一个应用,都是不断的 fork 出来的新进程。那么我们的可执行文件,以linux 系统为例,也是由shell 进程 fork 出一个新进程,在新进程中调用exec函数装载我们的可执行文件并执行。

可执行文件格式ELF

可执行文件需要被内核运行,自然需要遵守一定的规范。

Linux下标准的可执行文件格式是ELF。ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西、以及都以什么样的格式去放这些东西。它自最早在 System V 系统上出现后,被 UNIX 世界所广泛接受,作为缺省的二进制文件格式来使用。

但是linux也支持其他不同的可执行程序格式, 各个可执行程序的执行方式不尽相同, 因此linux内核每种被注册的可执行程序格式都用linux_bin_fmt来存储, 其中记录了可执行程序的加载和执行函数。

在这里插入图片描述

  • st

http://www.lryc.cn/news/361314.html

相关文章:

  • WLAN组网模型探究
  • 操作系统基础知识
  • Kompas AI:智能生活的开启者
  • Java——二进制原码、反码和补码
  • git使用流程
  • C++设计模式|结构型 代理模式
  • C语言 带头双向循环链表的基本操作
  • MATLAB中扩展卡尔曼滤波误差估计的关键点
  • SpringBoot温习
  • Spring Cloud:构建高可用分布式系统的利器
  • IT技术 | 电脑蓝屏修复记录DRIVER_IRQL_NOT_LESS_OR_EQUAL
  • windows 下编译 TessRact+leptonica 识别图片文字
  • 如何把docker里的内容拷贝出来
  • OpenAI开始训练新的前沿模型——但GPT-5至少在90天内不会推出
  • 配置 HTTP 代理 (HTTP proxy)
  • mysql binlog查看指定数据库
  • React + SpringBoot开发用户中心管理系统
  • 移动机器人定位与导航实训记录
  • 彩灯控制器设计 74ls160+ne555实现
  • Windows API 速查
  • 智能名片小程序源码系统平台版 人人可创建属于自己的名片 前后端分离 带完整的源代码以及搭建教程
  • 香橙派OrangePI AiPro测评 【运行qt,编解码,xfreeRDP】
  • 重生之我要精通JAVA--第七周笔记
  • MySQL—函数—数值函数(基础)
  • fintuning chatglm3
  • 草台班子啊草台班子:共享电源导致的BUG(供电不足)
  • java递归计算文件夹和文件大小
  • 硬币检测电路设计
  • 3.基础光照
  • Image Search-这是你的图像搜索