Вопросы об управлении памятью процесса

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

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

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

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

1 ответ

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

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

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

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

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

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

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