调用操作系统的开销



大量调用操作系统的开销是多少?

例如,微软有一个叫做"Getpixel"的API,你必须提供x,y坐标,它将返回一个颜色值。Setpixel必须向操作系统发出数百万个请求。

这样做的开销究竟是什么?

获取像素对你给的例子,它是缓慢的,因为它使用一个内核模式驱动程序来做实际的工作,在驱动它的验证和锁,看看你实际上是一个通过直流的设备上下文,以确保它不改变在这个函数,然后复制到一个新的位图的区域在内存中读取像素你想从后重新分配位图的。

所以你有一个内核模式切换,锁,验证和内存分配,复制和释放,然后另一个模式切换回用户区,所有这些都需要时间,找到一个方法在你的程序中做GetPixel功能将节省你成千上万的时钟周期。

但是另一个API调用可能花费不超过一些内存读写,所以它在很大程度上取决于你对操作系统的调用。

没有普遍答案。取决于调用-例如涉及I/O的调用将比那些不涉及的调用慢-取决于系统调用是如何由操作系统实现的-例如中断?跳吗?——并且取决于体系结构——例如,体系结构是否实现了系统调用指令?它是否通过正常的跳跃来完成?-.

相关内容

最新更新