Программное обеспечение САПР. Операционные системы. Майстренко Н.В - 20 стр.

UptoLike

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) может назначать разные потоки разным процессорам в различные моменты времени, обеспечивая дейст-