• 締切済み

OSの処理、MMUのアドレス変換表について

(1)マルチスレッドで、CPUの別コアでそれぞれ処理が進められているとき、タスクの共通のリソースにアクセスする場合も、各コアのMMUのアドレス変換表を参照すると思っています。 OSはアプリケーションソフトのメモリ割り当ての際に共通のリソースに関しては全コアのMMUのアドレス変換表に情報を書き込むのでしょうか。 (2)CPUの各コアのセグメントレジスタに情報を書き込むのはOSの役割と考えて間違いないでしょうか。 勉強を始めたばかりで、そもそも質問が的外れでしたら申し訳ございません。

みんなの回答

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.1

(1)IA-32あるいはIntel64のアドレス変換テーブルはメモリ上にあります。 各コアのMMUにはTLB(Translation Lookaside Buffer)とよばれるキャッシュがあり、CPUの必要に応じてアドレス変換テーブルの一部をエントリ単位で一時保管していますが、アドレス変換テーブルを編集する際には各コアのTLBの一部あるいは全部をOSからパージ(無効化)しています。 (2)セグメントレジスタへの書き込みは特権命令ですので、特権モードで動作するOSカーネルでしかできません。 参考までにIntelの技術情報サイトを記載しておきます。インテル64およびIA-32アーキテクチャのリファレンスマニュアルに詳細な記載があります。 # http://www.intel.co.jp/content/www/jp/ja/developer/download.html ちなみにIA-32などはメモリ上のアドレス変換テーブルをMMUが直接扱いますが、一部のRISCアーキテクチャではCPUアーキテクチャとしてはTLBしか定義されてなく、メモリ上のアドレス変換テーブルの管理とTLBへのエントリの登録は全てOSの責任になっています。

関連するQ&A