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

21、Linux 程序执行机制深度解析

Linux 程序执行机制深度解析

1. 程序执行概述

在 Linux 系统中,程序执行涉及诸多复杂的机制,从可执行文件的加载到进程上下文的切换,每个环节都至关重要。当用户启动一个程序时,系统需要处理不同的可执行文件格式、共享库的加载以及命令行参数和环境变量的传递等问题。

2. 可执行文件

可执行文件是用于初始化新执行上下文的常规文件。例如,用户在 shell 中输入/bin/ls命令时,shell 会创建一个新进程并调用execve()系统调用。sys_execve()服务例程会找到对应的文件,检查其可执行格式,并根据文件中的信息修改当前进程的执行上下文。当系统调用结束后,进程就开始执行可执行文件中的代码。

当进程开始运行新程序时,其执行上下文会发生显著变化。大多数之前计算过程中获取的资源会被丢弃,不过进程的 PID 不会改变,且新计算会继承之前未在execve()系统调用中自动关闭的所有打开文件描述符。

3. 进程凭证和能力
  • 传统进程凭证:Unix 系统为每个进程关联了一些凭证,这些凭证将进程绑定到特定的用户和用户组。凭证在多用户系统中非常重要,因为它们决定了每个进程可以执行的操作,从而保护了每个用户的个人数据完整性和整个系统的稳定性。进程的凭证存储在进程描述符的多个字段中,如下表所示:
    | 名称 | 描述 |
    | ---- | ---- |
    | uid, gid | 用户和组的真实标识符 |
    | e
http://www.cnnetsun.cn/news/2941.html

相关文章:

  • 22、Linux系统启动与模块管理全解析
  • 23、深入探索Linux技术核心:从源码结构到系统运行机制
  • 19、Linux网络编程:数据结构、系统调用与网络交互详解
  • 基础详细链表定点插入
  • 轻松时刻--文生图在AIGC中的应用
  • 单手接电话手忙脚乱?华为新机“智感握姿”懂你心,直接在你拇指旁边生成接挂按钮!
  • 35、深入理解套接字地址
  • 36、网络与套接字:Socket选项及简单套接字接口详解
  • 37、套接字编程:SMI 实现与无连接套接字详解
  • 38、网络编程中的带外数据与网络数据库函数详解
  • 39、网络与信号系统调用详解
  • 40、Linux 信号处理系统调用详解
  • 41、实时信号扩展(RTS)详解
  • 42、信号与定时器编程指南:从全局跳转到底层时钟操作
  • 43、UNIX系统编程:进程属性、封装工具与函数列表详解
  • 44、UNIX编程技术综合解析
  • 24、实用命令与脚本操作指南
  • 25、Shell命令详解:功能、用法与示例
  • 26、常见 Unix/Linux 命令详解
  • 27、UNIX/Linux命令与vi编辑器使用指南
  • 28、Vi编辑器使用指南:从基础到高级操作
  • 29、编程与脚本操作实用指南
  • Docker服务发布全过程:从代码到生产环境
  • GoZero微服务架构
  • Gin框架
  • MongoDB
  • 刘洋洋《时间旅人》上线愿每一个匆忙赶路的人 找到自己的人生步调
  • 17 . 爬楼梯
  • 18 . 杨辉三角
  • # 非对称(PKC)与对称(SBK)加密算法全指南