プロが教える店舗&オフィスのセキュリティ対策術

(1)マルチスレッドで、CPUの別コアでそれぞれ処理が進められているとき、タスクの共通のリソースにアクセスする場合も、各コアのMMUのアドレス変換表を参照すると思っています。
OSはアプリケーションソフトのメモリ割り当ての際に共通のリソースに関しては全コアのMMUのアドレス変換表に情報を書き込むのでしょうか。

(2)CPUの各コアのセグメントレジスタに情報を書き込むのはOSの役割と考えて間違いないでしょうか。

勉強を始めたばかりで、そもそも質問が的外れでしたら申し訳ございません。

A 回答 (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/develop …

ちなみにIA-32などはメモリ上のアドレス変換テーブルをMMUが直接扱いますが、一部のRISCアーキテクチャではCPUアーキテクチャとしてはTLBしか定義されてなく、メモリ上のアドレス変換テーブルの管理とTLBへのエントリの登録は全てOSの責任になっています。
    • good
    • 0
この回答へのお礼

遅くなってすみません。
アドレス変換テーブルはメモリ上にあるのですね。
また、詳しくご回答いただきありがとうございました。

お礼日時:2015/01/28 15:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!