Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Создание файлов, проецируемых в памятьВ общем случае, процессор ЭВМ не может работать непосредственно с содержимым файла до того, как он не будет прочитан в память. Если требуется просто прочитать файлы, а также модифицировать их, то помимо операции чтения данных из файла, должна быть выполнена операция записи модифицированных данных в файл. Поэтому стандартная процедура работы с дисковым файлом включает в себя следующие шаги: 1. Создание или открытие файла на диске; 2. Чтение требуемого участка файла в созданную заранее область памяти процесса; 3. Модификация прочитанных данных в программе процесса; 4. Запись модифицированных данных на прежнее место в дисковом файле. Обычно, работа с файлом требует обращения не к одному участку внешней памяти, а к нескольким. Тогда перечисленные действия в программе должны выполняться многократно. Это ведет к снижению скорости выполнения программ. Более эффективно было бы чтение всего файла в ОП, поскольку в этом случае требуется только одна операция чтения в ОП в начале цикла обработки, и одна операция записи во внешнюю память в конце цикла. Однако такой подход возможен только для файлов относительно небольшого размера. Кроме того, в этом случае снижается надежность всей процедуры обработки, поскольку модифицированные данные записываются на диск только в конце сеанса обработки, и любой сбой в течение этого сеанса может привести к потере модифицированных данных. В Windows существует способ работы с файлами, практически исключающий многократные физические операции чтения или записи в файл, которые должны выполняться средствами прикладной программы. Этот способ называется проецированием файла в память (FILE MAPPING). Он заключается в том, что конкретный файл включается в состав физической памяти процесса за счет создания системного объекта с названием «проекция файла». Прим.Под ФП понимается совокупность участка ОП и участка файла внешней памяти. Затем, в ВАП процесса выделяется участок (регион) достаточного размера, и часть физической памяти, включающая в себя объект типа «проекция файла», отображается на этот регион. Отображение заключается в преобразовании адресов внешней памяти в виртуальные адреса региона. Дальнейшие операции с файлом заменяются операциями с его отображением, то есть проекцией файла в ВАП процесса. Для получения проекции файла и отображении её на регион ВАП используются соответствующие системные функции. В целом, схема проецирования файла в память заключается в следующем: Основные этапы получения проекции файла в память включают: 1. Создание или открытие файла функциями CreateFile или OpenFile; 2. Создание в физической памяти системного объекта типа «проекция файла» с помощью системной функции CreateFileMapping; 3. Выделение в ВАП процесса региона и отображение на него созданной проекции с помощью функции MapViewOfFile; 4. Обращение по адресам региона, на который отображена проекция файла, с целью выполнения операций чтения и записи данных. После проецирования файла в память, к нему возможны обращения как к обычной структуре данных типа массива, расположенной в ОП. В прикладной программе для этого не требуется выполнение файловых операций чтения или записи. В действительности, файл, к содержимому которого осуществляется обращение, должен быть прочитан в память, но в данном случае, загрузку содержимого файла в память полностью осуществляют потоки ядра ОС, освобождая от этого программистов в прикладной программе. Если размер файла таков, что он не помещается в память целиком, то система осуществляет последовательную загрузку тех участков файла, к которым в данный момент обращается программа. В программе, в любой момент, файл, независимо от его размера, рассматривается как находящийся в ОП массив данных. Любая модификация записей спроецированного файла автоматически переносится во внешнюю дисковую память. Эта операция также выполняется средствами ОС, и прикладная программа в ней не участвует.
Дата добавления: 2014-10-10; просмотров: 379; Нарушение авторских прав Мы поможем в написании ваших работ! |