10

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

提前致谢!!

4

4 回答 4

3

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

于 2010-05-26T16:23:54.980 回答
2

CPU speed limiting? You should check this, perhaps it will useful (to some degree at least). CPU Emulation and locking to a specific clock speed

于 2010-05-26T16:21:17.687 回答
1

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

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

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

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

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

于 2010-05-26T16:17:54.077 回答
0

一个线程来休眠您的客户操作码的软件执行?

我认为它可以工作,但有点奇怪,比如快进、暂停、ff、暂停等......

如果您只是想加快进程,试试这个:使用 cpu 单步功能,并“调试”进程。您必须为 cpu 单步陷阱编写自定义处理程序。您的处理程序工作只是 NOP 的一个大循环。

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

于 2011-11-26T21:29:14.607 回答