Hacker News new | ask | show | jobs
by duaneb 4219 days ago
> Second, I wonder if it would make sense to jump straight to using mmap() instead of the classic brk()/sbrk().

Yes, it will. brk/sbrk are terrible ways to allocate anything but more stack. Use mmap instead, both for more control over the layout in memory, and for more portability.

1 comments

Perhaps you know: on Linux, how do mmap() and brk() differ as far as page initialization? Does brk() conceptually include the effects of MAP_POPULATE? Do both of them cause virtual to physical memory mapping at the time of the call?
I'm not sure as to the specifics, because brk is a strict subset of mmap; however, I would be surprised if it doesn't use the full VM substructure to allocate the mapping immediately.

I would amend my statement before to say that, if you're looking into memory allocation, conceptually, mmap is where everything happens these days. brk is kept for backwards compatibility.

On the systems I've seen, brk makes a lazy allocation, i.e. it doesn't allocate physical memory until you write to a page.