0

この領域は動的にロードされるライブラリのようにファイルをマップするため、これを考慮してください。理想的には大きくなるはずです。これは、RLIMIT_STACK とヒープ開始の間の mmap 領域を開始することで実装できます。この場合、どのような問題が発生しますか。

それが成長した場合、新しいメモリマップ領域はどのように作成されますか。abc.so のコードを仮想アドレス空間にマップしたい場合、sizeof(abc.so) 空間を下方向に作成し、この領域の下部からファイルをマップする必要があります。これはどのように機能しますか?

4

1 に答える 1

1

アドレスを増やすという意味で、図の「上」と「上」を混同していないと思いますか?ダイアグラムの上部に低いアドレスがあることに注意してください[編集:いいえ、実際には下部に低いアドレスがあります、私の悪い]。

マップされた領域は、より低いアドレスに向かって大きくなります。なぜあなたはそれが他の方向に成長するべきだと思いますか?マップされたファイルとヒープがアドレス空間の反対方向から始まり、互いに向かって成長する場合、領域が衝突する前にアドレス空間の使用率を最大化します。

ファイルをマップするときは、ファイルによってバックアップされる連続した範囲のアドレスをマップするだけです(低いアドレスから高いアドレスまで、これは予想どおりです)。ページにアクセスすると、ページフォールトが発生し、ファイルの内容がメモリページフレームにコピーされます。

于 2009-11-30T13:15:37.083 に答える