Linux перегружает память - почему?

Читая об обнаруженной недавно уязвимости безопасности Apache, я узнал, что Linux использует любопытную стратегию выделения памяти: она всегда позволяет malloc чтобы добиться успеха и лениво выделяет память при первом использовании вместо этого. Если недостаточно памяти, он случайным образом выбирает процесс в некотором произвольном порядке (придавая больший вес процессам, которые непривилегированы, пытались выделить много памяти и т. Д.) И убивает его.

Мне кажется, что это не только несовместимое поведение (по крайней мере, в C; см. Linux оптимистичный malloc: всегда ли новый будет выбрасывать, когда не хватает памяти?), И лишает программы возможности изящно обрабатывать условия нехватки памяти сами, но это также не растягивает воображение, чтобы придумывать сценарии, в которых уничтожение произвольного процесса приводит к катастрофической потере или повреждению данных или к авариям в реальном мире. Почему этот дизайн вообще хорошая идея? Я что-то пропустил? Каковы были обоснования дизайна?

0 ответов

Другие вопросы по тегам