質問

私は(それは実際には多値メモリシミュレーション、キャッシュL1 / L2、ブロック置換、などです)Cでのデュアルコアプロセッサシミュレータを構築する必要があります。事は、私は(私がスレッドとしてプログラミングをしています)コアを同期する方法を考え出す苦労を抱えている、です。私はグローバルクロックを行うことができますどのように任意のアイデア?私は子プロセスにスレッドから変更すべきか? 事前に感謝します。

役に立ちましたか?

解決

ここで

だから、多くのオプション:あなたは終わらアップ可能性があるため、複数のスレッドとの複雑な相互作用をサポートするには、「バス」のメッセージパッシングとの「仮想クロック」を使用して検討する必要があります。この方法で、あなたが代わりにsynchonizationロジックのデバッグのコア機能に集中するより多くの時間を持っています...

この技術を使用して、あなたはここでの 見る(ステート・マシンを構築することができますする の)「俳優」のスレッド(最悪の場合)あたりとミューテックス/条件についてはあまり心配。あなたはこのベースを持ってたら、例えば「私は、この詳細について忘れてしまった...心配ない、ただの再する必要はありません...ここに状態を追加していない(ミッドストリームを表示ケースを扱うことができるようになります)私のミューテックスを-shuffleます。

(あなたはリアルタイムで実行することはできませんので、!)

また、シミュレーションをやっているので、すべての「仮想時間」についてです、その後、「仮想クロック」に基づいて、ベースのアーキテクチャを持つことは、適切なレベルにまで問題を抽象化します。

他のヒント

あなたはクロックスレッドプラスNプロセッサスレッドを持つことができます。クロック・スレッドは、明示的に1つの処理工程を行うために、各プロセッサスレッドへの呼び出しを行うことができます。各プロセッサスレッドはdoStep()にクロックスレッドからの呼び出しを取得します。それは一歩は、当時クロックスレッドに制御を返します。

また、あなたはあなたのクライアントコードのバグをキャッチする可能性が高くなりますように、プロセッサスレッドが手順を実行するために呼び出される順序をランダム化することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top