ВУЗ:
Составители:
DWORD RegionSize; // Размер области в байтах.
DWORD State; // Передана зарезервирована,
// свободна.
DWORD Protect; // Текущая защита от доступа.
DWORD Type; // Тип страниц.
}
Функция VirtualQueryEx всегда заполняет следующие члены структуры MEMORY_BASIC_INFORMATION:
• BaseAddress, которая возвращает базовый адрес заданной страницы;
• RegionSize, представляющая собой количество байтов от начала заданной страницы до вершины заданной области.
Если страница, содержащая адрес IpAddress, свободна (не зарезервирована и не передана), член структуры Stаte содер-
жит символьную константу MEM_FREE. Остальные члены (кроме BaseAddress и RegionSize) не имеют значения.
Если страница, содержащая адрес IpAddress, не свободна, функция определяет выделенную область (allocation region),
т.е. область виртуальной памяти, которая включает заданную страницу и была, первоначально выделена с помощью вызова
функции VirtualAlloc.
ЗАДАНИЕ ДЛЯ ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ
Разработать программу, которая:
1) выдает информацию, получаемую при использовании API GlobalMemoryStatus (при выводе информации использо-
вать диаграммы);
2) составляет карту виртуальной памяти для любого процесса.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Перечислите типы адресов в ОС Windows.
2. Как от адресов виртуальной памяти перейти к физической?
3. Понятие кучи памяти в ОС Windows.
4. Что такое кэш-память?
5. Что такое адресное пространство процесса?
6. Перечислите области, которые присутствуют в адресном пространстве ОС Windows.
7. Какие алгоритмы распределения памяти вы знаете?
Лабораторная работа 4
ПРОЦЕССЫ
Цель работы: получение практических навыков при использовании Win32 API для исследования процессов.
ОСНОВНЫЕ ПОЛОЖЕНИЯ
Процесс – это исполняемый экземпляр приложения и набор ресурсов, которые выделяются данному исполняемому
приложению и включают в себя следующее:
1) виртуальное адресное пространство;
2) системные ресурсы, такие как растровые изображения, файлы, области памяти и т.д.;
3) модули процесса, т.е. исполняемые модули, которые отображены (загружены) в его адресное пространство. Это мо-
гут быть динамические библиотеки (DLI), драйверы (DRV) и управляющие элементы (OCX), основной загрузочный модуль
(ЕХЕ) процесса, который иногда и называют собственно модулем. Модуль данных (или программный модуль) может или
находиться на диске, или быть загруженным в физическую память (RAM). Правда, термин "загружен" (loaded) имеет иное
значение, относящееся к виртуальному адресному пространству процесса. Здесь больше подходит термин "отображен"
(mapped), так как само отображение – это просто назначение виртуальным адресам физических адресов. После того как мо-
дуль загружен в физическую память, его физические адреса могут отображаться в различные виртуальные адресные про-
странств, при этом возможно использование в каждом процессе разных виртуальных адресов. Отображение не обязательно
требует физического перемещения реальных данных или программ;
4) уникальный идентификационный номер, называемый идентификатором процесса;
5) один или несколько потоков управления.
Поток – это внутренняя составляющая процесса, которой операционная система выделяет процессорное время. Каждый
процесс должен иметь, по крайней мере, один поток. Поток включает:
1) текущее состояние регистров процессора;
2) два стека, один из которых используется при выполнении в режиме ядра, второй – при выполнении в пользователь-
ском режиме;
3) участок памяти для работы подсистем, библиотеки времени выполнения;
4) динамические библиотеки;
5) уникальный идентификатор, называемый идентификатором потока.
Состояние регистров, содержимое стека и области памяти называют контекстом потока (thread's context).
Основное назначение потоков – дать процессу возможность поддерживать несколько ветвей управления, т.е. выполнять
больше задач одновременно. В многопроцессорной конфигурации (компьютер с двумя и более процессорами) Windows NT
(но не Windows 9x) может назначать разные потоки разным процессорам в различные моменты времени, обеспечивая дейст-
Страницы
- « первая
- ‹ предыдущая
- …
- 18
- 19
- 20
- 21
- 22
- …
- следующая ›
- последняя »