Operating system 程序执行过程详细信息

Operating system 程序执行过程详细信息,operating-system,Operating System,假设我们有一个简单的helloworld程序。 我们是这样运行的: > ./helloworld > Hello, World! > loader -flags helloworld 但这里到底发生了什么?程序实际上是如何执行的 我知道,首先,加载程序将其加载到内存中。但是怎么做呢?我可以这样手动操作吗: > ./helloworld > Hello, World! > loader -flags helloworld 接下来会发生什么 它如何知道从哪

假设我们有一个简单的
helloworld
程序。 我们是这样运行的:

> ./helloworld
> Hello, World!
> loader -flags helloworld
但这里到底发生了什么?程序实际上是如何执行的

我知道,首先,加载程序将其加载到内存中。但是怎么做呢?我可以这样手动操作吗:

> ./helloworld
> Hello, World!
> loader -flags helloworld
接下来会发生什么

它如何知道从哪个点开始执行

初始“指令指针”设置在何处以及如何前进


执行完成后如何从内存“卸载”?

加载程序由语言运行库(RTL)提供,并链接到可执行文件中。它不是一个独立的程序,因此不能从命令行调用它。在C语言中,初始执行点位于
main()
函数中,这就是为什么每个程序都需要它。初始指令指针(在RTL完成加载作业后)是
main()
的第一行。它在执行每一条指令时都是高级的。
main()
末尾的卸载再次由RTL处理。加载程序是操作系统内部的,使用可执行头元数据加载。我不知道有哪个系统可以单独调用加载器-这有什么意义?加载器由语言运行库(RTL)提供,并链接到可执行文件中。它不是一个独立的程序,因此不能从命令行调用它。在C语言中,初始执行点位于
main()
函数中,这就是为什么每个程序都需要它。初始指令指针(在RTL完成加载作业后)是
main()
的第一行。它在执行每一条指令时都是高级的。
main()
末尾的卸载再次由RTL处理。加载程序是操作系统内部的,使用可执行头元数据加载。我不知道有哪个系统可以单独调用加载器-这有什么意义?