私のシステムのcpuinfoファイルによると、私のシステムの各プロセッサは39ビットの物理アドレスサイズと48ビットの仮想アドレスサイズを持っています。ポインタと仮想メモリ
私のシステムは16GBのRAMを持っているので、39ビットの物理アドレスのサイズは39ビットが16GBのRAMをアドレス指定するのに十分であるため、私には意味があります。
しかし、48ビットの仮想アドレスサイズは私を混乱させます。私はいつも、ソースコードの観点から2^64バイトの仮想メモリをアドレス指定できるCプログラムを書くことができると信じていました(システム上のポインタはサイズ(void *)に応じて8バイト長です)。しかし、cpuinfoは2^48バイトの仮想メモリしか持っていないことを教えています。それで私のCプログラムは2^48バイトの仮想メモリだけを扱うことができますか?
まだ望ましい、そう...? –
私はcpuinfoの仮想アドレスのサイズと私のシステムが "名目上" 64ビットであることを知りたがっています。 – josh
高水準言語の使用法の1つは(たとえCが低水準でかなり低いにもかかわらず)、ハードウェアを抽象化することです。 Cではポインタがあります。それは "メモリ"を指しています。それは本当にあなたが知る必要があるすべてです。 –