LINUX.ORG.RU

История изменений

Исправление KivApple, (текущая версия) :

Я просто вёл один семестр системного программирования у французских студентов :-) Но они были сообразительнее в среднем.

Касательно mmap я знаю, что многие аллокаторы куски памяти больше какого-то порога округляют до размера страницы и напрямую запрашивают у ОС через mmap. Нет смысла искать гигабайтный блок в пуле. Соответственно, такой блок при освобождении будет освобожден через munmap и это хорошо, потому что чем быстрее вернётся такой огромный кусок памяти ОС, тем лучше.

А вот вероятность освобождения маленького блока таким образом мала, потому что это надо чтобы все блоки в этом куске пула освободились, а при использовании sbrk ситуация ещё более редкая, потому что такой пул может расти и уменьшаться только хвостом.

Но в любом случае гораздо выше сегфолта шанс наткнуться на какие-то структуры аллокатора. И этот шанс был ещё выше во времена малых объёмов ОЗУ, потому что хранить отдельно то что можно хранить в свободной памяти - очень расточительно. Поэтому я не верю, что хоть сколько-нибудь адекватные разработчики осознанно использовали память после free даже 30 лет назад.

Исправление KivApple, :

Я просто вёл один семестр системного программирования у французских студентов :-) Но они были сообразительнее в среднем.

Касательно mmap я знаю, что многие аллокаторы куски памяти больше какого-то порога округляют до размера страницы и напрямую запрашивают у ОС через mmap. Нет смысла искать гигабайтный блок в пуле. Соответственно, такой блок при освобождении будет освобожден через munmap и это хорошо, потому что чем быстрее вернётся такой огромный кусок памяти ОС, тем лучше.

А вот вероятность освобождения маленького блока таким образом мала, потому что это надо чтобы все блоки в этом куске пула освободились, а при использовании sbrk ситуация ещё более редкая.

Но в любом случае гораздо выше сегфолта шанс наткнуться на какие-то структуры аллокатора. И этот шанс был ещё выше во времена малых объёмов ОЗУ, потому что хранить отдельно то что можно хранить в свободной памяти - очень расточительно. Поэтому я не верю, что хоть сколько-нибудь адекватные разработчики осознанно использовали память после free даже 30 лет назад.

Исходная версия KivApple, :

Я просто вёл один семестр системного программирования у французских студентов :-)

Касательно mmap я знаю, что многие аллокаторы куски памяти больше какого-то порога округляют до размера страницы и напрямую запрашивают у ОС через mmap. Нет смысла искать гигабайтный блок в пуле. Соответственно, такой блок при освобождении будет освобожден через munmap и это хорошо, потому что чем быстрее вернётся такой огромный кусок памяти ОС, тем лучше.

А вот вероятность освобождения маленького блока таким образом мала, потому что это надо чтобы все блоки в этом куске пула освободились, а при использовании sbrk ситуация ещё более редкая.

Но в любом случае гораздо выше сегфолта шанс наткнуться на какие-то структуры аллокатора. И этот шанс был ещё выше во времена малых объёмов ОЗУ, потому что хранить отдельно то что можно хранить в свободной памяти - очень расточительно. Поэтому я не верю, что хоть сколько-нибудь адекватные разработчики осознанно использовали память после free даже 30 лет назад.