2015-09-24 7 views
1

Я создал файловую MMF в окнах. Затем я сделал представление 2gb и проверил, как быстро я могу получить доступ к данным, читая 4 байта где-то посередине. Это было довольно мгновенно, поэтому очевидно, что он не мог бы красным целым 2gb за несколько миллисекунд.Как работает mmf в окнах?

Мне было интересно, как это работает?

  1. Осталось ли мне что-то читать, а затем прочитать эту конкретную часть из файла?
  2. Загружает ли он себя в память в фоновом режиме, пока процесс выполняет другие действия?
  3. Если он сам не загружается в ОЗУ, он сохраняет части, которые я уже там краснул в виде кеша?
  4. Это волшебство?
+0

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

ответ

1

При сопоставлении вида создается сопоставление между вашим виртуальным адресным пространством и страницами на диске. Пока данных не читается.

Только когда вы пытаетесь получить доступ к некоторым данным, страницы (страницы), которые сопоставлены с этим адресом памяти, считываются в кеш (генерируется файл_файла, который заставляет ОС читать отображаемые страницы в памяти) ,

Таким образом, чтобы ответить на ваши очки:

  1. Да.
  2. Нет, но ОС может предварительно загружать некоторые данные в кеш диска (что не совсем так же, как «заполнение отображаемого вида»).
  3. Да, и они могут быть записаны на диск в фоновом режиме (и, возможно, даже освобождены при необходимости).
  4. Да! :)