Основы операционных систем. Практикум



         

Понятие о файлах, отображаемых в память (memory mapped файлах). Системные вызовы mmap(), munmap() - часть 2


ul>
  • После этого с содержимым файла можно работать, как с содержимым обычной области памяти.
  • По окончании работы с содержимым файла, необходимо освободить дополнительно выделенную процессу область памяти, предварительно синхронизировав содержимое файла на диске с содержимым этой области (если, конечно, необходимо). Эти действия выполняет системный вызов munmap().
  • Системный вызов munmap

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

    #include <sys/types.h> #include <unistd.h> #include <sys/mman.h>

    int munmap (void *start, size_t length);

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

    Системный вызов munmap служит для прекращения отображения memory mapped файла в адресное пространство вычислительной системы. Если при системном вызове mmap() было задано значение параметра flags, равное MAP_SHARED, и в отображении файла была разрешена операция записи (в параметре prot использовалось значение PROT_WRITE), то munmap синхронизирует содержимое отображения с содержимым файла во вторичной памяти. После его выполнения области памяти, использовавшиеся для отображения файла, становятся недоступны текущему процессу.

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

    Параметр length определяет ее длину, и его значение должно совпадать со значением соответствующего параметра в системном вызове mmap().

    Возвращаемое значение

    При нормальном завершении системный вызов возвращает значение 0, при возникновении ошибки – значение -1.




    Содержание  Назад  Вперед