0

У меня мало вопросов о операционной системе. Я Google много, но не смог найти ответ. Кто-нибудь может мне помочь, пожалуйста.Вопросы по управлению памятью процесса

Q1. Сколько памяти доступно для пользовательской программы с помощью ядра, существует ли какой-либо предел?

Q2. Каков диапазон адресов, которые пользовательская программа может иметь при макс, что это определяет?

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

ответ

1

Q1. Сколько памяти доступно для пользовательской программы с помощью ядра, существует ли какой-либо предел?

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

Q2. Каков диапазон адресов, которые пользовательская программа может иметь при макс, что это определяет?

Разные. Это определяется как аппаратным обеспечением, так и конфигурацией таблиц страниц операционной системы. Некоторые типы процессоров назначают фиксированный диапазон пользовательских адресов в общем виртуальном адресном пространстве. Другие имеют один ряд логических адресов и позволяют ОС разделить его на пользовательские и системные адреса. Последний более гибкий. Первый позволяет разбивать страницы страниц.

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

Запросы на распределение не удаются. В случае malloc вы получите возвращаемый нулевой указатель. На системном уровне обслуживания вы получите код сбоя.

+0

для Linux ans1) он конфигурируется ans2) он также настраивается (обычно 0x00000000 - 0xbfffffff) и 3) если один процесс распределяет слишком много памяти, тогда другие процессы будут заменены на диск, в конечном счете обрушив всю систему и на конкретную у системы закончится память. –