news 2026/1/10 10:57:15

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
21、Linux 程序执行机制深度解析

Linux 程序执行机制深度解析

1. 程序执行概述

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

2. 可执行文件

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

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

3. 进程凭证和能力
  • 传统进程凭证:Unix 系统为每个进程关联了一些凭证,这些凭证将进程绑定到特定的用户和用户组。凭证在多用户系统中非常重要,因为它们决定了每个进程可以执行的操作,从而保护了每个用户的个人数据完整性和整个系统的稳定性。进程的凭证存储在进程描述符的多个字段中,如下表所示:
    | 名称 | 描述 |
    | ---- | ---- |
    | uid, gid | 用户和组的真实标识符 |
    | e
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!