当我们说操作系统的控制在程序执行时传递给 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?
假设我们正在尝试 运行 任意程序 -
int main()
{
statement 1;
statement 2;
statement 3;
}
然后就是常说的在程序执行的时候,OS的控制权交给了main()函数,在main函数里面的所有语句执行完之后,控制权又交给了main()函数传递回 OS.
控制是什么意思?如果控制真的从 OS 传递给程序那么多个程序 运行 怎么会同时出现??
"Control" 是 "an ability to execute statements".
的缩写
在你的程序运行s之前,OS执行语句将你程序的代码加载到内存中,而你的程序没有执行语句的能力(即没有控制权)。
一旦您的程序加载并准备好 运行,OS 使您的程序代码能够执行语句,从 main()
函数开始。此时 OS 启动程序的代码等待它完成,即不再有控制权。
你所描述的主要是链接器的功能。链接器必须确定要在程序中执行的起始地址。
一些编程语言有明确的程序标识符(例如 Pascal、FORTRAN)来标识程序的起点。 C 使用函数名 "main" 来标识 y 的起点。
在一些实现中,C 库提供了一个起点,它是 main 的包装器。
这里的程序是system-specific所以我要笼统地说。我假设流程已经创建。现在您正在为 "run" 您的程序执行系统服务。该系统服务调用系统程序。 loader读取可执行文件中的指令设置进程地址space。
现在您的程序已准备就绪 运行。 "run" 系统服务分支(通常是调用)到可执行文件中指定的起始地址。对于将是 main 或 main 的包装器的 C 程序。
因此,您的 "run" 系统服务调用了您的 program/main/or 包装器,就像它是一个函数一样。
当您的 "main" 完成后,它 return 就像任何其他功能一样发送给调用者:"run" 系统服务。在某些系统上,系统服务会导致进程在调用 start 函数后恢复时终止。在其他系统中,系统服务退出,命令解释器恢复。
What do we mean by control ?
控制只是意味着调用您的应用程序的指令流。您的程序正在作为函数从 "run" 系统服务中调用。
调用函数就是给函数"control."
"Run" 次系统服务调用
调用的主要
return 的任何其他功能
Main 完成后 returns 到
"Run"系统服务。
if control is really passed from the OS to the program then how come multiple programs run at the same time ??
为此,我们超出了原始问题的范围。这是术语导致问题的地方。每个程序 运行s 在一个单独的进程中。操作系统管理进程。这里的控制权转移实际上是进程控制权的转移;无法控制系统。
假设我们正在尝试 运行 任意程序 -
int main()
{
statement 1;
statement 2;
statement 3;
}
然后就是常说的在程序执行的时候,OS的控制权交给了main()函数,在main函数里面的所有语句执行完之后,控制权又交给了main()函数传递回 OS.
控制是什么意思?如果控制真的从 OS 传递给程序那么多个程序 运行 怎么会同时出现??
"Control" 是 "an ability to execute statements".
的缩写在你的程序运行s之前,OS执行语句将你程序的代码加载到内存中,而你的程序没有执行语句的能力(即没有控制权)。
一旦您的程序加载并准备好 运行,OS 使您的程序代码能够执行语句,从 main()
函数开始。此时 OS 启动程序的代码等待它完成,即不再有控制权。
你所描述的主要是链接器的功能。链接器必须确定要在程序中执行的起始地址。
一些编程语言有明确的程序标识符(例如 Pascal、FORTRAN)来标识程序的起点。 C 使用函数名 "main" 来标识 y 的起点。
在一些实现中,C 库提供了一个起点,它是 main 的包装器。
这里的程序是system-specific所以我要笼统地说。我假设流程已经创建。现在您正在为 "run" 您的程序执行系统服务。该系统服务调用系统程序。 loader读取可执行文件中的指令设置进程地址space。
现在您的程序已准备就绪 运行。 "run" 系统服务分支(通常是调用)到可执行文件中指定的起始地址。对于将是 main 或 main 的包装器的 C 程序。
因此,您的 "run" 系统服务调用了您的 program/main/or 包装器,就像它是一个函数一样。
当您的 "main" 完成后,它 return 就像任何其他功能一样发送给调用者:"run" 系统服务。在某些系统上,系统服务会导致进程在调用 start 函数后恢复时终止。在其他系统中,系统服务退出,命令解释器恢复。
What do we mean by control ?
控制只是意味着调用您的应用程序的指令流。您的程序正在作为函数从 "run" 系统服务中调用。
调用函数就是给函数"control."
"Run" 次系统服务调用 调用的主要 return 的任何其他功能 Main 完成后 returns 到 "Run"系统服务。
if control is really passed from the OS to the program then how come multiple programs run at the same time ??
为此,我们超出了原始问题的范围。这是术语导致问题的地方。每个程序 运行s 在一个单独的进程中。操作系统管理进程。这里的控制权转移实际上是进程控制权的转移;无法控制系统。