64bit Linux上で32bitアプリケーションを使って共有メモリアクセス

このQ&Aのポイント
  • 64bit Linuxと共有メモリの関係について教えてください
  • 32bitアプリケーションが発行する共有メモリ関係のAPIは64bit化されて動作すると想像していますが、その理解は正しいでしょうか
  • 64bit Linuxを導入する際に、プログラム移行の手間を最小限にするため、32bitアプリケーションを64bit環境上で動作させることは可能ですか
回答を見る
  • ベストアンサー

64bit Linux上で32bitアプリケーションを使って共有メモリアクセス

64bit Linux と共有メモリとの関係についてどなたか教えて いただけないでしょうか。  (現段階では、マシンもOSも64bitのものは無く、導入前での   検討段階です) 使いたいと思っているのは Red Hat Enterprise Linux 3.0 です。 現在動かしているアプリケーションが使っている共有メモリの サイズが大きくなってきたために64bitのLinuxを検討しています。 ただし、プログラム移行の手間を最小限にするめ、64bit環境上で 32bitライブラリにリンクしてmakeし直す程度の対応で済ませたいと 思っています(言語はCです)。 このような32bitアプリケーションが発行する共有メモリ関係の API‥たとえば、shmget()とかshmat()‥の呼び出しは、どこかの レイヤで最終的に64bit化されて動くと想像しています。 そうすると、32bit用のインターフェースに破綻を来たさない限りは、 総量で4GB超の共有メモリをアクセス可能(具体的には、総量として 4GBを越えて取得でき、参照時にはマッピングサイズが小さければ、 それらのいずれの部分もマッピングできる)と想像しているのですが そのような理解で良いでしょうか。 ちなみに、4GB超の大きなメモリを1つ使うわけではなく、100個前後 に分散した取得/マッピングをしています。つまり個々のブロックは 小さなサイズです。 よろしくお願いします。

  • uemon
  • お礼率100% (3/3)

質問者が選んだベストアンサー

  • ベストアンサー
  • terra5
  • ベストアンサー率34% (574/1662)
回答No.1

回答が付かないようなので、推測で書いてみます。 >32bitライブラリにリンクしてmakeし直す程度の対応 64bit用にコンパイルするか、32bit用にコンパイルするかしかないように思いますが。 ライブラリだけ32bitでは辻褄が合わないような気がします。 >総量で4GB超の共有メモリをアクセス可能 shmget,shmatはシステムコールでカーネルが64bitで動作していますから、同時にshmat()しないなら可能でしょう。 アドレス空間は4GBですから、通常のメモリ(ヒープ、スタック)等と合計のサイズが4GB以下の必要があります。 また、分断化はされるでしょうから、厳密には4GBよりは多少小さいでしょう。 しかし、共有メモリが4GB以上必要ってちょっと用途が想像つきませんが・・・。 それと、多分32bitだとカーネルも同じアドレス空間だったような気がするので、カーネルがいなくなる分アプリケーションのアドレス空間も広くなってると思います。

uemon
質問者

お礼

terra5さん 回答感謝します。 > 64bit用にコンパイルするか、32bit用にコンパイルするかしかないように > 思いますが。 > ライブラリだけ32bitでは辻褄が合わないような気がします。 そうですか。64bit環境下で32bitアプリを動かすための互換ライブラリ のようなものがあるのかと勝手に思っていました。 > shmget,shmatはシステムコールでカーネルが64bitで動作していますから、 > 同時にshmat()しないなら可能でしょう。 > アドレス空間は4GBですから、通常のメモリ(ヒープ、スタック)等と合計 > のサイズが4GB以下の必要があります。 > また、分断化はされるでしょうから、厳密には4GBよりは多少小さいでしょう。 分かりました。 はい、「同時にshmat()しない」は大丈夫です。ある瞬間にマッピング するメモリ空間は常に少しです。 > それと、多分32bitだとカーネルも同じアドレス空間だったような気がす > るので、カーネルがいなくなる分アプリケーションのアドレス空間も広く > なってると思います。 こちらも分かりました。 どうも丁寧なご回答をいただきありがとうございました。

