Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ОС.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
194 Кб
Скачать
☆

Инструментарий

Для просмотра процессов и информации, связанной с ними, существует ряд утилит, включающих Windows support tools, windows debugging tools, windows SDK. Ряд утилит можно получить на сайте sysinternals.com, которые в настоящее время стали частью Microsoft.

Наиболее широко применяемая утилита – встроенный в Windows диспетчер задач (Task manager).

Утилита Process Explorer – показывает более подробную информацию о процессах, чем любой другой доступный инструмент. Замечание: для функционирования этой программы должна быть подгружена «таблица символов». Для этого Microsoft предоставляет соответствующую поддержку для версии ОС (см. лабы, Windows Debugger, Symbol Path). Замечание: таблица символов для утилит и таблица символов для Debugger различные.

Просмотр счетчиков производительности. Счетчики, позволяющие контролировать производительность процессов, показаны на слайде 8. Приложение при своем выполнении может переключаться из пользовательского режима в режим ядра.

Режим ядра и пользовательский режим

Для предотвращения доступа приложений к важным данным ОС и риска их модификации Windows использует два режима доступа к процессору (даже если имеются еще какие-то режимы процессора): пользовательский (User mode) и ядра (Kernel mode). Код приложений работает в пользовательском режиме. Код ОС (системные сервисы и драйверы в режиме ядра). В режиме ядра предоставляется доступ ко всей системной памяти и разрешается выполнять любые системные команды процессора, тем самым предоставляя ОС более высокий уровень привилегий, чем приложение. В процессоре Intel x86 определено четыре уровня привилегий (колец, rings). ОС использует уровень 0 для кода ядра и уровень 3 для приложений. Это связано с тем, что большинство процессоров, на которых должна работать Windows (не Intel x86) имеет два уровня привилегий.

Важно для безопасности: Windows не предусматривает защиты от компонентов ОС, работающих в режиме ядра, т.е. можно получить полный доступ к реальной ОП и таким образом обойти средства защиты. В силу этого важно, чтобы компоненты. в т. ч. обновления были подписаны (имели сертификат).

Для перехода в режим ядра есть недекларированная макрокоманда: mode set=sv (ASM). При компиляции требуется указать опцию для разрешения вставки этой команды. Для обхода содержимое макрокоманды надо объявить константой. Выполнение в сегменте кода невозможно.

Приложения могут переключаться из пользовательского режима в режим ядра, обращаясь к системным сервисам, например функция ReadFile в ходе своего выполнения вызывает внутреннюю программу ОС, которая считывает данные. Она выполняется в режиме ядра. Переключение из пользовательского режима в режим ядра осуществляется специальными командами процессора. ОС перехватывает эту команду, проверяет аргументы и если все нормально, выполняет необходимую системную функцию.

Замечание: переключение из пользовательского режима приложения в режим ядра не влияет на планирование, т.к. контекст выполнения остается тем же самым. Поэтому приложение работает часть времени в пользовательском режиме, часть – в режиме ядра. Это можно проверить. На слайде 8 изображены счетчики, которые используются для измерения различных долей времени.

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