Шрифт:
Таблица 14.1. Флаги областей VMA
| Флаг | Влияние на область VMA и на ее страницы памяти |
|---|---|
VM_READ | Из страниц памяти можно считывать информацию |
VM_WRITE | В страницы памяти можно записывать информацию |
VM_EXEC | Можно выполнять код, хранящийся в страницах памяти |
VM_SHARED | Страницы памяти являются совместно используемыми |
VM_MAYREAD | Можно устанавливать флаг VM_READ |
VM_MAYWRITE | Можно устанавливать флаг VM_WRITE |
VM_MAYEXEC | Можно устанавливать флаг VM_EXEC |
VM_MAYSHARE | Можно устанавливать флаг VM_SHARED |
VM_GROWSDOWN | Область памяти может расширяться "вниз" |
VM_GROWSUP | Область памяти может расширяться "вверх" |
VM_SHM | Область используется для разделяемой (совместно используемой) памяти |
VM_DENYWRITE | В область отображается файл, в который нельзя выполнять запись |
VM_EXECUTABLE | В область отображается выполняемый файл |
VM_LOCKED | Страницы памяти в области являются заблокированными |
VM_IQ | В область памяти отображается пространство ввода-вывода аппаратного устройства |
VM_SEQ_READ | К страницам памяти, вероятнее всего, осуществляется последовательный доступ |
VM_RAND_READ | К страницам памяти, вероятнее всего, осуществляется случайный доступ |
VM_DONTCOPY | Область памяти не должна копироваться при вызове fork |
VM_DONTEXPAND | Область памяти не может быть увеличена с помощью вызова remap |
VM_RESERVED | Область памяти не должна откачиваться на диск |
VM_ACCOUNT | Область памяти является объектом, по которому выполняется учет ресурсов |
VM_HUGETLB | В области памяти используются гигантские ( hugetlb ) страницы памяти |
VM_NONLINEAR | Область памяти содержит нелинейное отображение |
Рассмотрим подробнее назначение наиболее интересных и важных флагов. Флаги
Флаг
Флаг
Флаг
Операции с областями VMA
Поле
Таблица операций представлена с помощью структуры
Рассмотрим каждый метод в отдельности.
•
Эта функция вызывается, когда соответствующая область памяти добавляется в адресное пространство.
•
Эта функция вызывается, когда соответствующая область памяти удаляется из адресного пространства.
•
Эта функция вызывается обработчиком прерывания из-за отсутствия страницы (page fault), когда производится доступ к странице, которая отсутствует в физической памяти.
•
Эта функция вызывается из системного вызова
Списки и деревья областей памяти
Как уже рассказывалось, к областям памяти осуществляется доступ с помощью двух структур данных дескриптора памяти: полей