You are on page 1of 3

Методичні вказівки

Лабораторна робота №15


Тема. Файли, що відображаються в пам'ять, в ОС Windows
Мета. Ознайомитися з відображенням файлів в оперативну пам’ять в ОС
Windows. Навчитися реалізовувати відображення файлів в оперативну
пам’ять.
Завдання.
1. Реалізувати відображення файлу в оперативну пам'ять.
2. Необхідно модифікувати лабораторну роботу №13 таким чином, щоб
всі результати роботи програми записувалися через відображення файлів в
оперативній пам’яті.
3. Виконати завдання, з використанням цього відображення.
4. Результати виконання роботи відобразити у звіті.
Інформація:
Файли, що відображаються в пам’ять - memory-mapped miles.
Це механізм, який дає змогу відображати файли на ділянку пам'яті. Таким
чином, при читанні даних з неї проводиться зчитування відповідних байт з
файлу або запис відповідних байт у файл. Його доцільно використовувати
при роботі з великим масивом даних, які потрібно записати в файл.
Коли ми звертаємося до пам'яті, в яку відображено файл, дані
завантажуються з диска в кеш (якщо їх там ще немає), потім кеш
відображається в адресному просторі програми. Дані не копіюються з кеша в
буфер, як при звичайному записі в файл, тобто використовується менше
ресурсів ПК і програма працює швидше.
Існує два типи файлів із відображенням пам’яті:
Постійні файли, відображені в пам'яті
Збережені файли – це файли, відображені в пам’яті, пов’язані з вихідним
файлом на диску. Коли останній процес завершує роботу з файлом, дані
зберігаються у вихідний файл на диску.
Непостійні файли, відображені в пам'яті
Незбережені файли – це файли, відображені в пам’яті, які не пов’язані з
файлом на диску. Коли останній процес завершує роботу з файлом, дані
втрачаються, а файл повертається під час збирання сміття. Ці файли
підходять для створення спільної пам'яті для міжпроцесних комунікацій.
Як працювати із файлами, що відображаються в пам'ять (постійні) (С#):
Підключити бібліотеку для роботи з файлами, що відображаються в пам’ять:
using System.IO.MemoryMappedFiles;
Для роботи з файлами підключаємо бібліотеку:
using System.IO;
Зробивши це, ми можемо створити постійний файл із відображенням пам’яті
за допомогою методу CreateFromFile():
MemoryMappedFile memoryMappedFile =
MemoryMappedFile.CreateFromFile(@"шлях\
назвафайлу.розширення");//наприклад @"D:\Demo.txt"
Тепер ми можемо створити засіб перегляду/запису для цього файлу:

using (MemoryMappedViewAccessor memoryMappedAccessor =


memoryMappedFile.CreateViewAccessor())

{ // Код для запису/зчитування з файлу

}
Засіб перегляду надає нам доступ для читання/запису до вмісту файлу. Для
цього використовуються методи Read() і Write().
Наприклад, ми могли б записати ціле число 100 у байтовій позиції 250,
використовуючи наступний фрагмент коду:

memoryMappedViewAccessor.Write(250, 100);
Можна створити метод для запису в файл. Наприклад:
public void toMemMappedFile(string filename,string s)//назва
файлу; поле, яке потрібно записати в файл
{
try//для уникнення виведення помилки при невдачі
відкриття файлу
{
var file =MemoryMappedFile.CreateFromFile(filename,
FileMode.OpenOrCreate, Name,200);//200-кількість байт
using (var streamwriter = new
StreamWriter(file.CreateViewStream()))
{
streamwriter.WriteLine(s);
streamwriter.Close();
} file.Dispose();//збуває нерозпоряджені ресурси
}
catch { };}
Якщо не вказувати шлях файлу, то він за замовчуванням збережеться в папці
Debug проекту.

You might also like