https://habrahabr.ru/company/yandex/blog/250753/
Размеры страниц:
4 KБ
2 MБ (Huge Pages)
1 ГБ
(тут надо бы ссылку на спеку Intel какими битами каких регистров это включается)
Memory Zones
Они служат для поддержки специального железа, которое не может общаться по всему диапазону адресов.
ZONE_DMA – это 16 MБ первых адресов
ZONE_DMA32 – это 4 ГБ
ZONE_NORMAL — память выше 4-го гигабайта.
(тут хорошо бы объяснение, почему эти зоны потребовалось вводить как понятие операционной системы)
в разделе "память процесса" ничего не говорится про адресацию (она у всех процессов общая (как в DOS) или у каждого разная?). Мы-то знаем, что разная, но тогда нужны детали того, как при этом происходит отладка.
Недостаточно хорошо/детально описана общая память "shared memory". Через неё хотелось бы организовывать взаимодействие процессов и при этом не потерять в защите/доказуемости корректности работы ПО.
mmap() может создавать и незамапленные на диск области
https://habrahabr.ru/company/yandex/blog/231957/
Тут больше имён из исходников, но надо было добавлять гиперссылки на web-интерфейс к git
Ну и всё очень скомкано (нужно больше деталей)
Из комментариев:
Особенным является только «основной» стек выделенный при выполнении системного вызова exec.
После вызова функции clone() из pthreads новый стек просто выделяется mmap'ом и никуда не растёт.
Какой закажите — такой и будет. На большинстве архитектур — 2MB, но, скажем, на SPARC64 — 4MB.
Если хотите заводить массивы в 2 мегабайта — закажите перед созданием потока больше, вам дадут.
Отредактировано Лис (2017-07-28 07:06:32)