Однажды на Fediverse мне попался интересный вопрос о munmap()
:
Чем именно занимается munmap() в Linux если адрес установлен в 0? В Linux подобный вызов каким-то образом срабатывает, а вот во FreeBSD — нет. Полагаю, что всё дело — в различной семантике команд, но не могу найти никаких пояснений по поводу такого поведения munmap().
(Там было ещё это дополнение, а тут находится краткая версия ответа)
Когда я увидел этот вопрос, то я реально удивился тому, что подобный вызов munmap()
в Linux работоспособен, так как я ожидал, что он даст сбой на любом адресном пространстве, которое не входит в состав памяти, выделенной некоему процессу. Нулевая страница в Linux (да и в любой вменяемой системе), определённо, не входит в состав распределённой памяти. Поэтому предлагаю взглянуть на описание munmap()
из документации SUS, выдержку из которого я привожу ниже.
Читать полностью »