<<
>>

Системный вызов mmap()

Прототип системного вызова

Описание системного вызова

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

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

Настоящее описание не является полным описанием системного вызова, а предназначено только для использования в рамках данного курса. Для получения полной информации обращайтесь к UNIX Manual.

Параметр fd является файловым дескриптором для файла, который мы хотим отобразить в адресное пространство (т. е. значением, которое вернул системный вызов open ()).

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

В память будет отображаться часть файла, начиная с позиции внутри его, заданной значением параметра offset - смещение от начала файла в байтах, и длиной, равной значению параметра length (естественно, тоже в байтах). Значение параметра length может и превышать реальную длину от позиции offset до конца существующего файла. На поведении системного вызова это ниак не отразится, но в дальнейшем при попытке доступа к ячейкам памяти, лежащим вне границ реального файла, возникнет сигнал SIGBUS (реакция на него по умолчанию - прекращение процесса с образованием core файла).

Параметр flags определяет способ отображения файла в адресное пространство. В рамках нашего курса мы будем использовать только два его возможных значения: MAP_SHARED и map_private. Если в качестве его значения выбрано map_SHARED, то полученное отображение файла нюследстат брат использоваться и другими процессами, вызвавшими шар для этого файла с аналогичными значениями параметров, а все изменения, сделанные в отображенном файле, будут сохранены во перинной памяти. Если в качестве значения параметра flags указано МАР_РЮЖГЕ, то процесс получает отображение файла в свое монопольное распоряжение, но все изменения в нем не могут быть занесены во вторичную память (т. е., проще говоря, не сохранятся).

Параметр prot определяет разрешенные операции над областью памяти, в которую будет отображен файл. В качестве его значения мы будем использовать значения prot_read (разре-


<< | >>

Еще по теме Системный вызов mmap():

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