ГЛАВА 5 Управление памятью, отображение файлов и библиотеки DLL

ГЛАВА 5

Управление памятью, отображение файлов и библиотеки DLL

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

В Windows предусмотрены гибкие механизмы управления динамической памятью программы. Кроме того, Windows предоставляет средства отображения файлов, которые позволяют ассоциировать файл непосредственно с виртуальным адресным пространством процесса, благодаря чему ОС может управлять любыми перемещениями данных между файлом и памятью, так что программисту вообще не приходится иметь дело с функциями ReadFile, WriteFile, SetFilePointer и другими функциями ввода/вывода.

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

Важным специальным случаем отображения файлов и разделения памяти являются динамически компонуемые библиотеки (dynamic linked libraries, DLL), обеспечивающие возможность отображения файлов (обычно, когда они используются только для чтения) на адресное пространство процесса для их выполнения.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

ГЛABA 7 Управление памятью

Из книги Внутреннее устройство Microsoft Windows (гл. 5-7) автора Руссинович Марк

ГЛABA 7 Управление памятью B этой главе вы узнаете, как реализована виртуальная память в Microsoft Windows и как осуществляется управление той частью виртуальной памяти, которая находится в физической. Мы также опишем внутреннюю структуру диспетчера памяти и его компоненты, в том


ГЛABA 10  Управление внешней памятью

Из книги Внутреннее устройство Microsoft Windows (гл. 8-11) автора Руссинович Марк

ГЛABA 10  Управление внешней памятью Термин внешняя память (storage) относится к носителям, применяемым в самых разнообразных устройствах, в том числе к магнитным лентам, оптическим дискам, гибким дискам, локальным жестким дискам и сети устройств хранения данных (storage area networks,


18.1.3. Управление памятью

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

18.1.3. Управление памятью Управление памятью осуществляется с помощью параметра mem: mem=Определяет объем памяти, установленной в компьютере.Например: mem=16384K или mem=16M.Иногда нужно указать объем ОЗУ, отличный от того, который имеется на самом деле. Например, у вас чипсет Intel 810 с


2.2.3.1 Управление дисковой памятью

Из книги Руководство администратора баз данных Informix. автора Кустов Виктор

2.2.3.1 Управление дисковой памятью INFORMIX-OnLine DS поддерживает как собственный механизм управления дисковой памятью, так и управление средствами файловой системы ОС UNIX. Преимущества собственного механизма управления дисковой памятью: Снятие ограничений операционной


Шаг 18 - Управление памятью.

Из книги Идиомы и стили С++ автора Makhmutov Albert

Шаг 18 - Управление памятью. Больше нет возможности обходить эту тему. Это слишком важно. Долго не хотел браться за нее, но она сама взялась за меня.В управлении памятью одна из самых больших проблем (для меня) состоит в том,что у авторов книг по C++ в этом месте случается как бы


Шаг 19 - Управление памятью. Продолжение 1.

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Шаг 19 - Управление памятью. Продолжение 1. Бог: "Я стер всякую жизнь. Впочем, я ничего не уничтожил. Я просто воссоединил в Себе частицы Себя. У меня на планете было множество типов с безумными глазами, которые болтали насчет слияния со Мной. Вот они и слились." Кармоди: "Им это


Управление памятью (memory management) и сборка мусора (garbage collection)

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Управление памятью (memory management) и сборка мусора (garbage collection) Может показаться, что этот критерий метода и языка должен принадлежать к следующей категории - реализации и среде. На самом деле он принадлежит к обеим категориям. Важнейшие требования предъявляются к языку,


Лекция 9. Управление памятью

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Лекция 9. Управление памятью Честно говоря, было бы неплохо забыть про память. Программы создавали бы объекты по мере надобности. Неиспользованные объекты исчезали бы в небытие, а необходимые медленно передвигались бы вверх. Этот процесс подобен движению по служебной


Управление памятью связного списка

Из книги Linux программирование в примерах автора Роббинс Арнольд

Управление памятью связного списка Приведем пример подхода на уровне компонентов. Рассмотрим класс LINKED_LIST, описывающий список, состоящий из заголовка (header) и набора связанных ячеек, являющихся экземплярами класса LINKABLE. Модель размещения и удаления для связного списка


Автоматическое управление памятью

Из книги Операционная система UNIX автора Робачевский Андрей М.

Автоматическое управление памятью Ни один из рассмотренных подходов не является полностью удовлетворительным. Общее решение проблемы управления памятью предполагает серьезную работу на уровне реализации


Управление памятью кучи

Из книги Разработка ядра Linux автора Лав Роберт

Управление памятью кучи Для получения блока памяти из кучи следует указать дескриптор области памяти кучи, размер блока и некоторые флаги.  LPVOID НеарАllос(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes) Возвращаемое значение: в случае успешного выполнения — указатель на распределенный блок


Глава 24 Управление терминалами с помощью библиотеки S-Lang

Из книги Описание языка PascalABC.NET автора Коллектив РуБоард

Глава 24 Управление терминалами с помощью библиотеки S-Lang С помощью библиотеки S-Lang, написанной Джоном Дэвисом (John Е. Davis), можно осуществлять доступ к терминалам на среднем уровне. Все действия, связанные с управлением терминалами на низком уровне, осуществляются


Глава 3 Управление памятью на уровне пользователя

Из книги автора

Глава 3 Управление памятью на уровне пользователя Без памяти для хранения данных программа не может выполнить никакую работу (Или, скорее, невозможно выполнить никакую полезную работу.) Реальные программы не могут позволить себе полагаться на буферы и массивы структур


Управление памятью процесса

Из книги автора

Управление памятью процесса Можно сказать, что каждый процесс в операционной системе UNIX выполняется на собственной виртуальной вычислительной машине, где все ресурсы принадлежат исключительно данному процессу. Подсистема управления памятью обеспечивает такую


Глава 11 Управление памятью

Из книги автора

Глава 11 Управление памятью Выделить память внутри ядра не так просто, как вне ядра. Это связано со многими факторами. Главным образом, причина в том, что в ядре не доступны те элементы роскоши, которыми можно пользоваться в пространстве пользователя, В отличие от