2012-04-18 5 views
1

Я сейчас учился на своем OS финал. Учитель в некоторых работах кратко упоминает функцию mmap (карта памяти).Варианты использования mmap

Как я понимаю (исправьте меня, если я ошибаюсь), mmap используется для загрузки некоторых файлов из физической памяти в ОЗУ (после страницы по умолчанию). Проблема в том, что я не вижу никакой практической причины для этого другого, чтобы быстрее сделать время доступа к этому файлу.

Правильно ли я? Используется ли mmap для этого?

+0

Компьютеры могут использоваться для выполнения огромных количеств численных вычислений. Проблема в том, что я не вижу никакой практической причины для этого, кроме как ускорить вычисления. – pmr

+1

«от физической памяти до ОЗУ». В общем использовании «физическая память» и «ОЗУ» являются синонимами. –

ответ

5

«ММАП» имеет много целей:

  1. КАРТИРОВАНИЕ файл для более быстрого доступа на чтение/запись, безусловно, одна польза

  2. Общая память (например, для межпроцессного связи) является еще одним

  3. mmap также используется для отображения адресов портов ввода/вывода для связи устройства низкого уровня

+0

Спасибо вам за вход @ paulsm4. Наконец, у вас есть конкретный пример использования mmap (действительно просто из любопытства). – Erwald

3

ММАП используется для загрузки несколько файлов из физической памяти в ОЗУ (после страницы по умолчанию)

загрузить недостающие страницы. также изменения могут быть записаны на диск одинаково!

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

Спасибо вам за вход @ Karoly Horvath. Наконец, у вас есть конкретный пример использования mmap (действительно просто из любопытства). – Erwald

3

В дополнении к @ paulsm4 отвечает:

  1. ...
  2. ...
  3. ...
  4. Большинство современных malloc(3) реализаций используют mmap(2) управлять собственной памятью процесса.
  5. Dynamic link-loader ld.so(8) использует его для сопоставления разделяемых библиотек.
+0

Благодарим вас за ввод. – Erwald

1

mmap берет управление памятью из рук программиста в значительной степени и помещает его в руки ОС.

Речь идет о подкачке запросов с использованием подсистемы виртуальной памяти с диска в физическую память.

Чтобы посмотреть на 11111-й байт файла, вместо поиска и чтения вы можете mmap и использовать индекс массива. ОС будет хранить данные о масштабах в своем «буферном кеше» (на самом деле кеш-страница).

Вот пример: http://stromberg.dnsalias.org/~strombrg/pbmonherc.html

пример немного грязный, потому что она была написана в то время, когда Linux был MMAP поддержку в ее ядре, но библиотека C еще не имеет заглушки для вызова его. Но вы можете в значительной степени игнорировать mmap.c. В примере используется mmap для установки и включения пикселей с помощью монохромного адаптера дисплея.

Другой разумное использование для цветения фильтра: http://stromberg.dnsalias.org/~strombrg/drs-bloom-filter/

... но на 32 битных ОС, то максимальный размер области памяти mmap'd любопытное болит.

+0

Спасибо! Это отличные статьи. – Erwald

Смежные вопросы