Где находится отображение виртуальной памяти на внешний носитель
Обновлено: 24.11.2024
Память — один из самых важных ресурсов хоста. Чтобы рабочие нагрузки могли получить доступ к глобальной системной памяти, нам необходимо убедиться, что адреса виртуальной памяти сопоставляются с физическими адресами. Есть несколько компонентов, работающих вместе, чтобы выполнять эти переводы максимально эффективно. В этом сообщении блога будут рассмотрены основы преобразования адресов виртуальной памяти.
Переводы памяти
Физическое адресное пространство — это системная оперативная память, модули памяти внутри хостов ESXi, также называемые глобальной системной памятью. Говоря о виртуальной памяти, мы имеем в виду память, которая управляется операционной системой или гипервизором, таким как vSphere ESXi. Всякий раз, когда рабочие нагрузки обращаются к данным в памяти, системе необходимо искать адрес физической памяти, соответствующий виртуальному адресу. Это то, что мы называем трансляциями или сопоставлениями памяти.
Для сопоставления адресов виртуальной памяти с адресами физической памяти используются таблицы страниц. Таблица страниц состоит из множества записей таблицы страниц (PTE).
Одна страница памяти в PTE содержит структуры данных, состоящие из «слов» разного размера. Каждый тип слова содержит несколько байтов данных (WORD (16 бит/2 байта), DWORD (32 бита/4 байта) и QWORD (64 бит/8 байт)). Выполнение трансляции памяти для каждого возможного слова или страницы виртуальной памяти в адрес физической памяти не очень эффективно, поскольку потенциально это могут быть миллиарды PTE. Нам нужны PTE, чтобы найти физическое адресное пространство в глобальной памяти системы, поэтому обойти их невозможно.
Чтобы сделать преобразование памяти более эффективным, мы используем таблицы страниц для группировки фрагментов адресов памяти в одно сопоставление. Глядя на пример записи DWORD из 4 байтов; Таблица страниц занимает 4 килобайта вместо 4 байтов данных в одной записи страницы. Например, используя таблицу страниц, мы можем преобразовать виртуальное адресное пространство от 0 до 4095 и сказать, что оно находится в физическом адресном пространстве от 4096 до 8191. Теперь нам больше не нужно сопоставлять все PTE по отдельности, и мы будем намного эффективнее, используя страницу таблицы.
MMU и TLB
Таблицы страниц управляются блоком управления памятью (MMU). Все ссылки на физическую память проходят через MMU. MMU отвечает за преобразование адресов виртуальной памяти в адреса физической памяти. В vSphere ESXi виртуальный ЦП виртуальной машины будет вызывать функции MMU с помощью процесса Virtual Machine Monitor (VMM) или аппаратного MMU, поддерживаемого инструкцией по разгрузке ЦП конкретного поставщика.
Блок управления памятью (MMU) работает с резервным буфером трансляции (TLB) для сопоставления адресов виртуальной памяти с уровнем физической памяти. Таблица страниц всегда находится в физической памяти, и поиск страниц памяти непосредственно в физической памяти может быть дорогостоящим упражнением для MMU, поскольку это приводит к задержке. Вот где в игру вступает TLB.
Подробнее о TLB
TLB действует как кеш для MMU, который используется для сокращения времени, необходимого для доступа к физической памяти. TLB является частью MMU. В зависимости от производителя и модели ЦП может использоваться более одного TLB или даже несколько уровней TLB, например, с кэшем памяти, чтобы избежать промахов TLB и обеспечить минимально возможную задержку памяти.
По сути, TLB хранит недавние преобразования виртуальной памяти в физическую. Это кеш для таблиц страниц. Поскольку TLB является частью MMU, он находится внутри пакета ЦП. Вот почему TLB быстрее, чем основная память, в которой существуют таблицы страниц. Обычно время доступа к TLB составляет ~10 нс, тогда как время доступа к основной памяти составляет около 100 нс.
Теперь, когда мы рассмотрели основы преобразования памяти, давайте рассмотрим несколько примеров сценариев для TLB.
Попадание в TLB
Поступает адрес виртуальной памяти, который необходимо преобразовать в физический адрес. Первым шагом всегда является разделение виртуального адреса на номер виртуальной страницы и смещение страницы. Смещение состоит из последних битов виртуального адреса. Биты смещения не транслируются и передаются по адресу физической памяти. Смещение содержит биты, которые могут представлять все адреса памяти в таблице страниц.
Таким образом, смещение напрямую отображается на уровень физической памяти, а номер виртуальной страницы соответствует тегу, уже находящемуся в TLB. MMU теперь сразу знает, к какой странице физической памяти обращаться, без необходимости заглядывать в глобальную память.
В примере, представленном на диаграмме выше, номер виртуальной страницы находится в TLB и сразу преобразуется в номер физической страницы.
- Виртуальный адрес разбивается на номер виртуальной страницы и смещение страницы.
- Смещение страницы передается, так как оно не переведено.
- Номер виртуальной страницы просматривается в TLB в поисках тега с соответствующим номером.
- В TLB есть запись (попадание), означающая, что мы сразу можем преобразовать виртуальный адрес в физический.
Промах TLB
Что происходит, когда номер виртуальной страницы не найден в TLB, что также называется промахом TLB? TLB необходимо обратиться к глобальной памяти системы, чтобы понять, какой номер физической страницы используется. Обращение к физической памяти означает более высокую задержку по сравнению с обращением к TLB. Если TLB заполнен и происходит промах TLB, самая последняя запись TLB сбрасывается, и вместо нее помещается новая запись. В следующем примере номер виртуальной страницы не найден в TLB, и TLB необходимо просмотреть память, чтобы получить номер страницы.
- Виртуальный адрес разбивается на номер виртуальной страницы и смещение страницы.
- Смещение страницы передается, так как оно не переведено.
- Номер виртуальной страницы просматривается в TLB в поисках тега с соответствующим номером. В этом примере в TLB еще нет допустимой записи.
- TLB обращается к памяти, чтобы найти страницу номер 3 (из-за тега, полученного из номера виртуальной страницы). Страница номер 3 извлекается в память со значением 0x0006.
- Преобразование памяти выполнено, и теперь запись кэшируется в TLB.
Получить из хранилища
Промах TLB не идеален, но наихудший сценарий — это данные, которые находятся не в памяти, а на носителе (флеш-памяти или диске). Там, где мы говорим о наносекундах для извлечения данных из кеша или глобальной памяти, получение данных с носителя быстро займет миллисекунды или секунды в зависимости от используемого носителя.
- Виртуальный адрес разбивается на номер виртуальной страницы и смещение страницы.
- Смещение страницы передается, так как оно не переведено.
- Номер виртуальной страницы просматривается в TLB в поисках тега с соответствующим номером. В этом примере в TLB еще нет допустимой записи.
- TLB обращается к памяти, чтобы найти страницу с номером 0 (из-за тега, полученного из номера виртуальной страницы). Страница номер 0 извлекается из памяти, но обнаруживает, что данные находятся не в памяти, а в хранилище. Срабатывает ошибка страницы, потому что мы не можем транслировать страницы памяти для данных, которых нет в памяти. Нам нужно дождаться данных из хранилища.
Заключение
Мы рассмотрели только основы работы трансляции памяти. Информация, которую мы обсудили, должна дать вам общее представление о том, что происходит внутри вашей виртуальной машины и хостов ESXi, когда речь идет о доступе к памяти.
Понимание того, как MMU и TLB обрабатывают доступ к памяти, имеет основополагающее значение для функций vSphere, ориентированных на память, таких как vMotion. vMotion использует конструкции памяти, такие как PTE и TLB. Во время операции vMotion для PTE устанавливается доступ только для чтения, а TLB сбрасывается. Подробнее об этом в будущем сообщении в блоге. Оставайтесь с нами!
Дополнительные ресурсы для изучения
Нильс Хагурт
Виртуальная память – это область вторичной памяти компьютерной системы (например, жесткого диска или твердотельного накопителя), которая действует так, как если бы она была частью оперативной или основной памяти системы.
В идеале данные, необходимые для запуска приложений, хранятся в ОЗУ, откуда ЦП может быстро получить к ним доступ. Но при запуске больших приложений или при одновременном запуске многих приложений оперативная память системы может переполниться.
Чтобы обойти эту проблему, некоторые данные, хранящиеся в ОЗУ, которые активно не используются, можно временно переместить в виртуальную память (физически расположенную на жестком диске или другом устройстве хранения). Это освобождает место в ОЗУ, которое затем можно использовать для размещения данных, к которым система должна получить доступ в ближайшее время.
За счет обмена данными между ОЗУ и виртуальной памятью, когда они не нужны, и обратно из виртуальной памяти в ОЗУ, когда они нужны, система может продолжать бесперебойно работать с гораздо меньшим объемом физической памяти, чем в противном случае.
Виртуальная память позволяет системе запускать более крупные приложения или запускать больше приложений одновременно без нехватки оперативной памяти.В частности, система может работать так, как если бы ее общие ресурсы ОЗУ были равны объему физической ОЗУ плюс объем виртуальной ОЗУ.
Зачем нужна виртуальная память?
Виртуальная память была разработана, когда физическая оперативная память была очень дорогой, а стоимость оперативной памяти в пересчете на гигабайт по-прежнему выше, чем у носителей данных, таких как жесткие диски и твердотельные накопители. По этой причине гораздо дешевле использовать комбинацию физической ОЗУ и виртуальной памяти, чем оснащать компьютерную систему большим объемом ОЗУ.
Поскольку использование виртуальной памяти (или увеличение объема виртуальной памяти) не влечет за собой дополнительных финансовых затрат (поскольку при этом используется существующее дисковое пространство), оно позволяет компьютеру использовать больше памяти, чем физически доступно в системе.
Другим ключевым фактором использования виртуальной памяти является то, что все компьютерные системы имеют ограничение (продиктованное аппаратным и программным обеспечением) на объем физической оперативной памяти, которую можно установить. Использование виртуальной памяти позволяет системе продолжать работу за пределами физического объема ОЗУ.
Виртуальная память и физическая память
Поскольку оперативная память дороже виртуальной, может показаться, что при прочих равных условиях компьютеры должны быть оснащены как можно меньшим объемом оперативной памяти и как можно большим объемом виртуальной памяти.
Но на самом деле характеристики виртуальной памяти отличаются от характеристик физической памяти. Основное различие между виртуальной и физической памятью заключается в том, что ОЗУ намного быстрее виртуальной памяти.
Поэтому система с 2 ГБ физической ОЗУ и 2 ГБ виртуальной памяти не будет обеспечивать такую же производительность, как аналогичная система с 4 ГБ физической ОЗУ. Чтобы понять почему, необходимо понять, как работает виртуальная память.
Как работает виртуальная память?
Когда приложение (включая операционную систему) работает, оно сохраняет расположение программных потоков и других данных по виртуальному адресу, в то время как данные фактически хранятся по физическому адресу в ОЗУ. Если позже это пространство ОЗУ понадобится другому процессу более срочно, данные могут быть выгружены из ОЗУ в виртуальную память.
Ответственность за отслеживание всех этих данных при их обмене между физической и виртуальной памятью ложится на диспетчер памяти компьютера. Диспетчер памяти поддерживает таблицу, которая сопоставляет виртуальные адреса, используемые операционной системой и приложениями, с физическими адресами, в которых фактически хранятся данные. в правильное физическое местоположение.
Компьютер может запускать потоки и управлять данными только в ОЗУ, а не в виртуальной памяти. И для подкачки необходимых данных в ОЗУ требуется незначительное количество времени. Следовательно, использование виртуальной памяти связано с падением производительности.
Иными словами, система с 4 ГБ ОЗУ, как правило, обеспечивает более высокую производительность, чем система с 2 ГБ ОЗУ и 2 ГБ виртуальной памяти, из-за падения производительности, вызванного свопингом, и по этой причине говорят, что виртуальная память медленнее, чем оперативная память.
Одна потенциальная проблема с виртуальной памятью заключается в том, что если объем имеющейся оперативной памяти слишком мал по сравнению с объемом виртуальной памяти, система может в конечном итоге тратить большую часть ресурсов ЦП на обмен данными туда и обратно. Тем временем выполнение полезной работы почти останавливается — процесс, известный как пробуксовка.
Чтобы предотвратить перегрузку, обычно необходимо уменьшить количество одновременно запущенных приложений или просто увеличить объем оперативной памяти в системе.
Операционные системы, такие как большинство версий Windows, обычно рекомендуют пользователям не увеличивать объем виртуальной памяти более чем в 1,5 раза по сравнению с объемом физической ОЗУ. Таким образом, система с 4 ГБ ОЗУ должна иметь виртуальную память не более 6 ГБ.
Чтобы свести к минимуму падение производительности, вызванное переключением между физической и виртуальной памятью, лучше всего использовать самое быстрое устройство хранения данных, подключенное к системе, для размещения виртуальной памяти и размещения области хранения виртуальной памяти на отдельном разделе. р>
Виртуальная память может работать совместно с основной памятью компьютера, обеспечивая более быстрые и плавные операции.
Как увеличить виртуальную память в системе
Большинство операционных систем позволяют пользователям увеличивать виртуальную память со страницы конфигурации.
- В Windows пользователи также могут разрешить системе динамически управлять объемом виртуальной памяти.
- Аналогичным образом в Mac OS пользователи могут использовать панель настроек для выделения виртуальной памяти.
Типы виртуальной памяти: пейджинг и сегментация
Системная операционная система может управлять виртуальной памятью различными способами, и два наиболее распространенных подхода – разбиение по страницам и сегментация.
Страница виртуальной памяти
В системе, использующей подкачку, ОЗУ делится на несколько блоков, обычно размером 4 КБ, называемых страницами. Затем процессам выделяется ровно столько страниц, сколько необходимо для удовлетворения их требований к памяти. Это означает, что всегда будет теряться небольшой объем памяти, за исключением необычного случая, когда процессу требуется ровно целое число страниц.
Во время обычной работы страницы (т. е. блоки памяти размером 4 КБ) передаются между ОЗУ и файлом подкачки, представляющим виртуальную память.
Сегментация виртуальной памяти
Сегментация — это альтернативный подход к управлению памятью, при котором вместо страниц фиксированного размера процессам выделяются сегменты разной длины, точно соответствующие их требованиям. Это означает, что, в отличие от страничной системы, в сегменте память не тратится впустую.
Сегментация также позволяет разделить приложения на логически независимые адресные пространства, что упрощает их совместное использование и повышает безопасность.
Но проблема с сегментацией заключается в том, что поскольку каждый сегмент имеет разную длину, это может привести к "фрагментации" памяти. Это означает, что при выделении и освобождении сегментов могут остаться разбросанными небольшие фрагменты памяти, которые слишком малы, чтобы быть полезными.
По мере накопления этих небольших фрагментов может выделяться все меньше и меньше сегментов полезного размера. И если ОС начнет использовать эти маленькие сегменты, то придется отслеживать их огромное количество, и каждому процессу потребуется использовать много разных сегментов, что неэффективно и может снизить производительность.
Преимущества и недостатки виртуальной памяти
Несмотря на то, что оперативная память сейчас относительно недорога по сравнению с ее стоимостью, когда виртуальная память была впервые разработана, она по-прежнему чрезвычайно полезна и по-прежнему используется во многих, а может быть, и в большинстве компьютерных систем. Основная проблема с виртуальной памятью связана с производительностью.
Виртуальная память — это схема распределения памяти, в которой вторичная память может быть адресована так, как если бы она была частью основной памяти. Адреса, которые программа может использовать для ссылки на память, отличаются от адресов, которые система памяти использует для идентификации физических мест хранения, а сгенерированные программой адреса автоматически преобразуются в соответствующие машинные адреса.
Размер виртуального хранилища ограничен схемой адресации компьютерной системы, а объем доступной вторичной памяти не зависит от фактического количества мест основного хранилища.
- Все ссылки на память внутри процесса представляют собой логические адреса, которые динамически преобразуются в физические адреса во время выполнения. Это означает, что процесс может перемещаться в основную память и из нее таким образом, что он занимает разные места в основной памяти в разное время в ходе выполнения.
- Процесс может быть разбит на несколько частей, и эти части не должны постоянно находиться в основной памяти во время выполнения. Это позволяет сочетание динамического преобразования адресов во время выполнения и использования таблицы страниц или сегментов.
Если эти характеристики присутствуют, то нет необходимости, чтобы все страницы или сегменты присутствовали в основной памяти во время выполнения. Это означает, что необходимые страницы должны быть загружены в память всякий раз, когда это необходимо. Виртуальная память реализуется с использованием пейджинга по требованию или сегментации по требованию.
Пейджинг по запросу:
Процесс загрузки страницы в память по требованию (всякий раз, когда происходит сбой страницы) известен как пейджинг по запросу.
Процесс включает следующие этапы:
- Если ЦП пытается обратиться к странице, которая в данный момент недоступна в основной памяти, он генерирует прерывание, указывающее на ошибку доступа к памяти.
- ОС переводит прерванный процесс в состояние блокировки. Чтобы выполнение продолжилось, ОС должна загрузить требуемую страницу в память.
- ОС будет искать нужную страницу в логическом адресном пространстве.
- Требуемая страница будет перенесена из логического адресного пространства в физическое адресное пространство. Алгоритмы замены страницы используются для принятия решения о замене страницы в физическом адресном пространстве.
- Таблица страниц будет соответствующим образом обновлена.
- ЦП будет отправлен сигнал для продолжения выполнения программы, и он вернет процесс в состояние готовности.
Следовательно, всякий раз, когда происходит сбой страницы, операционная система выполняет эти шаги, и требуемая страница загружается в память.
- В основной памяти может храниться больше процессов: поскольку мы собираемся загружать только некоторые страницы любого конкретного процесса, остается место для большего количества процессов.Это приводит к более эффективному использованию процессора, поскольку более вероятно, что по крайней мере один из более многочисленных процессов будет находиться в состоянии готовности в любой конкретный момент времени.
- Процесс может быть больше, чем вся основная память: снимается одно из самых фундаментальных ограничений в программировании. Процесс, объем которого превышает основную память, может быть выполнен из-за подкачки по запросу. ОС сама загружает страницы процесса в основную память по мере необходимости.
- Это обеспечивает более высокий уровень многозадачности за счет использования меньшего объема доступной (основной) памяти для каждого процесса.
Время обслуживания ошибки страницы:
Время, необходимое для обслуживания ошибки страницы, называется временем обслуживания ошибки страницы. Время обслуживания ошибки страницы включает время, затраченное на выполнение всех шести вышеуказанных шагов.
Обмен:
Выключение процесса означает удаление всех его страниц из памяти или их пометку, чтобы они были удалены в ходе обычного процесса замены страниц. Приостановка процесса гарантирует, что он не сможет работать, пока он выгружен. Через некоторое время система переключает процесс обратно из вторичного хранилища в основную память. Когда процесс занят обменом страницами, такая ситуация называется перегрузкой.
Пробивка:
В любой момент времени в основной памяти находится лишь несколько страниц любого процесса, поэтому в памяти может храниться больше процессов. Кроме того, экономится время, поскольку неиспользуемые страницы не загружаются и не удаляются из памяти. Однако ОС должна хорошо разбираться в том, как она управляет этой схемой. В установившемся режиме практически вся основная память будет занята страницами процессов, так что процессор и ОС имеют прямой доступ к как можно большему количеству процессов. Таким образом, когда ОС загружает одну страницу, она должна выбрасывать другую. Если он выбрасывает страницу непосредственно перед тем, как ее использовать, то ему просто нужно будет получить эту страницу снова почти немедленно. Слишком много этого приводит к состоянию, называемому «Трэшинг». Система тратит большую часть своего времени на переключение страниц, а не на выполнение инструкций. Поэтому требуется хороший алгоритм замены страницы.
На приведенной диаграмме начальная степень мультипрограммирования до некоторой степени (лямбда), загрузка ЦП очень высока, а системные ресурсы используются на 100%. Но если мы еще больше увеличим степень мультипрограммирования, загрузка процессора резко упадет, и система будет тратить больше времени только на замену страниц, а время, затрачиваемое на выполнение процесса, увеличится. Такая ситуация в системе называется пробуксовкой.
-
Высокая степень мультипрограммирования: если количество процессов в памяти продолжает увеличиваться, количество кадров, выделенных каждому процессу, будет уменьшаться. Таким образом, для каждого процесса будет доступно меньше кадров. Из-за этого сбой страницы будет происходить чаще, и больше процессорного времени будет потрачено впустую только на загрузку и удаление страниц, а загрузка будет продолжать снижаться.
Например:
Пусть свободных кадров = 400
Случай 1: количество процессов = 100
Тогда каждый процесс получит 4 кадра.
Windows 10 использует файлы подкачки для хранения информации о простое, присутствующей в вашей оперативной памяти, на жестком диске, чтобы сохранить память для активных приложений и процессов. Эти файлы классифицируются как pagefile.sys на вашем основном диске. Виртуальную память можно переместить на отдельный диск, чтобы повысить производительность или разгрузить ввод-вывод с вашего диска.
Как переместить виртуальную память Windows 10 на отдельный диск
Чтобы переместить виртуальную память вашего ПК в Windows 10 на отдельный диск из-за нехватки места или по причинам производительности, выполните следующие действия:
- Откройте меню "Пуск" и введите дополнительные параметры системы. Чтобы продолжить, нажмите «Просмотреть дополнительные параметры системы».
- Чтобы продолжить, нажмите меню "Настройки" на вкладке "Дополнительно".
- Переключите вкладку на "Дополнительно", нажав на нее, как показано ниже.
- Снимите флажок Автоматически управлять размером файла подкачки для всех дисков. Эта функция включена по умолчанию в Windows 10, но для внесения изменений в виртуальную память на вашем ПК вам необходимо снять этот флажок.
- Вы можете отключить основной диск от хранения любых файлов подкачки и работы в качестве виртуальной памяти, но рекомендуется оставить основной диск в списке и добавить отдельный диск, так как это повысит производительность и продлит срок службы в случае каких-либо сбоев. Чтобы сохранить основной диск нетронутым, просто перейдите к шагу 7 после шага 4.Если вы по-прежнему хотите удалить основной диск, нажмите «Нет файла подкачки» и выберите «Установить».
- Система предложит и сообщит вам, что это приведет к отключению файла подкачки на вашем ПК и может не записывать сведения об ошибке. Нажмите Да, чтобы продолжить.
- Просто выберите предпочтительный диск из перечисленных вариантов, выберите параметр Размер, управляемый системой, и нажмите "Установить".
- Теперь вы можете видеть, что диск F: управляется системой как виртуальная память, а не как диск C:. Нажмите OK, чтобы продолжить.
- Нажмите «Применить» и выберите «ОК», чтобы завершить изменения. Теперь вам нужно перезагрузить компьютер, чтобы изменения вступили в силу.
Проверка виртуальной памяти на новом диске
Теперь вы можете просмотреть только что созданный файл pagefile.sys на вашем диске. Это означает, что выбранный вами диск успешно функционирует как виртуальная память вашего ПК.
Вы можете переместить виртуальную память вашего ПК в Windows 10 всего за несколько простых шагов. Это может указать дополнительный диск для использования в качестве виртуальной памяти, в то время как основной диск может функционировать как аварийный дамп или основной диск также может быть полностью отключен.
Файл с отображением памяти содержит содержимое файла в виртуальной памяти. Это сопоставление между файлом и областью памяти позволяет приложению, включая несколько процессов, изменять файл, читая и записывая непосредственно в память. Вы можете использовать управляемый код для доступа к файлам, отображаемым в памяти, так же, как собственные функции Windows обращаются к файлам, отображаемым в памяти, как описано в разделе Управление файлами, отображаемыми в памяти.
Существует два типа отображаемых в память файлов:
Сохраняемые файлы, отображенные в памяти
Сохраняемые файлы — это отображаемые в память файлы, связанные с исходным файлом на диске. Когда последний процесс закончил работу с файлом, данные сохраняются в исходный файл на диске. Эти отображаемые в память файлы подходят для работы с очень большими исходными файлами.
Не сохраняемые файлы с отображением в памяти
Несохраняемые файлы — это отображаемые в памяти файлы, не связанные с файлом на диске. Когда последний процесс завершает работу с файлом, данные теряются, а файл утилизируется сборщиком мусора. Эти файлы подходят для создания общей памяти для межпроцессного взаимодействия (IPC).
Процессы, представления и управление памятью
Файлы, отображаемые в память, могут совместно использоваться несколькими процессами. Процессы могут сопоставляться с одним и тем же отображаемым в память файлом, используя общее имя, которое назначается процессом, создавшим файл.
Для работы с отображенным в память файлом необходимо создать представление всего отображаемого в памяти файла или его части. Вы также можете создать несколько представлений для одной и той же части отображаемого в память файла, тем самым создавая параллельную память. Чтобы два представления оставались параллельными, они должны быть созданы из одного и того же файла с отображением в памяти.
Несколько представлений также могут потребоваться, если размер файла превышает размер логической памяти приложения, доступной для отображения памяти (2 ГБ на 32-разрядном компьютере).
Существует два типа представлений: представление потокового доступа и представление произвольного доступа. Используйте представления потокового доступа для последовательного доступа к файлу; это рекомендуется для несохраняемых файлов и IPC. Представления произвольного доступа предпочтительны для работы с постоянными файлами.
Доступ к файлам, отображаемым в памяти, осуществляется через диспетчер памяти операционной системы, поэтому файл автоматически разбивается на несколько страниц и используется по мере необходимости. Вам не нужно самостоятельно управлять памятью.
На следующем рисунке показано, как несколько процессов могут одновременно иметь несколько перекрывающихся представлений одного и того же файла, отображаемого в память.
На следующем изображении показаны несколько и перекрывающиеся представления файла с отображением в памяти:
Программирование с помощью файлов, отображенных в памяти
В следующей таблице приведены рекомендации по использованию отображаемых в памяти файловых объектов и их членов.
Читайте также: