强制操作系统在后台运行没有其他程序的程序

时间:2014-04-20 21:20:39

标签: c linux windows macos real-time

我写了一个程序来查找c中读写闪存驱动器的速度。我有一个大文本文件,写入闪存驱动器。它输出写入文件所花费的时间,然后读取新写入的文件,并输出读取它所花费的时间。

我知道我运行程序的计算机在运行c程序时会在后台运行其他东西,这会使时间不准确。

为了让时间更准确,我想做到这一点,以便计算机在运行时将所有资源用于我的c程序。有没有这种方法让c程序以这种方式实时运行?

我将在linux,mac和windows上测试这个程序。

3 个答案:

答案 0 :(得分:2)

你问的是不可能的。想一想:如果计算机除了执行你的程序之外什么也不做:在程序运行时谁会进行内存管理? 您必须是自己的操作系统!

您的测试还有另一个缺陷:无论如何,该文件很可能无法从闪存驱动器中读取。它将来自磁盘缓存,即任何现代操作系统上的RAM。要放弃这一点,您必须清除该缓存,例如弹出并重新插入驱动器。

答案 1 :(得分:2)

没有。 (正常的,消费者使用的)Linux,MacOS和Windows都不支持实时处理。 (请注意,现有的基准测试套件会让您很好地在他们正在做的事情时不要运行其他程序。)

话虽如此,所有这些操作系统都优先运行前台进程,所以除非你有很多其他东西在同一时间运行,否则你得到的结果可能不会太远。您应该使用多次试验来获得最精确的结果。

您可以在其中一个操作系统中执行的最佳操作是将基准测试作为内核进程运行。然而,这是一件非常困难的事情,并且绝对不可能获得任何类型的跨平台兼容性。

或者,您可以在实际的实时操作系统上运行基准测试。

答案 2 :(得分:0)

为了实现您的目标,您很可能必须直接与硬件连接,而无需操作系统的帮助。如果您愿意编写也充当闪存驱动器驱动程序的内核模块,则可以执行此操作。作为内核模块,有很多方法可以在产生处理器之前强制代码运行完成。