русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Файлы проецируемые в память (ФПВП).


Дата добавления: 2013-12-23; просмотров: 1205; Нарушение авторских прав


Создание дополнительных куч для локализации доступа.

Локальный доступ.

Создание дополнительных куч для эффективного управления памятью.

 

А3
А5
А4 х
А6
В5
В1
А2 х
В2
В3
А1

 

Имеем полностью заполненную кучу, причём каждая структура А – 24 байта, а В – 32 байта. Затем в куче освобождаются элементы А4 и А2. Общая свободная память в куче равна 48 байт. Если требуется теперь элемент списка В, то эта операция закончится неудачно из-за фрагментации памяти. Если бы в куче располагались элементы одного раздела, то удаление первого элемента позволило бы разместить элемент второго.

 

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

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

 

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



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

1. Загрузки и исполнения ехе и dll файлов. Это позволяет экономить на размере страничного файла и на времени, необходимом ОС для подготовки приложения к исполнению.

2. Для доступа к файлу данных, размещённых на диске. Это позволяет обойтись без операций файлового ввода вывода и без предварительной буферизации его содержимого.

3. Для совместного доступа к данным, принадлежащим нескольким процессам.

Рассмотрим механизм проецирования файлов.

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

 
 

 

 


//////////// PDB

 
 


 

CreateFile(…). Используется как для создания новых, так и для открытия существующих файлов. Результатом работы является дескриптор файла.

 

таблица дескрипторов база данных файла

    Виртуальный адрес объекта
0

.

.

.

5

 
 


указатель на объект ядра

 
 

 


Например, 5.

Чтобы получить реальный адрес, надо побитно обработать виртуальный адрес с помощью оператора XOR.

В результате выполнения первого пункта мы будем знать куда обращаться.

2. Создание объекта ядра проецируемый файл, чтобы сообщить системе размер файла и способ доступа к нему.

CreateFile(…)

 

CreateFileMapping(…) – создания объекта ядра проецируемый файл. Результатом выполнения является дескриптор объекта ядра проецируемый файл.

3. Выделение региона адресного пространства процесса и проецирование на этот регион файла. Другими словами выделение физической памяти региону.

MapViewOfFile(…). Входными данными для этой функции является дескриптор объекта ядра проецируемый файл, полученный в пункте 2. Результатом выполнения этой функции является витуальный адрес региона.

4. p^[0]:=’a’;

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

5. Сообщить системе об отмене проецирования на адресное пространство процесса объекта ядра проецируемый файл. Выполняется это с помощью функции UnMapViewOfFile(…). Результатом является адрес региона адресного пространства, на который спроецирован файл, то есть адрес, полученный в пункте 3.

6. Закрыть объект ядра файл проецируемый в память.

CloseHandle(…). Параметром является дескриптор в пункте 2.

7. Закрыть объект ядра файл.

CloseHandle(…).

В случае, если не выпонены 6 и 7 в системной куче kernel32 будет содержаться информация о несуществующих объектах.

 



<== предыдущая лекция | следующая лекция ==>
Дополнительные кучи Win32 процесса. | Иерархия функций работы с памятью.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.