Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






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

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

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

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

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

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

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал