Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Создание файлов, проецируемых в память




В общем случае, процессор ЭВМ не может работать непосредственно с содержимым файла до того, как он не будет прочитан в память. Если требуется просто прочитать файлы, а также модифицировать их, то помимо операции чтения данных из файла, должна быть выполнена операция записи модифицированных данных в файл. Поэтому стандартная процедура работы с дисковым файлом включает в себя следующие шаги:

1. Создание или открытие файла на диске;

2. Чтение требуемого участка файла в созданную заранее область памяти процесса;

3. Модификация прочитанных данных в программе процесса;

4. Запись модифицированных данных на прежнее место в дисковом файле.

Обычно, работа с файлом требует обращения не к одному участку внешней памяти, а к нескольким. Тогда перечисленные действия в программе должны выполняться многократно. Это ведет к снижению скорости выполнения программ. Более эффективно было бы чтение всего файла в ОП, поскольку в этом случае требуется только одна операция чтения в ОП в начале цикла обработки, и одна операция записи во внешнюю память в конце цикла. Однако такой подход возможен только для файлов относительно небольшого размера. Кроме того, в этом случае снижается надежность всей процедуры обработки, поскольку модифицированные данные записываются на диск только в конце сеанса обработки, и любой сбой в течение этого сеанса может привести к потере модифицированных данных.

В Windows существует способ работы с файлами, практически исключающий многократные физические операции чтения или записи в файл, которые должны выполняться средствами прикладной программы. Этот способ называется проецированием файла в память (FILE MAPPING). Он заключается в том, что конкретный файл включается в состав физической памяти процесса за счет создания системного объекта с названием «проекция файла».

Прим. Под ФП понимается совокупность участка ОП и участка файла внешней памяти.

Затем, в ВАП процесса выделяется участок (регион) достаточного размера, и часть физической памяти, включающая в себя объект типа «проекция файла», отображается на этот регион.

Отображение заключается в преобразовании адресов внешней памяти в виртуальные адреса региона. Дальнейшие операции с файлом заменяются операциями с его отображением, то есть проекцией файла в ВАП процесса. Для получения проекции файла и отображении её на регион ВАП используются соответствующие системные функции. В целом, схема проецирования файла в память заключается в следующем:

Основные этапы получения проекции файла в память включают:

1. Создание или открытие файла функциями CreateFile или OpenFile;

2. Создание в физической памяти системного объекта типа «проекция файла» с помощью системной функции CreateFileMapping;

3. Выделение в ВАП процесса региона и отображение на него созданной проекции с помощью функции MapViewOfFile;

4. Обращение по адресам региона, на который отображена проекция файла, с целью выполнения операций чтения и записи данных.

После проецирования файла в память, к нему возможны обращения как к обычной структуре данных типа массива, расположенной в ОП. В прикладной программе для этого не требуется выполнение файловых операций чтения или записи.

В действительности, файл, к содержимому которого осуществляется обращение, должен быть прочитан в память, но в данном случае, загрузку содержимого файла в память полностью осуществляют потоки ядра ОС, освобождая от этого программистов в прикладной программе.

Если размер файла таков, что он не помещается в память целиком, то система осуществляет последовательную загрузку тех участков файла, к которым в данный момент обращается программа.

В программе, в любой момент, файл, независимо от его размера, рассматривается как находящийся в ОП массив данных. Любая модификация записей спроецированного файла автоматически переносится во внешнюю дисковую память. Эта операция также выполняется средствами ОС, и прикладная программа в ней не участвует.





Поделиться с друзьями:


Дата добавления: 2016-03-25; Мы поможем в написании ваших работ!; просмотров: 824 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Самообман может довести до саморазрушения. © Неизвестно
==> читать все изречения...

2557 - | 2402 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.