为什么我应该在代码中最小化系统调用的使用?

Ami*_*mar 5 operating-system system-calls

我想知道是否有任何理由在代码中最小化系统调用的使用以及不使用系统调用的替代方法,可以说使用API​​但api依次使用系统调用

这是真的吗?

cni*_*tar 13

因为大多数系统调用都有固有的开销.系统调用是一种利用内核的方法,内核是一个获得某种服务的受控网关.

执行系统调用时,会执行一些操作(警告,这是一种简化):

  • 您调用库(包装器)函数
  • 该函数将参数放在预期的位置.此函数还会输入系统调用的编号eax
  • 该函数调用陷阱(int 0x80或其他)
  • 处理器切换到内核模式
  • 内核调用一些system_call例程
  • 寄存器保存在内核堆栈中
  • 检查参数是否有效
  • 该动作被执行
  • 寄存器从内核堆栈中恢复
  • 处理器返回用户模式
  • 函数(最后......)返回

我可能忘记了一些步骤.这听起来不是很多工作吗?你想要的只是大胆的部分.其余的是开销.