系统调用是一个进程吗?

系统调用是一个进程吗?

根据我的理解,系统调用是一组内核代码,它是通过异常或中断执行的。我需要知道系统调用是否是一个进程?

答案1

进程可以进行系统调用。最初在 x86 机器上,这涉及加载寄存器以指示需要哪个调用,然后执行“int 0x80”指令。该软件中断指令导致 x86 处理器切换到内核,在内核中查看寄存器中的值,然后继续执行打开或读取或写入或关闭或查找或任何所需的系统调用。

问系统调用是否是一个进程就像问“鸟是不是一个旅行计划”?答案是不是。您可能会计划旅行去看鸟。一个进程为了做任何有用的事情,将进行系统调用(理论上另一个进程可以监视共享内存或使用 ptrace,因此进程不需要进行系统调用,永远不会有 100% 的答案),但它们不是远程是同一类事情。

答案2

进程是某些代码的运行实例。以二进制 /bin/bash 为例。该代码存在于磁盘上。每次执行 /bin/bash 时都会创建一个新进程。

在给定时刻,每个 CPU 要么在用户模式下执行,要么在内核模式下执行。用户态表示用户空间代码执行,内核态表示内核代码执行。

系统调用是某些用户代码进入内核模式的一种手段。系统调用是在进程上下文中进行的。当执行系统调用时,同一进程进入内核模式。没有创建新进程来运行该系统调用。

相关内容