【发布时间】:2011-09-19 11:08:25
【问题描述】:
我想知道是否有任何理由尽量减少代码中系统调用的使用以及不使用系统调用的替代方法,有人会说使用 API 但 api 反过来使用系统调用
是真的吗??
【问题讨论】:
标签: operating-system system-calls
我想知道是否有任何理由尽量减少代码中系统调用的使用以及不使用系统调用的替代方法,有人会说使用 API 但 api 反过来使用系统调用
是真的吗??
【问题讨论】:
标签: operating-system system-calls
因为大多数系统调用都有固有的开销。系统调用是一种进入内核的方法,是获取某些服务的受控网关。
执行系统调用时,会执行一些操作(警告,这是一种简化):
eax
int 0x80 或其他)system_call 例程而且我可能忘记了一些步骤。这听起来是不是工作量很大?你想要的只是粗体部分。其余的都是开销。
【讨论】:
system call 要求系统从用户模式切换到 Kernel mode。这使得系统调用变得昂贵。
一篇文章可以更好地理解这一点:
【讨论】:
首先,如果您使用框架或 API(例如,使用 wxWidgets 而不是手动渲染窗口或 GNU C 库),您的代码可以在不同操作系统之间移植。
其次,如果您使用 API,那么如果制造商更改操作系统的底层工作方式,您将不会遇到问题,因为 API(应该)与以前相同。
【讨论】:
我现在想到的唯一原因是可移植性问题。如果您使用系统调用,您的代码将仅在该操作系统上运行。而如果你需要将相同的源代码编译到另一个操作系统上,你就会遇到麻烦,API可能会完全不同。
【讨论】: