Обзор методов управления памятью

Обзор методов управления памятью

Обо всех деталях отображения виртуальных адресов на физические адреса (virtual to physical memory mapping), механизмах страничной подкачки (page swapping) и замещения страниц по запросу (demand paging) и прочих моментах заботится ОС. Эти вопросы подробно обсуждаются в документации по ОС, а также в книге Соломона (Solomon) и Руссиновича (Russinovich) Inside Windows2000. Краткое изложение наиболее существенных сведений приводится ниже:

• Система может располагать сравнительно небольшим объемом физической памяти; на практике для всех систем, кроме Windows XP, необходимый минимум составляет 128 Мбайт, однако в типичных случаях доступные объемы физической памяти оказываются намного большими.[21]

• Каждый отдельный процесс — а таких процессов, как пользовательских, так и системных, может выполняться одновременно несколько — имеет собственное виртуальное адресное пространство, объем которого может значительно превосходить объем доступного физического адресного пространства. Например, емкость виртуального адресного пространства объемом 1 Гбайт, относящегося к одному процессу, в восемь раз превышает емкость физической памяти объемом 128 Мбайт, и таких процессов может быть множество.

• ОС преобразует виртуальные адреса в физические адреса.

• Для большинства виртуальных страниц в физической памяти места не хватит, поэтому ОС имеет возможность реагировать на страничные ошибки (page faults), возникающие при попытках обращения к страницам, которые отсутствуют в памяти, и загружать данные с жесткого диска — из системного файла подкачки (swap file) или из обычного файла. Будучи прозрачными для программиста, страничные ошибки отрицательно влияют на производительность, поэтому программы должны проектироваться таким образом, чтобы вероятность возникновения подобных ошибок была сведена к минимуму. Более подробное освещение этой темы, рассмотрение которой выходит за рамки данной книги, вы найдете в справочной документации по ОС.

На рис. 5.1 проиллюстрировано расположение уровней API управления памятью Windows поверх диспетчера виртуальной памяти (Virtual Memory Manager, VMM). API виртуальной памяти Windows (VirtualAlloc, VirtualFree, Virtual-Lock, VirtualUnlock и так далее) работает с целыми страницами. API кучи Windows управляет блоками памяти, размер которых определяется пользователем.

Мы не будем останавливаться на топологии адресного пространства виртуальной памяти, поскольку она не имеет непосредственного отношения к API, различна в Windows 9x и Windows NT и в будущем может измениться. Соответствующая информация содержится в документации Microsoft.

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

VOID GetSystemInfo(LPSYSTEM_INFO lpSystemInfo) 

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

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

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

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

2.2.1 Обзор особенностей подсистемы управления файлами

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

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


ГЛАВА 9. АЛГОРИТМЫ УПРАВЛЕНИЯ ПАМЯТЬЮ

Из книги Руководство по стандартной библиотеке шаблонов (STL) автора Ли Менг

ГЛАВА 9. АЛГОРИТМЫ УПРАВЛЕНИЯ ПАМЯТЬЮ Алгоритм планирования использования процессорного времени, рассмотренный в предыдущей главе, в сильной степени зависит от выбранной стратегии управления памятью. Процесс может выполняться, если он хотя бы частично присутствует в


Примитивы управления памятью (Memory Handling Primitives)

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

Примитивы управления памятью (Memory Handling Primitives) Чтобы получать типичный указатель на неинициализированный буфер памяти данного размера, определена следующая функция:template ‹class T›inline T* allocate(ptrdiff_t n, Т*); // n ›= 0Размер (в байтах) распределённого буфера - не меньше n*sizeof(T).Для


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

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

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


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

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

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


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

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

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


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

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

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


Проблема управления памятью в ОО-модели

Из книги Политики безопасности компании при работе в Интернет автора Петренко Сергей Александрович

Проблема управления памятью в ОО-модели Подводя итог предшествующего анализа, определим оригиналы и соответственно достижимые объекты:Определение: начальные, достижимые и недостижимые объектыВ каждый момент времени выполнения системы множество оригиналов


Архитектура системы управления памятью в Win32 и Win64

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

Архитектура системы управления памятью в Win32 и Win64 Win32 (в данном случае различия между Win32 и Win64 становятся существенными) — это API 32-разрядных ОС семейства Windows. "32-разрядность" проявляет себя при адресации памяти тем, что указатели (LPSTR, LPDWORD и так далее) являются 4-байтовыми


Обзор методов асинхронного ввода/вывода Windows

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

Обзор методов асинхронного ввода/вывода Windows В Windows выполнение асинхронного ввода/вывода обеспечивается в соответствии с тремя методиками.• Многопоточный ввод/вывод (Multihreaded I/O). Каждый из потоков внутри процесса или набора процессов выполняет обычный синхронный


23.2.2. Функции для работы с памятью

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

23.2.2. Функции для работы с памятью Функции для работы с памятью библиотеки Glib выполняют те же действия, что и соответствующие им функции языка С. Вот их прототипы:gpointer g_malloc(gulong size);gpointer g_realloc(gpointer mem, gulong size);void g_free(gpointer


3.7. Обзор возможностей современных систем управления политиками безопасности

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

3.7. Обзор возможностей современных систем управления политиками безопасности Как правило, современные системы управления политиками безопасности используют лицензированные библиотеки политик безопасности, разработанные другими компаниями. Так, например, продукт


9.2.1. Обзор управления заданиями

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

9.2.1. Обзор управления заданиями Управление заданиями является сложной темой, той, в которую мы решили не погружаться в данной книге. Однако, здесь приведен краткий концептуальной обзор.Устройство терминала (физическое или другое) с работающим на нем пользователем


Принципы управления памятью

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

Принципы управления памятью Одной из основных функций операционной системы является эффективное управление памятью. Оперативная память, или основная память, или память с произвольным доступом (Random Access Memory, RAM) является достаточно дорогостоящим ресурсом. Время доступа к


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

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

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