関連するQ&A

  • Linux 32Bitと64Bitのメモリーの関係

    Windowsでは32Bit版だとメモリーが3.5GBでしたか、最大でもそれくらいしか使用できないという制限がありましたが。 Linux は32Bitと64BitとではWindowsのように認識できるメモリーの容量に制限があるのですか。

  • 7 32bit→10 32bitを64bitに

    Windows7 32bitがインストールされていたノートパソコンを Windows10 32bitにアップグレードしました。 メモリが8GBなので、 Windows64bitにしたいと思っているのですが、 無償アップグレードのようなもので、 32bitから64bitにすることはできますか? CPUがあまり速くないパソコン( 64bitには対応しているMB CPUです) なので、新たにWindowsを購入するのであればあきらめようと思っています。 できる手段があるとすれば、 クリーンインストールなどはすぐできます。 よろしくお願いします

  • Win7 32bitを64bitへするにあたって

    今、Windows 7 32bit メモリ 4GB Core i 5 のデスクトップPCを使用しています。 64bitのほうが動作が軽いとのことで64Bitにしようと思っています。 そこでいろいろ調べたところ、いくつか疑問が上がったので質問させていただきます。 1 PCによっては64bitにすることで逆に動作が遅くなる可能もあるそうなんですが、そこのところはどうなのでしょうか? (その調べたサイトによると32bitに最適化されているマシンのため、64bitにすると重くなるそうです) 2 32bitから64bitにかえるためには、64BitのWindows7のOSを買ってきてクリーンインストールすればいいだけなのですか?ドライバがないと~~~などと書いてあったのでそこの部分が心配です。 3 32Bitはメモリが4GBまで認識すると聞きました。今現在の時点で4GBあるので64bitにしても認識するメモリの量は変わらなさそうなので64bitにしなくても動作の早さは変わらないのではないか?という疑問が浮かびました。 そこはどうなのでしょうか?やはり同じ4GBなので増設でもしない限りは動作は変わらないでしょうか?

  • RAMディスクに仮想メモリをおけば32bitでも・

    大容量のメモリを使うには64bitのOSを使う必要がありますよね。 32bitのOSでもRAMディスクにすることで、OS管理外のメモリを活かすことができます。 そこでふと思ったのですが、このRAMディスクに仮想メモリを置くと、32bitのOSでも実質大容量メモリを使えることになるのではないでしょうか? 32bitではアプリケーションが使えるのは2GBまでですけど、これを超えてしまった場合は仮想メモリにまわして補うんですよね? その仮想メモリ自体が元々メモリとして使われるはずのRAMなら、結局合わせたサイズのメモリを使ってるのと同じということにはなりませんか?

  • windows xp32bit 64bitのメモリ

    私がXPに4GBのメモリを入れたと友人に言ったら、 理論上、2GBしか読み込めないから、4GBは意味がないと説明されました。 それは”2の何の乗がなんちゃらで。。。。。”意味不明の説明だったのですが、 windows xp32bit 64bitで、使用できる最大のメモリがなぜ2GBなのか 説明していただけないでしょうか?

  • Windowsの32bitと64bitについて

    そろそろWindows7を買おうと思うのですが、32bitと64bitの詳しい違いがよくわかりません。 自分はかなりヘビーな(メモリ容量的に)ゲームをするので、メインメモリは8GBで、64bitにしようかなと考えています。 取り留めもない質問ですが、どなたか回答お願いいたします。

  • 32bitと64bitどちらを買えば・・・

    時期発売されるWindows7ですが、32bitと64bitのどちらを選べばいいのでしょうか? パソコンは去年の2月に発売されたMacBookPro17インチモデルで スペックはCore 2 Duo 2.5GHz、メモリ2GB、HDD 250GB、GeForce 8600M GT(512MB)です。 スノーレパードの方は64bitしかないので、こちらを選びますが、Windows7の方は64bitでも動くのでしょうか?

  • 32bitを64bitに出来ないのですか

    我が家のパソコンはwin10 HOME 32bitで動いています(エプソンAT992Eで買った時は、win7 PRO 32bit/RAM4GB HDD1TBでした) ところが最近、メモリ不足でエラーがよく出てきます 一番多いのは、デジカメ画像を取り込んで、そのまま(大きい画像のまま)、画像を加工したい時に起こります 取り込んで、例えば4000X3000をJtrimで400X300にして、余分な部分をカットすればOKの時もあります=ここからが質問です 32bitでは4GBが3.42GBしか使えないからだということも聞きました HDDの空きが問題とも聞きましたが900GB空いています それなら、32bitをやめて、64bitに入れ替えたら、どうなりますか 

  • 今なら32bitと64bitどっちを買うべき?

    PCの購入を考えているのですが、32bit機が良いか64bit機が良いか悩んでいます。 現状では32bitの方が良いと思っているのですが、メモリが実質32bitだと3GB強しか認識されない事などを考慮すると、もう32bitは限界に来ているように思います。そうしますと64bit時代は目前に来ていると思えるので、今から買うなら64bitにすべきかなとも思います。 やはり一度購入したら5年は使いたいと考えているのですが、今32bitを買って、すぐに64bit時代になったら目もあてられません。かと言って64bitですと、まだまだソフト等の対応状況が思わしくないのも確かです。 みなさまでしたらどのようにご決断しますか?参考意見をお聞かせ願いたいと思います。よろしくお願いします。

  • 32bitで使用可能メモリを3GBから増やしたい

    Windows7 32bitを利用しています。 4GBのメモリを積んでいますが3GBまでしか利用できません。 以前は3.4GBまで使用可能だったのですが、いつの間にか3GBまでになってしまいました。 3.4GBまで増やすことは可能でしょうか? OSを起動した段階で1.3~1.4GBを使っていますので、残り1.6GBくらいしか残っておらず BattleField3が厳しい状態です。 なんとか0.4GBを増やしたいのですが方法はあるのでしょうか? 64bitに変えろとかいうのはナシでお願いします。 ※構成 CPU:Core2Quad Q9550 マザボ:Asus p5B Deluxe メモリ:1GB * 4 OS:Windows7 Professional 32bit