Linux程序的加载过程

可执行文件

  • 一个可执行文件存储在硬盘的一个分区中。
  • Linux中可以直接运行的文件是二进制可执行文件和Shell脚本文件,那么新程序的加载和运行就是对这两种文件进行加载和运行。

加载

  • 一个进程在内存中主要占用的几个部分,分别是代码段、数据段、BSS,栈,堆,参数。
  • 代码段、数据段、BSS的内容是可执行文件中对应的内容,加载程序并不是把它们的内容从可执行程序中填充到内存中,而是将它们的信息(基地址、长度等)更新到进程控制块PCB中,当CPU第一次实际寻址执行的时候,就会引起缺页中断,操作系统再将实际的内容从可执行文件中复制内容到内存(此时缺页的进程阻塞)
  • 的内容是程序执行中动态分配的,所以加载程序只是将它的起始地址更新到进程控制块中,执行过程中遇到动态分配内存的操作的时候再从物理内存分配实际的页。
  • 参数区在新进程加载的时候要存入环境变量和命令行参数列表。
  • 在程序加载时候存入的内容就是环境参数列表和命令行参数列表的指针和命令行参数的个数。

加载后

  • 程序被加载到内存中时称为进程
  • 每一个进程自认为占用了内存的几乎所有空间,进程的总地址4GB,这个叫做虚拟空间地址
    在这里插入图片描述
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值