谁启动一个程序在 RAM 上运行?是内核吗?
假设我在 Linux 中点击“ls”命令,我知道它正在由 CPU 核心处理的 RAM 上运行,并在必要时进行系统调用(对内核),并使用系统调用刷新 o/p。但谁真正让“ls”在 RAM 上运行呢?
答案1
当您ls
在终端中键入时,在该终端中运行的 shell(可能是 bash 或 zsh 等)将调用系统调用,告诉内核分叉其进程。然后,它告诉内核使用系统调用将新进程的进程映像替换为ls
程序execve
。这会将程序的代码ls
从磁盘加载到内存中。
所以如果你指的是哪个程序导致程序运行,那就是 shell。