我在考虑我们编写的系统调用和代码!假设我有一个如下所示的程序
#include<stdio.h>
int main()
{
int a=0,b=2,c;
c=a+b;
printf("The value of c is %d", c);
return 0;
}
让我们以 c = a+b 为例;如果它是 C++ 编译器,那么我相信会有一个对 operator+() 函数的调用。编译器当然可以通过将其替换为执行加法的实际代码而不是汇编代码中的函数调用来优化它。
并且 printf 必须使用系统调用才能将其写入不同的硬件缓冲区。所以我相信该语言提供的大多数 api 都会使用系统调用来完成功能。我不确定我的理解是否正确。如果我错了,请纠正我。
最佳答案
不,一点也不。我不确定您对系统调用的定义是否正确。从维基百科窃取定义:
In computing, a system call is how a program requests a service from an operating system's kernel.
这意味着导致系统调用的操作类型是 I/O、计时等——不是数学、赋值、(大多数)内存赋值、...
即使 malloc()
通常也会实现,因此您并不总是需要系统调用。一般而言:只有影响程序的周围环境或与其交互的操作才需要系统调用。寄存器、程序变量等不算作周围环境的一部分。
关于c++ - 程序中的每一行(变量声明除外)最终都会使用至少一个系统调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7507646/