Знаете ли вы, что...
2014-10-13 23:35Стартовый адрес программы в большинстве современных 32-битных операционных систем (Windows, Linux, BSD) равен 0x0400000? Понятно, что не ноль: чтобы обращение по нулевому указателю давало ошибку. Но почему именно 4 мегабайта? Этому есть вполне логичное объяснение.
В 64-битных системах другой начальный адрес, а именно 0x100000000 (4 гигабайта).
В 64-битных системах другой начальный адрес, а именно 0x100000000 (4 гигабайта).

no subject
Date: 2014-10-14 07:09 (UTC)no subject
Date: 2014-10-14 07:20 (UTC)На других архитектурах, скажем MIPS, размер страниц может быть разный. При компиляции ядра Linux вы можете выбрать стандартные 4k, или побольше для эффективности, с шагом x4. Юзерные бинарники должны работать одинаково при любом размере страницы, поэтому логично выбрать начальный адрес по максимуму (в разумных пределах).
no subject
Date: 2014-10-14 14:51 (UTC)no subject
Date: 2014-10-14 07:40 (UTC)http://blogs.msdn.com/b/oldnewthing/archive/2014/10/03/10562176.aspx