アカウント名:
パスワード:
OSは32ビットで充分…つーかむしろ64ビットにしたら遅くなると思うんだが…。
実際にスマホなんぞ32ビットの奴が幾らでも継続販売されているだろうに。
それは、実際のメモリサイズ
64ビットOSという場合は仮想メモリのアドレスサイズなので、別のこと
動画など、数GBのファイルを扱うと64ビットOSのが楽
ファイルが8GBあったら、そのまま8GBアロケートするの?フツーにシークすりゃいいじゃん。つーかWindowsでも、8あたりから「メインメモリ4G未満なのに64ビットOSをプリインしたマシン」などというものが出てきて、そんなことしたらかえって遅くなると疑問に思っていたのだが。
今時のOSは、「メモリマップドファイル」というしくみがあるんですよ。(ていうか、汎用機などの世界では昔から「単一レベル記憶」という名のありふれた技術ですが、便利だからWindowsだのLinuxだのでも使えるようにしたけど、互換性のため従来のファイルIOも使えるって感じ)
メモリマップドファイルでは、ファイルが8GBあるなら、いきなりそのファイルを丸ごと「8GBのメモリ空間に割り当てる」の。でも、その段階では論理的な空間だけで物理的なメモリは割り当てない。実際にアクセスした段階で、ページフォルトを検出してメモリを割り当ててファイルを読み込み。
いちいち「シーク」なんてしなくてもいいからユーザープログラムはシンプルになるし、システム的にも、無駄なメモリコピーが減るので処理が高速になります。(通常のファイルIOだと、カーネル空間でファイルを読み込んだあと、ユーザー空間のメモリへのコピーが必要になりますが、メモリマップドファイルなら、スワップと同じしくみで、カーネルから直接ファイル内容をマップされたメモリに読み込むことができます)
ていうか、巨大なファイルにランダムアクセスするプログラムを組んでいたら、ファイルIOだと「メモリに読み込み済ならそのメモリから読み取る。読み込み済データが無ければシークしてリード」というメモリ管理が必要になっちゃうわけで、それに比べればメモリマップドファイルは非常に強力で、「フツーにシークすりゃいいじゃん。」なんてとんだ戯れ言ですね。
そういうのがあることは知ってますが、Windowsではそれを使うとすげー遅くなると聞いてるんですが…。
> つーかWindowsでも、8あたりから「メインメモリ4G未満なのに64ビットOSをプリインしたマシン」などというものが出てきて、そりゃ順序が逆そもそもWindows 7の時点で個人、法人向け市場は64bit版Windowsに切り替えが始まってて、Windows 8が出るころにはほとんど64bit版Windowsを載せたPCになってたその中に4GBしかメモリを積んでないゴミみたいなPCがあったってだけ
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson
4GBメモリで充分なら (スコア:0)
OSは32ビットで充分…つーかむしろ64ビットにしたら遅くなると思うんだが…。
Re: (スコア:0)
実際にスマホなんぞ32ビットの奴が幾らでも継続販売されているだろうに。
Re: (スコア:0)
それは、実際のメモリサイズ
64ビットOSという場合は仮想メモリのアドレスサイズなので、別のこと
動画など、数GBのファイルを扱うと64ビットOSのが楽
Re: (スコア:0)
ファイルが8GBあったら、そのまま8GBアロケートするの?
フツーにシークすりゃいいじゃん。
つーかWindowsでも、8あたりから「メインメモリ4G未満なのに64ビットOSをプリインしたマシン」などというものが出てきて、そんなことしたらかえって遅くなると疑問に思っていたのだが。
Re:4GBメモリで充分なら (スコア:1)
今時のOSは、「メモリマップドファイル」というしくみがあるんですよ。
(ていうか、汎用機などの世界では昔から「単一レベル記憶」という名のありふれた技術ですが、便利だからWindowsだのLinuxだのでも使えるようにしたけど、互換性のため従来のファイルIOも使えるって感じ)
メモリマップドファイルでは、ファイルが8GBあるなら、いきなりそのファイルを丸ごと「8GBのメモリ空間に割り当てる」の。でも、その段階では論理的な空間だけで物理的なメモリは割り当てない。
実際にアクセスした段階で、ページフォルトを検出してメモリを割り当ててファイルを読み込み。
いちいち「シーク」なんてしなくてもいいからユーザープログラムはシンプルになるし、システム的にも、無駄なメモリコピーが減るので処理が高速になります。
(通常のファイルIOだと、カーネル空間でファイルを読み込んだあと、ユーザー空間のメモリへのコピーが必要になりますが、メモリマップドファイルなら、スワップと同じしくみで、カーネルから直接ファイル内容をマップされたメモリに読み込むことができます)
ていうか、巨大なファイルにランダムアクセスするプログラムを組んでいたら、ファイルIOだと「メモリに読み込み済ならそのメモリから読み取る。読み込み済データが無ければシークしてリード」というメモリ管理が必要になっちゃうわけで、
それに比べればメモリマップドファイルは非常に強力で、「フツーにシークすりゃいいじゃん。」なんてとんだ戯れ言ですね。
Re: (スコア:0)
そういうのがあることは知ってますが、Windowsではそれを使うとすげー遅くなると聞いてるんですが…。
Re: (スコア:0)
> つーかWindowsでも、8あたりから「メインメモリ4G未満なのに64ビットOSをプリインしたマシン」などというものが出てきて、
そりゃ順序が逆
そもそもWindows 7の時点で個人、法人向け市場は64bit版Windowsに切り替えが始まってて、
Windows 8が出るころにはほとんど64bit版Windowsを載せたPCになってた
その中に4GBしかメモリを積んでないゴミみたいなPCがあったってだけ