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

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

< Лекция 7 || Самостоятельная работа 3: 123 || Лекция 8 >

Задание 3. Изменить величину кванта.

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

1. В виртуальной машине с операционной системой Windows Server 2003 SP1 щелкните правой кнопкой мыши на ярлыке My Computer – выберите пункт Properties – перейдите на вкладку Advanced – щелкните на кнопку Settings в разделе Performance:


В появившемся окне Performance Options перейдите на вкладку Advanced и в разделе Processor scheduling выберите пункт Programs:


2. Проверьте значение поля QuantumReset для процесса explorer.exe. Оно должно быть равно 6:


Задание 4. Определить значения класса приоритета и базового приоритета процесса.

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

1. В отладчике WinDbg определите адрес процесса explorer.exe.

2. Для процесса explorer.exe выведите на экран значения полей структуры EPROCESS. Класс приоритета процесса хранится в поле PriorityClass.

3. Определите символьное значение класса приоритета – воспользуйтесь проектом Visual Studio для WRK и найдите там структуру _PROCESS_PRIORITY_CLASS. В том же файле выше описания этой структуры содержатся определения констант для классов приоритета. Установите соответствие полученного числового значения и класса приоритета для процесса explorer.exe.

4. Для процесса explorer.exe выведите на экран значения полей структуры KPROCESS. Базовый приоритет процесса хранится в поле BasePriority. Значение базового приоритета должно соответствовать классу приоритета процесса (см. рис. 3 в лекции 9 "Планирование потоков").

Задание 5. Изменить базовый приоритет процесса.

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

1. В виртуальной машине запустите утилиту Process Explorer.

2. Найдите процесс explorer.exe, щелкните на нем правой кнопкой мыши, выберите пункт Set Priority и установите значение приоритета High: 13:


3. Проверьте в отладчике, что значения полей PriorityClass и BasePriority для процесса explorer.exe изменились.

Задание 6. Исследовать структуру KPRCB (Kernel Processor Control Block).

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

1. Выведите описание полей структуры KPRCB при помощи команды:

dt nt!_kprcb

Обратите внимание, что в команде нужно указать модуль – nt (ядро), иначе выведется информация из ntdll.dll, а также указать знак подчеркивания, иначе информация будет неполной.

Часть вывода данной команды приведена на рисунке:


2. Определите адрес структуры KPRCB.

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

!prcb

В данном примере адрес структуры KPRCB равен FFDFF120.

3. Выведите значение полей структуры KPRCB.

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

dt nt!_kprcb FFDFF120

Часть вывода для этой команды приведена на рисунке:


Обратите внимание на указатели текущего потока (CurrentThread), следующего потока (NextThread) и потока простоя (IdleThread). В примере на рисунке видно, что указатели текущего потока и потока простоя совпадают, т. е. в настоящий момент времени процессор занят потоком простоя.

< Лекция 7 || Самостоятельная работа 3: 123 || Лекция 8 >
Кирилл Илларионов
Кирилл Илларионов
Россия, Смоленск
Павел Корнеенков
Павел Корнеенков
Россия, Смоленск