2012-05-09 22 views
-3

私は長いことから大きな質問をしています。基本的に私は、LINUXシステム上で動作するN個のプロセスと、複数のスレッドを持つ各スレッド(マルチコアCPU上)を持っているかどうかを知りたいと思うでしょう。マルチコアCPUは、同じプロセスの複数のスレッドを同時にスケジュールしますか?

LINUX osには、同じプロセスで複数のスレッドが同じプロセスで複数のスレッドを同じインスタンスで実行している場合のposibillityがあります。私はLinuxスレッドが共通の仮想空間を共有するので、疑問を抱いています。Linuxは、OSに負担をかける可能性のあるスレッドを同期させる必要があります。

Linuxが同じプロセスを同じ時刻にスケジュールしない場合は、パフォーマンスが向上すると思います。

+0

ようこそ。私はダウンボートしませんでしたが、あなたがGoogleを使って自分自身を見つけることができる基本情報のタイプなので、あなたの質問は下落していると思います。 [FAQ]と[ask]をお読みください。 –

+1

あなたは不完全な情報や間違った情報に基づいて多くの偽の結論に飛びついています!はい:異なるスレッドで異なるコアや異なるCPUを使用できます。はい、同じプロセス内のスレッドが同じアドレス空間を共有するということは、グローバル変数を保護する必要があることを意味します。これは*すべての* OSに当てはまります。もちろん、仮想メモリはスレッドやCPUスケジューリングとほとんど関係がありません(もちろん、どのOSでもプロセスがディスクからページフォールトを待ってブロックされることはありません)。そして、いいえ、私はあなたにも怒らせませんでした。 – paulsm4

答えて

3

もちろん可能です。そうでなければ、プログラマーの弱点をカバーする以外に、最初にマルチスレッド化されているアプリケーションにはほとんど意味がないでしょう。

+0

またはプログラミング言語やライブラリの弱点。多くの場合、スレッドが必要な理由は、ノンブロッキングの方法では使用できない標準またはサードパーティのライブラリコードを処理することです。 DNSルックアップが思い浮かびます。ホスト名検索セマンティクスが標準的なOSの動作と一致するようにするには、ブロックせずにそれらを実行する唯一の方法は、 'gethostbyname'を呼び出す新しいスレッドを作ることです。 –

2

N個のコアを持つシステムを使用している場合は、アプリケーションの作業負荷を並列化(分割)して、m個のタスクまたはスレッドに分けて活用できます。これにより、n個のコア間でm個のタスクを同時に実行することができます。

1

はい、これはもちろんサポートされていますが、それはかなり複雑な負担と思われます。 (多くの)詳細については、この優れた(非常に詳細な)メモリ管理の概要をご覧ください。 http://lwn.net/Articles/250967/

関連する問題