我想知道是否有任何理由在代码中最小化系统调用的使用以及不使用系统调用的替代方法,可以说使用API但api依次使用系统调用
是真的吗?
答案 0 :(得分:12)
因为大多数系统调用都有固有的开销。系统调用是一种利用内核的方法,内核是一个获得某种服务的受控网关。
执行系统调用时,会执行一些操作(警告,这是一种简化):
eax
int 0x80
或其他)system_call
例程我可能忘记了一些步骤。这听起来不像很多工作吗?你想要的只是大胆的部分。其余的是开销。
答案 1 :(得分:1)
system call要求系统从用户模式切换到Kernel mode。这使得系统调用变得昂贵。
更好地理解这一点的文章:
答案 2 :(得分:0)
首先,如果您使用框架或API(例如,通过使用wxWidgets而不是手动渲染窗口,或GNU C库),您的代码可以在不同的操作系统之间移植。
其次,如果您正在使用API,那么如果制造商改变操作系统的工作方式,您将不会遇到问题,因为API(应该)与以前相同。
答案 3 :(得分:0)
现在我想到的唯一原因是可移植性问题。如果使用系统调用,则代码将仅在该操作系统上运行。如果您需要将相同的源代码编译到另一个操作系统,那么您将遇到麻烦,API可能会完全不同。