64bit mmap (Re: Rosetta)
河野真治 @ 琉球大学情報工学です。
In article <d89jfu$270q@utogw.gssm.otsuka.tsukuba.ac.jp>, kuno@gssm.otsuka.tsukuba.ac.jp writes
> そもそもmmapしただけで書いていない範囲はファイルとして保存され
> ないという風にできてるんでんでは?
そうなんだけど、最初に mmap(file,length,protocol,flag,fd,offset)
ってな感じで length を指定してしまいますよね。その length を
変えるのどうやるのかなってわけです。
munmap して、再mmap でもいいんだけど。munmap は msync するの
かな? 複数 mmap するのも嫌だなと思ったけど、それが現実的か?
> ファイルサイズの上限を設けていいのなら(普通設けるよね)、64ビッ
> トアドレスあればたいていの用事には足りるんでは。
> FreeBSDのman見たら2GBとかいう上限があるんですね。 久野
それは、そうなんですが... 複数開ける時に、どういうメモリマップ
にするんだろう?
2^0 2^16 2^32 2^32*1.5 2^64
|--======----|------------|--------------|----------|
|--======----|------------|-=======------|----------|
|--======----|-====-------|-=======------|----------|
|--======----|-====-------|-=======------|-====-----|
ってな感じか? まさかね....
やっぱり常識的なファイルの大きさで制限する方が普通だろうなぁ。
重なったときは、再mmapするということなんだろうな。だとすると、
やっぱり伸長するときは、munmap/mmap なんでしょうね。
---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735