Файл, відображений у пам'ять () — це сегмент віртуальної пам'яті, якому призначено пряме побайтне зіставлення з певною частиною файлу або ресурсом, подібним до файлу. Цим ресурсом зазвичай є файл, фізично присутній на диску, але це також може бути пристрій, об'єкт спільної пам'яті або інший ресурс, на який операційна система може посилатися через дескриптор файлу. Після встановлення такого зіставлення між файлом і простором пам'яті програми можуть працювати з відображеною частиною так, ніби це основна пам'ять.

Історія TOPS-20 PMAP Однією з ранніх ()Розробка розпочалася 1969 року, постачання почалося 1976 року реалізацій цього механізму був PMAP — системний виклик в операційній системі TOPS-20 для DEC-20, функція, яку використовувала компанія Software House у своїй системі керування базами даних System-1022.

SunOS 4 mmap SunOS 4грудень 1988 року представила Unix-функцію mmap, яка дозволила програмам «відображати файли в пам'ять».

Відображені в пам'ять файли зі змінним розміром у Windows (GMMF) Через два десятиліття після випуску PMAP у TOPS-20 Windows NT отримала файли зі змінним розміром, відображені в пам'ять (Growable Memory-Mapped Files, GMMF).

Оскільки «функція вимагає передати їй розмір», а зміна розміру файлу не підтримується належним чином, було розроблено API GMMF.Creating a shared memory block that can grow in size Використання GMMF вимагає оголосити максимальний розмір, до якого може зрости файл, але невикористаний простір не витрачається.

Переваги Перевагою відображення файлу в пам'ять є підвищення продуктивності операцій введення-виведення, особливо під час роботи з великими файлами. Для малих файлів файли, відображені в пам'ять, можуть призводити до марнування невикористаного простору, оскільки відображення пам'яті завжди вирівнюються за розміром сторінки, який здебільшого становить 4 КіБ. Тому для файлу розміром 5 КіБ буде виділено 8 КіБ, і таким чином 3 КіБ буде витрачено даремно. Доступ до файлів, відображених у пам'ять, швидший, ніж використання безпосередніх операцій читання та запису, з двох причин. По-перше, системний виклик на порядки повільніший за просту зміну локальної пам'яті програми. По-друге, у більшості операційних систем відображена область пам'яті фактично є кешем сторінок в ядрі (файловим кешем), а це означає, що копії в просторі користувача створювати не потрібно.

Деякі операції з файлами, відображеними в пам'ять, на рівні застосунку також виконуються краще, ніж відповідні операції з фізичними файлами. Застосунки можуть безпосередньо та на місці отримувати доступ до даних у файлі й оновлювати їх, замість переміщення від початку файлу або переписування всього відредагованого вмісту в тимчасове місце. Оскільки файл, відображений у пам'ять, внутрішньо обробляється сторінками, послідовний доступ до файлу (як, наприклад, у сховищах даних на основі плоских файлів або у файлах конфігурації) потребує доступу до диска лише під час переходу через межу нової сторінки, а більші частини файлу можуть записуватися на диск однією операцією.

Можливою перевагою файлів, відображених у пам'ять, є «ледаче завантаження» (), завдяки якому використовується невелика кількість оперативної пам'яті навіть для дуже великого файлу. Спроба завантажити весь вміст файлу, який значно перевищує доступний обсяг пам'яті, може спричинити сильне надмірне переміщення сторінок (), оскільки операційна система одночасно читає дані з диска в пам'ять і записує сторінки з пам'яті назад на диск. Відображення в пам'ять може не лише повністю обійти файл підкачки, а й дозволити завантажувати менші частини розміром зі сторінку в міру редагування даних, подібно до сторінкової організації за запитом, яка використовується для програм.

Процес відображення пам'яті обробляється менеджером віртуальної пам'яті, який є тією самою підсистемою, що відповідає за роботу з файлом підкачки. Файли, відображені в пам'ять, завантажуються в пам'ять по одній цілій сторінці за раз. Розмір сторінки вибирається операційною системою для забезпечення максимальної продуктивності. Оскільки керування файлом підкачки є одним із найкритичніших елементів системи віртуальної пам'яті, завантаження частин файлу розміром зі сторінку у фізичну пам'ять зазвичай є дуже добре оптимізованою системною функцією., "What Do Memory-Mapped Files Have to Offer?".

Типи Є 2 типи відображення в пам'ять: пов'язані з файлом на диску; не пов'язані з файлом на диску, коли останній процес закінчує роботу з відображенням — дані втрачаються. Це використовується для взаємодії між процесами.

Використання Найбільш вживаним використанням, є відображення в пам'ять файла застосунку та всіх його модулів при його запуску. Сегменти файлу промарковані «лише для читання», завантажуються в пам'ять лише в одному екземплярі і є спільними для всіх користувачів. Іншим вживаним застосуванням є використання відображення тимчасового файла в пам'ять для використання його як спільної пам'яті.

Примітки