我必须在C中构建一个双核处理器模拟器(实际上是一个多级内存模拟,L1/L2高速缓存,块替换等)。问题是,我很难确定一种同步内核的方法(我将其作为线程进行编程)。有什么想法可以做全局时钟吗?我应该从线程更改为子进程吗?
提前致谢

最佳答案

这里有很多选择:由于您最终可能支持与多个线程的复杂交互,因此您可能要考虑使用“虚拟时钟”和消息传递“bus” 。这样,您将有更多时间专注于核心功能,而不是调试同步化逻辑...

使用这种技术,您可以为每个“actor”线程(最坏的情况)构建一个状态机(请参阅 here ),而不必担心互斥体/条件。有了这个基础之后,您就可以处理中游出现的案件(例如“我忘记了这个细节...不用担心,只需在此处添加状态...就不必-随机播放我的互斥锁)。

同样,由于进行仿真完全是关于“虚拟时间”的(因为您不能实时运行!),因此基于“虚拟时钟”的基础架构会将问题抽象到适当的水平。

10-01 21:03
查看更多