FreeBSD 4G/4G address space split for i3862019年01月24日 15時01分36秒

4G/4G address space split for i386 は FreeBSD 12.0-RELEASE から入った変更。記憶が正しければ、リリースの準備が始まった夏ぐらいにコミットされたと思う。

以前の FreeBSD では i386 で利用可能なメモリサイズの 4GB は、3GB はユーザスペースとして割り当てられ、1GB はカーネルメモリとして分けられていた。つまり、最近は llvm 等を筆頭にユーザランドでメモリを大量に消費するプログラムが増え、またカーネル等も ZFS 等で必要なメモリが増えている。

これらに対処するために、ユーザスペースとカーネルメモリのページテーブルを二つに分けて各々 4GB づつ利用可能になった。

以前にアドレスは、ユーザスペースとカーネルメモリが異なっていたが、今後は同じアドレスになりうることもあると言うことだ。一般的なユーザは特に意識する必要があるものでもないが。ユーザスペースとカーネルメモリの通信は copyout システムコールを通して受け渡され、今後独立した空間になる。

今後の予定としては、PAE をの利用も、起動時に動的に処理できる様に変えていくらしい。以前は PAE では動かないドライバがあるとされたり、そのカーネル自体も実験的などとされていた時期もあったのを考えると、随分な進歩だ。この様子だと、i386 はまだまだサポートの対象として安泰そうな印象を受ける。