- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:64bit Linux上で32bitアプリケーションを使って共有メモリアクセス)
64bit Linux上で32bitアプリケーションを使って共有メモリアクセス
このQ&Aのポイント
- 64bit Linuxと共有メモリの関係について教えてください
- 32bitアプリケーションが発行する共有メモリ関係のAPIは64bit化されて動作すると想像していますが、その理解は正しいでしょうか
- 64bit Linuxを導入する際に、プログラム移行の手間を最小限にするため、32bitアプリケーションを64bit環境上で動作させることは可能ですか
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
回答が付かないようなので、推測で書いてみます。 >32bitライブラリにリンクしてmakeし直す程度の対応 64bit用にコンパイルするか、32bit用にコンパイルするかしかないように思いますが。 ライブラリだけ32bitでは辻褄が合わないような気がします。 >総量で4GB超の共有メモリをアクセス可能 shmget,shmatはシステムコールでカーネルが64bitで動作していますから、同時にshmat()しないなら可能でしょう。 アドレス空間は4GBですから、通常のメモリ(ヒープ、スタック)等と合計のサイズが4GB以下の必要があります。 また、分断化はされるでしょうから、厳密には4GBよりは多少小さいでしょう。 しかし、共有メモリが4GB以上必要ってちょっと用途が想像つきませんが・・・。 それと、多分32bitだとカーネルも同じアドレス空間だったような気がするので、カーネルがいなくなる分アプリケーションのアドレス空間も広くなってると思います。
お礼
terra5さん 回答感謝します。 > 64bit用にコンパイルするか、32bit用にコンパイルするかしかないように > 思いますが。 > ライブラリだけ32bitでは辻褄が合わないような気がします。 そうですか。64bit環境下で32bitアプリを動かすための互換ライブラリ のようなものがあるのかと勝手に思っていました。 > shmget,shmatはシステムコールでカーネルが64bitで動作していますから、 > 同時にshmat()しないなら可能でしょう。 > アドレス空間は4GBですから、通常のメモリ(ヒープ、スタック)等と合計 > のサイズが4GB以下の必要があります。 > また、分断化はされるでしょうから、厳密には4GBよりは多少小さいでしょう。 分かりました。 はい、「同時にshmat()しない」は大丈夫です。ある瞬間にマッピング するメモリ空間は常に少しです。 > それと、多分32bitだとカーネルも同じアドレス空間だったような気がす > るので、カーネルがいなくなる分アプリケーションのアドレス空間も広く > なってると思います。 こちらも分かりました。 どうも丁寧なご回答をいただきありがとうございました。