如何模拟不同的CPU频率和限制RAM

时间:2010-05-26 16:05:39

标签: c# process multithreading cpu ram

我必须用C#构建一个模拟器。该模拟器应该能够以可配置的CPU速度和有限的RAM大小运行第二个线程,例如, 144MHz和50MB 当然我知道模拟器永远不会像真正的硬件一样准确。但我试着获得几乎相似的表现 目前我正在考虑创建一个我将不时停止/休眠的线程。根据所需的CPU速度,模拟器应调整此线程的休眠时间,从而模拟不同的CPU频率。为了测量实现的速度我虽然使用PerformanceCounters。但是使用这种方法我遇到的问题是我不知道如何限制线程可以使用的RAM大小 您对如何实现这样的模拟器有什么想法吗?

提前致谢!!

4 个答案:

答案 0 :(得分:3)

使用vmware等虚拟机可以轻松限制内存。您可以使用一些超频工具更改CPU速度。例如http://cpu.rightmark.org/products/rmclock.shtml 祝你好运!

答案 1 :(得分:2)

CPU速度限制?你应该检查一下,也许它会有用(至少在某种程度上)。 CPU Emulation and locking to a specific clock speed

答案 2 :(得分:1)

如果您关注模拟操作系统环境,那么一个答案就是使用可以控制内存和CPU参数等的虚拟机环境。

线程暂停\停止可能会帮助您模拟CPU频率,但这将非常不准确,因为暂停线程时它将被取消调度,然后由操作系统重新安排它一些“随机”时间点,即你无法控制的一点。

至于限制内存,启动一个托管代码的新进程是一个选项,然后限制该进程的内存,例如:

http://www.codeproject.com/KB/threads/Setting_Max_Memory_Limit.aspx

但这并不能真正模拟整体操作系统内存限制。

答案 3 :(得分:0)

用于暂停客户操作码的软件执行的线程?

我认为它有效,但有点奇怪,如快进,暂停,ff,暂停等......

如果您只是想加快流程,请尝试以下方法:使用cpu单步功能,并“调试”流程。您必须为cpu单步执行陷阱编写自定义处理程序。你的处理程序工作只是一个很大的NOP循环。

每条指令之间有一个很好的延迟。