Что делать, когда память заполняется :Удаление одной страницы или уничтожение всего процесса?

(echo 'test'; sleep 1) | netcat server 7 

Это удерживает вход открытым в течение некоторого времени для задержки окончания netcat.

0
30.06.2020, 22:43
3 ответа

Оба варианта используются в зависимости от обстоятельств.

Когда ядру необходимо выделить страницы, а доступных нет (или достигнуты водяные знаки ), оно попытается восстановить страницы из неактивных списков (ищет «Неактивно» в /proc/meminfo). Восстановление страницы там не обязательно включает обмен:

  • не -грязные, файловые -резервные страницы будут удалены (они могут быть восстановлены из резервного хранилища );
  • грязные, файловые -резервные страницы будут записаны в резервное хранилище и удалены;
  • только вытесняемые страницы без собственного резервного хранилища будут включать своп.

Убийца OOM вмешивается только тогда, когда вышеперечисленного недостаточно; он выбирает «наихудший» процесс (на основе ряда критериев )и уничтожает его.

0
18.03.2021, 23:23

Страницы будут подкачиваться до тех пор, пока есть место подкачки. Они возвращаются через прерывания Page Fault.

Если места подкачки нет, раздел ядра создается как процесс, «убийца OOM -», который убивает другие процессы для освобождения памяти.

0
18.03.2021, 23:23

Вы можете найти идеальный ответ от @StephenKitt, который является официально принятым ответом. Но для таких же студентов, как я, которым еще многое предстоит узнать, чтобы понять это на 100%, я хочу сделать это упрощенное приближение ответа на вопрос, основанное на ответе Стивена Китта:

если у нас недостаточно места в оперативной памяти, будет выбрана вытесняемая страница, и эта страница может быть любого из этих типов:

-Страница с не -грязным файлом -. Если мы в этом случае, то страница может быть удалена из памяти (и не скопирована в область подкачки!! ).

-Страница с резервной копией грязного файла -. Если мы в этом случае, то страница может быть удалена из памяти, но не скопирована в область подкачки!! (и его содержимое скопировано в его файл -на резервное место ).

-Нефайловая -резервная страница (независимо от того, грязная она или нет ). Если мы находимся в этом случае, страница должна быть скопирована в область подкачки. Но, если в области подкачки недостаточно места, убийце OOM приходится убивать весь процесс (или несколько из них ).

0
18.03.2021, 23:23

Теги

Похожие вопросы