当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么

What do we mean when we say that control of the operating system is passed on to the main() function while execution of a program?

本文关键字:我们 main 函数 意思是 意思 是什么 执行程序 操作系统 控制权      更新时间:2023-10-16

让我们假设我们正在尝试运行一个任意程序-

int main()
{
statement 1;
statement 2;
statement 3;
}

然后人们常说,在执行程序时,操作系统的控制权会传递给main()函数,在执行完main函数内的所有语句后,控制权会再次传递回操作系统。

我们所说的控制是什么意思?如果控制权真的从操作系统传给了程序,那么为什么多个程序同时运行??

"Control"是"执行语句的能力"的简写。

在程序运行之前,操作系统会执行语句,将程序的代码加载到内存中,而程序则无法执行语句(即无法控制)。

一旦您的程序加载并准备运行,操作系统就为程序的代码提供了执行语句的能力,从main()函数开始。此时,启动程序的操作系统代码等待程序完成,即不再具有控制权。

您所描述的主要是链接器的功能。链接器必须识别要在程序中执行的起始地址。

一些编程语言有明确的PROGRAM标识符(例如Pascal、FORTRAN)来识别程序的起点。C使用函数名"main"来标识y的起点。

在一些实现中,C库提供了一个围绕main的包装器的起点。

这里的程序是系统特定的,所以我将是一般性的。我认为流程已经创建。现在您正在执行一个系统服务来"运行"您的程序。该系统服务调用系统程序。加载程序读取可执行文件中的指令以设置进程地址空间。

现在,您的程序已准备好运行。"运行"系统服务分支(通常是调用)到可执行文件中指定的起始地址。对于您的C程序,它要么是main,要么是围绕main的包装器。

因此,您的"运行"系统服务调用了程序/main/或包装器,就像它是一个函数一样。

当"main"完成时,它会像其他任何函数一样返回给调用者:"run"系统服务。在某些系统上,当调用启动函数后进程恢复时,系统服务会导致进程终止。在其他系统中,系统服务退出,命令解释器恢复。

我们所说的控制是什么意思?

Control只是指调用应用程序的指令流。您的程序是作为一个函数从"运行"系统服务中调用的。

调用函数意味着赋予函数"控制权">

"运行"系统服务调用调用的Main返回到的任何其他函数完成后返回到"运行"系统服务。

如果控制权真的从操作系统传递给了程序,那么为什么多个程序同时运行??

因此,我们超出了最初问题的范围。这就是术语造成问题的地方。每个程序都在一个单独的PROCESS中运行。操作系统管理进程。这里的控制权转移实际上是过程控制权的转移;而不是对系统的控制。

相关文章: