测试操作系统性能时,硬件开销和软件开销之间有什么区别

时间:2016-02-01 22:33:31

标签: c++ performance hardware overhead

我正在为一个操作系统类做一个学校项目。我必须估计各种开销 - 例如,时间测量开销,上下文切换开销,内存/磁盘访问开销。在其中一些上下文中,我需要估计开销的软件开销组件是什么,以及硬件组件将是什么。有人可以举例说明哪些操作会被描述为硬件开销以及哪些操作将是软件?假设在调用函数时设置堆栈是软件开销,我是否正确,因为它只涉及指针被移动?访问磁盘上的块会产生硬件开销吗?这些操作似乎很容易表征。也许有人可以提供一些其他的例子来巩固我的理解。

2 个答案:

答案 0 :(得分:2)

任何向您提供作业的人都应该定义所涉及的术语,例如software overheadhardware component。如果他们没有,你应该问。

它不像它看起来那么清晰。你似乎接受Accessing a block on disk would be hardware overhead。那么记忆呢?内存是硬件组件,就像硬盘驱动器一样。每次内存访问都需要一个可测量的,虽然很小的时间。这是软件与硬件计数的因素吗?甚至在讨论可以转换为磁盘访问的管道,缓存或虚拟内存页面错误之前。

我可以就网络,GPU,显示器等提出类似的观点。然而,重点仍然是,对于作业来说,总是要提出更好的要求,而不是第二次猜测 - 并且可能猜错了。

答案 1 :(得分:1)

这些是正确的例子。硬件开销的一些其他示例包括等待设备(例如打印机),以及等待网络上的另一个节点。

软件开销可能正在访问共享库,虚拟表也是如此。在内核空间中你很难找到;我不认为共享对象可以存在于用户域之外。