execve函数在当前进程中加载并运行新程序a.out 的步骤:

  • 删除已存在的用户区域(用户态,上面这整个都删除)
  • 创建新的区域结构
    • 私有的、写时复制
    • 代码和初始化数据映射到.text和.data区(目标文件提供)
    • .bss和栈堆映射到匿名文件 ,栈堆的初始长度0
  • 共享对象由动态链接映射到本进程共享区域
  • 设置PC,指向代码区域的入口点
    • Linux 根据需要换入代码和数据页面