Silveschatz、Galvin、Gagneの「オペレーティングシステムの概念」(2012年)を読んでいます。「2つのtest_and_set()命令が(それぞれ異なるCPU上で)同時に実行されると、何らかの順序で逐次実行される」 210ページで、私はなぜそのような機関の2つがのマルチプロセッサでもでも実行される理由を理解できません。各命令が異なるプロセッサ上で実行されるとどうなるでしょうか?私の知る限りでは、これら2つの機関は同時に実行される。
命令のアトミック性とマルチプロセッサの理解はかなり表面的なレベルにとどまっているので、私はこの問題を当然のことと考えています。誰も私を助けてくれますか?test_and_set()命令がマルチプロセッサ上で動作するのはどうしてですか?
-1
A
答えて
1
テストセットのポイントは、1つのプロセッサが最初に実行し、次にもう1つのプロセッサがそれを実行し、ではなくが同時に実行されることです。
これを実現するには、両方のプロセッサ間で通信が行われます。基本的に、1つのプロセッサは、メモリからメモリ位置を含むキャッシュラインをメモリからロードし、テストおよびセットの両方が終了するまで、そのキャッシュラインを有することができないことを他のプロセッサに知らせる。
1
結果はマシン命令によって異なります。それは理解しやすいプロセッサであると私は例として、VAXを使用してみましょう:
http://www.ece.lsu.edu/ee4720/doc/vax.pdf
VAXはBBSS(ビットセットとセットに支店を)持っている命令とビットセットとセットにBBSSI(支店インターロックされた)命令。
あなたは同じクリアビットにBBSSをやって2つのプロセッサを持っている場合は、あなたが得ることができる:
P1 Tests Bit (Clear)
P2 Tests Bit (Clear)
P1 Sets Bit and does not branch
P2 Sets Bit and dot not branch
あなたが同じビットにBBSSIを行う場合は、プロセッサがメモリをロックします。あなたは得る
p1 locks the memory
p1 Tests Bit (Clear)
P2 Tests Bit and is Blocked
P1 Sets Bit and does not branch
p1 unlocks the memory
P2 Tests Bit (SET)
P2 Branches
ほとんどの場合、命令は1ステップで実行されず、プロセッサは互いに独立して動作することができます。
関連する問題
- 1. x87 FPOP命令とFCOM命令 - どのように動作しますか?
- 2. Kinvey HTML5-Starter:README命令はローカルホスト上で動作しますが、Kinveyでは動作しません
- 3. Lisp、defunで動作しない命令
- 4. REX.BオーバーライドはMOVSS命令で動作しますか?
- 5. Atmel 89C2051マイクロコントローラで "acall"命令が動作しないのはなぜですか?
- 6. 1つの命令と1つの命令を結合するにはどうすればよいですか?
- 7. I/Oのような命令はユーザーモードでどのように動作しますか?
- 8. SSE命令はどのように使用できますか?
- 9. Git Merge命令が期待どおりに動作しない
- 10. バスをメモリにマッピングするのはどの命令ですか?
- 11. 異なるCPUで異なる動作をするX64命令
- 12. この命令はポストスクリプトではどういう意味ですか?
- 13. `test`命令はどのように機能しますか?
- 14. MOVSXアセンブリ命令はどのように機能しますか?
- 15. x86 ROR命令はどのように機能しますか?
- 16. LLVMで命令をプリントアウトするにはどうすればよいですか?
- 17. syscallはx86_64の命令ですか?
- 18. 移動命令がエラー
- 19. オペコードが同じで動作する命令が複数あるのはなぜですか?
- 20. Windows 7のデバッグ命令で動作するループ文は、DOSBox 0.74では動作しません。
- 21. la命令はどのようにMIPSで翻訳されていますか?
- 22. 短い命令のほうがパフォーマンスが良いですか?
- 23. ARMアーキテクチャのGT命令とHI命令の違いは何ですか?
- 24. ループ&2番目の命令で動作しない場合
- 25. "out"と "in"命令の特権命令はありますか?
- 26. netlogoでparamによる命令をどのように渡すのですか?
- 27. マルチプロセッサで各ワーカーを起動するにはどうすればいいですか?新しいシェルの中の?
- 28. JVM命令とは何ですか?
- 29. `timescaleはプリプロセッサ命令ですか?
- 30. callq命令とは何ですか?
ありがとうございました!本当に優れた答えと材料!私はリンクからBBSSIの説明を読んだ。私はちょっと混乱している "ビットがメモリに含まれている場合、ビットの状態の読み取りと新しい状態へのビットの設定は連動した操作である"ということは、テストするビットセットはメモリまたはプロセッサのレジスタに含めることができますか?それが1つのレジスタに含まれていれば、ビットをインターロックする必要はありませんが、ビットがレジスタに入ってからBBSSIがどのようにプログラマによって使用されるのでしょうか? – Mark
VAXには直交命令セットがあります。つまり、オペランドに任意のアドレッシングモードを許可します(レジスタを使用するメモリの移動アドレスを除く)。したがって、BBSSI命令をレジスタ・オペランドとともに使用することができます。その場合、実行はインターロックされず、BBSS命令のように動作します。それは本当に意味をなさないでしょう。 – user3344003