Вятский государственный гуманитарный университет
Опубликован: 27.05.2013 | Доступ: свободный | Студентов: 2742 / 614 | Длительность: 09:18:00
Самостоятельная работа 3:

Задания по планированию потоков

< Лекция 7 || Самостоятельная работа 3: 123 || Лекция 8 >
Аннотация: Цель работы: исследовать структуры данных и функции WRK, используемые при планировании потоков.

Задание 1. Определить величину интервала системного таймера на виртуальной машине.

Указания к выполнению.

1. Откройте отладчик ядра WinDbg.

2. Запустите виртуальную машину Windows Server 2003 SP1 в режиме отладки.

3. Остановите выполнение виртуальной машины в отладчике, нажав Ctrl+Break.

4. Определим значение переменной KeMaximumIncrement, в которой содержится длительность интервала системного таймера.

В командной строке отладчика введите команду:

dd KeMaximumIncrement

В окне команд должно быть выведено содержимое памяти:


Команда dd (Display Double word) отображает содержимое памяти как набор 4 байтовых значений.

Значение 4 байтовой переменной KeMaximumIncrement в данном примере равно 0x18730 = 100 144 в десятичном виде. В этой переменной хранится длительность интервала системного таймера в сотнях наносекунд (1 нс = 10–9 с). Переведем полученное значение в миллисекунды (1 мс = 10–3 с):

100 144 сотен нс = 100 144 * 100 * 10–9 с = 0, 0100144 с = 10, 0144 мс.

Проверить полученное значение длительности интервала системного таймера можно при помощи утилиты clockres от Sysinternals (http://technet.microsoft.com/ru-ru/sysinternals). Запустите эту утилиту на виртуальной машине из командной строки:


Задание 2. Определить величину кванта, предоставляемого потокам.

Указания к выполнению.

1. Узнайте адрес структуры EPROCESS какого-либо процесса в системе, например, explorer.exe (см. Лабораторную работу 2 "Процессы и потоки").

Для этого в отладчике ядра введите команду:

!process 0 0

и найдите адрес структуры EPROCESS для процесса explorer.exe:


В данном примере адрес равен 0x81EBCBD8.

2. Величина кванта для потоков процесса хранится в поле QuantumReset структуры KPROCESS. Структура KPROCESS содержится в поле Pcb структуры EPROCESS, причем это поле находится в самом начале структуры (смещение равно нулю). Поэтому можно отобразить структуру KPROCESS с того же адреса, по которому располагается EPROCESS:

dt kprocess 81EBCBD8

Значение поля QuantumReset равно 36 единицам, что составляет 12 интервалов системного таймера (см. лекцию 9 "Планирование потоков") – значение кванта по умолчанию для серверных операционных систем Windows.

< Лекция 7 || Самостоятельная работа 3: 123 || Лекция 8 >
Кристина Шабалина
Кристина Шабалина
Россия
Никита Усатов
Никита Усатов
Казахстан, Алматы