1. ホーム
  2. c

[解決済み] シングルプロセッサでマルチスレッドを実現できますか?

2023-05-15 01:43:10

質問

マルチスレッドは、各スレッドに割り当てられるプロセッサが複数あり、各スレッドを同時に実行できるマルチプロセッサシステムでのみ実装可能であるという概念に常に従ってきました。この場合、各スレッドはそれ専用の個別のリソースを持っているので、スケジューリングは行われません。 しかし、私は最近、シングルプロセッサのシステムでもマルチスレッドを実行することができるとどこかで読んだことがあります。 そして、もしそうなら、シングル プロセッサとマルチプロセッサ システムの違いは何ですか?

どのように解決するのですか?

もちろん、シングル プロセッサ システムでも可能ですし、実際、その方がはるかに簡単です。カーネルは、タイマー割り込みまたはその他の同様のメカニズムにより、1 つのプロセスを中断し、そのマシン状態を保存し、以前に保存した別のプロセスの状態によってそれを置き換えます。

なぜなら、複数の CPU/コアからのメモリへの同時アクセスの問題や、そこから発生する厄介なメモリ同期の問題があるからです。