Operating system 操作系统加载器

Operating system 操作系统加载器,operating-system,embedded-linux,Operating System,Embedded Linux,我的问题是操作系统如何加载 用户空间应用到RAM。我知道怎么做 当我们第一次打开Bios时,引导加载程序工作,只需读取512 kb的数据,直到aa55引导加载程序签名并将引导加载程序加载到ram。常规用户空间程序是这样处理的吗?如果是,怎么做?因为引导加载程序是由bios激活的,操作系统是如何处理用户空间程序的?更具体地说,execv()如何将程序加载到RAM并启动用户空间的执行点? 提前感谢用户空间程序不像bios那样处理,内核将参与运行用户空间程序 一般而言: 当一个程序在shell中执行时

我的问题是操作系统如何加载 用户空间应用到RAM。我知道怎么做 当我们第一次打开Bios时,引导加载程序工作,只需读取512 kb的数据,直到aa55引导加载程序签名并将引导加载程序加载到ram。常规用户空间程序是这样处理的吗?如果是,怎么做?因为引导加载程序是由bios激活的,操作系统是如何处理用户空间程序的?更具体地说,execv()如何将程序加载到RAM并启动用户空间的执行点?
提前感谢

用户空间程序不像bios那样处理,内核将参与运行用户空间程序

一般而言: 当一个程序在shell中执行时,shell将调用系统调用,在新的地址空间中创建一个新任务,读入可执行二进制文件,然后开始执行它

要了解详细信息,您需要了解:

  • elf格式。当然,Linux中也可以使用其他格式,elf只是最常见的一种格式,也是一个很好的起点。了解elf将帮助您了解内核如何将可执行二进制文件精确加载到内存中

  • Linux进程管理;这将帮助您了解程序是如何开始运行的

  • 读取内核中的相关代码。fs/exec.c将非常有帮助


  • 用户空间程序不像bios那样处理,内核将参与运行用户空间程序

    一般而言: 当一个程序在shell中执行时,shell将调用系统调用,在新的地址空间中创建一个新任务,读入可执行二进制文件,然后开始执行它

    要了解详细信息,您需要了解:

  • elf格式。当然,Linux中也可以使用其他格式,elf只是最常见的一种格式,也是一个很好的起点。了解elf将帮助您了解内核如何将可执行二进制文件精确加载到内存中

  • Linux进程管理;这将帮助您了解程序是如何开始运行的

  • 读取内核中的相关代码。fs/exec.c将非常有帮助


  • 该过程因操作系统而异。有些系统有一个后台命令解释器,它存在于进程的整个生命周期中以及进程本身中。当程序运行时,命令解释器停留在后台(处于保护模式,不受用户访问)。当程序完成时,命令解释器来到前台,可以在同一进程中运行另一个程序

    在太监的世界里,命令解释器只是一个用户模式的程序。每当它运行一个程序时,就会启动另一个进程

    这两种类型的系统都使用加载程序来配置进程地址空间以运行程序。可执行文件是一组指令,用于定义如何布局地址空间


    这与引导加载程序有很大不同。引导加载程序盲目地将存储的数据块加载到内存中。程序加载器包含用于布局进程地址空间的复杂指令,其中包括处理共享库和进行地址修复

    程序因操作系统而异。有些系统有一个后台命令解释器,它存在于进程的整个生命周期中以及进程本身中。当程序运行时,命令解释器停留在后台(处于保护模式,不受用户访问)。当程序完成时,命令解释器来到前台,可以在同一进程中运行另一个程序

    在太监的世界里,命令解释器只是一个用户模式的程序。每当它运行一个程序时,就会启动另一个进程

    这两种类型的系统都使用加载程序来配置进程地址空间以运行程序。可执行文件是一组指令,用于定义如何布局地址空间


    这与引导加载程序有很大不同。引导加载程序盲目地将存储的数据块加载到内存中。程序加载器包含用于布局进程地址空间的复杂指令,其中包括处理共享库和进行地址修复

    BIOS的可能副本不加载512 KB,但仅加载512字节。BIOS的可能副本不加载512 KB,但仅加载512字节。您能给出任何示例代码段吗?所以我可以看到程序是如何插入ram的?谢谢你能给出任何代码示例吗?所以我可以看到程序是如何插入ram的?谢谢