LINUX.ORG.RU

Memory overcommit в разных ОС


0

1

В Linux программа может получить больше виртуальной памяти, чем есть на самом деле. Т.е. больше, чем сумма RAM + swap. Это называется memory overcommit. Некоторые программы полагаются на это возможность.

Вопрос: в каких еще ОС есть такая возможность? Насколько можно полагаться на это с точки зрения переносимости программ?

Deleted

больше виртуальной памяти, чем есть на самом деле.

Виртуальной памяти на самом деле нет, на то она и виртуальная.

в каких еще ОС есть такая возможность? Насколько можно полагаться на это с точки зрения переносимости

В винде можно, но лучше на это не полагаться и всегда проверять то, что возвращает malloc.

Reset ★★★★★
()

Что значит, программа полагается на оверкомит?

mikki
()

>В Linux программа может получить больше виртуальной памяти, чем есть на самом деле

Не всегда ведь. Во-первых, есть настройки ядра. Во-вторых, среды виртуализации обычно не дают такой возможности.

Что значит, программа полагается на оверкомит?

Например, программа mmap'ит себе много гигабайтов памяти и ожидает, что реальное выделение произойдет при первом использовании страницы памяти.

dmitry_vk ★★★
()

BSD Free есть, ведет себя похоже на линукс, поведение настраивается. Open и Net имеют почти одинаковую VM (uvm) overcomit возможен через mmap и стэк.OOM-killer не вменяем (как и в старых линуксах) - пристрелят первого кто нарвется на page fault. Крутилок нет.

Solaris: overcommit возможен через стэк или mmap c MAP_NORESERVE, кого убьют не знаю. Крутилок нет.

AIX: вроди есть, но сам не сталкивался.

Переносимость: стандартов на VM нет - следовательно все это как говориться implementation defined behavor...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.