C 强制操作系统在后台不运行其他程序的情况下运行程序

C 强制操作系统在后台不运行其他程序的情况下运行程序,c,linux,windows,macos,real-time,C,Linux,Windows,Macos,Real Time,我写了一个程序,用c语言计算闪存驱动器的读写速度。我有一个大的文本文件,可以写入闪存驱动器。它输出写入文件所需的时间,然后读取新写入的文件,并输出读取文件所需的时间 我知道当我运行c程序时,我运行程序的计算机将在后台运行其他东西,这将使时间不准确 为了使时间更精确,我想让计算机在运行时将所有资源都投入到我的c程序中。有没有这样一种方法可以让c程序以这种方式实时运行 我将在linux、mac和windows上测试这个程序。你所要求的是不可能的。想一想:如果计算机只执行你的程序,谁会在你的程序运行时

我写了一个程序,用c语言计算闪存驱动器的读写速度。我有一个大的文本文件,可以写入闪存驱动器。它输出写入文件所需的时间,然后读取新写入的文件,并输出读取文件所需的时间

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

为了使时间更精确,我想让计算机在运行时将所有资源都投入到我的c程序中。有没有这样一种方法可以让c程序以这种方式实时运行


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

你所要求的是不可能的。想一想:如果计算机只执行你的程序,谁会在你的程序运行时做内存管理您必须成为自己的操作系统


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

您所要求的是不可能的。想一想:如果计算机只执行你的程序,谁会在你的程序运行时做内存管理您必须成为自己的操作系统

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

否。Linux、MacOS和Windows都不支持实时处理。(请注意,现有的基准测试套件很好地要求您在执行其他程序时不要运行它们。)

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

在这些操作系统中,您能做的最好的事情就是将基准测试作为内核进程运行。然而,这是一件非常困难的事情,并且使其完全不可能获得任何形式的跨平台兼容性

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

否。Linux、MacOS和Windows都不支持实时处理。(请注意,现有的基准测试套件很好地要求您在执行其他程序时不要运行它们。)

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

在这些操作系统中,您能做的最好的事情就是将基准测试作为内核进程运行。然而,这是一件非常困难的事情,并且使其完全不可能获得任何形式的跨平台兼容性


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

为了实现您的目标,您很可能必须直接与硬件接口,而无需操作系统的帮助。如果您愿意编写一个内核模块,该模块也可以用作闪存驱动器的驱动程序,那么就可以这样做。作为内核模块,有一些方法可以强制代码在生成处理器之前运行到完成

为了实现您的目标,您很可能必须直接与硬件接口,而无需操作系统的帮助。如果您愿意编写一个内核模块,该模块也可以用作闪存驱动器的驱动程序,那么就可以这样做。作为内核模块,有一些方法可以强制代码在生成处理器之前运行到完成

一般来说,没有严格的可能。有了Linux,谷歌就可以进行实时进程调度。这是不可能的。一个可行的选择是多次运行程序并对结果进行统计分析。一般来说,严格来说,这是不可能的。有了Linux,谷歌就可以进行实时进程调度。这是不可能的。一种可行的替代方法是多次运行该程序并对结果进行统计分析。您可以手动禁用磁盘缓存,但不能以跨平台的方式。当然,那么你不是在衡量实际绩效。@Sneftel当然。我的观点是,他所问的很可能不是他想要的。你可以手动禁用磁盘缓存,但也不能以跨平台的方式。当然,那么你不是在衡量实际绩效。@Sneftel当然。我的意思是,他问的可能不是他想要的。谢谢你的回答,正如我所怀疑的。我的备份计划是按照你说的做,多次运行程序并平均结果,同时在运行我的程序时关闭其他程序。谢谢你的回答,正如我所怀疑的那样。我的备份计划是按照你说的做,多次运行程序并平均结果,同时在运行我的程序时关闭其他程序。这并不能解决实时处理问题。这并不能解决实时处理问题。