On 2003.11.03 at 20:28:01 +0200, Sergei Olonichev wrote: > > > >А зачем вам больше? 32 бита вполне хватит для Ваших 50k. > > > Так в этом то и вопрос. Просто вызывать mmap на каждый блок (условно > 50k) - это, здается мне, ни чем не лучше чем вызывать fread (с точки > зрения скорости), а может еще и хуже.
Ну, во-первых, стоило бы протестировать. Все-таки минус одно копирование kernelspace -> userspace. Во-вторых, можно (если есть основания полагать, что следующие 50К будут в пределах осмысленного куска от предыдущих) делать mmap на, скажем, полгига, и запоминать смещение начала и конца. И делать unmap и другой map только если следующее чтение оказывается за пределами этого окна. Или, как вариант - держать два mmap-ленных окна - одно фиксированное, там где живут наиболее часто читаемые блоки, второе - там, где понадобилось прочесть блок за пределами этого окна.