<<
>>

Системные вызовы управления памятью в Linux

Стандарт POSIX не определяет системные вызовы для управления памятью. Эту область посчитали слишком машинно зависимой, чтобы ее стандартизировать. Вместо этого просто сделали вид, что проблемы не существует, и заявили, что программы, которым требуется динамическое управление памятью, могут использовать библиотечную процедуру malloc (определенную стандартом ANSI C).
Таким образом, вопрос реализации процедуры malloc был вынесен за пределы стандарта POSIX. В некоторых кругах такой подход считают перекладыванием бремени решения проблемы на чужие плечи.

На практике в большинстве систем Linux есть системные вызовы для управления памятью. Наиболее распространенные системные вызовы перечислены в табл. 10.5. Системный вызов brk указывает размер сегмента данных, задавая адрес первого байта за его пределами. Если новое значение больше старого, то сегмент данных увеличивается, в противном случае он уменьшается.

Таблица 10.5. Некоторые системные вызовы для управления памятью.

При возникновении ошибки код возврата s равен -1; а и addr — адреса памяти; len — это длина; prot — управляет защитой; flags — различные биты; fd — дескриптор файла; offset — смещение в файле

Системные вызовы mmap и unmap управляют отображением файлов на адресное пространство памяти. Первый параметр addr системного вызова mmap указывает адрес, по которому будет отображаться файл (или его часть).

Он должен быть кратен размеру страницы. Если этот параметр равен 0, то операционная система определяет этот адрес сама и возвращает его в a. Второй параметр — len — задает количество отображаемых байтов. Он также должен быть кратен размеру страницы. Третий параметр — prot — задает режим защиты для отображаемого файла. Файл может быть помечен как доступный для чтения, записи, исполнения (или любой комбинацией этих трех битов). Четвертый параметр — flags — определяет, является отображаемый файл приватным или доступным для совместного использования, а также содержит параметр addr жесткое требование или это всего лишь подсказка. Пятый параметр — fd — представляет собой дескриптор отображаемого файла. Отображаться могут только открытые файлы. Наконец, параметр offset сообщает, с какого места должен отображаться файл. Файл может быть отображен начиная с границы страницы.

Второй системный вызов — unmap — отменяет отображение файла на память. Если отменяется отображение только части файла, то остальная часть файла продолжает отображаться на память.

10.4.3.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Системные вызовы управления памятью в Linux:

  1. Психологическая системность в управлении.
  2. Психологическая системность в управлении.
  3. I. 1. СИСТЕМНЫЙ ПОДХОД КАК ИНСТРУМЕНТ ДЛЯ ПОСТРОЕНИЯ СИСТЕМНЫХ ОПИСАНИЙ
  4. I. СИСТЕМНЫЕ ОПИСАНИЯ - ГЛАВНЫЙ РЕЗУЛЬТАТ СИСТЕМНОГО ПОДХОДА В ПСИХОЛОГИИ
  5. Психология личности целостна, системна (принцип целостности, системности).
  6. ВЫЗОВ ВРАЧА
  7. СПТ откликается на вызов обстоятельств
  8. Быстрый вызов желаемого
  9. Бросьте себе вызов
  10. ПРЕДСТАВЛЕНИЕ ПАМЯТИ
  11. Самоубийство как вызов обществу
  12. Статья 1040. Обращение взыскания на имущество, переданное в управление, по требованию кредитора установщика управления
  13. Гигиена памяти.
  14. укрепление памяти