09 - Режим ядра и польз. режим (Ответы на экзаменационные билеты)
Описание файла
Файл "09 - Режим ядра и польз. режим" внутри архива находится в папке "Ответы на экзаменационные билеты". Документ из архива "Ответы на экзаменационные билеты", который расположен в категории "". Всё это находится в предмете "системное программное обеспечение (спо)" из 8 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "к экзамену/зачёту", в предмете "спо" в общих файлах.
Онлайн просмотр документа "09 - Режим ядра и польз. режим"
Текст из документа "09 - Режим ядра и польз. режим"
Для предотвращения доступа приложений к критически важным данным операционной системы и устранения риска их модификации Windows ис¬пользует два режима доступа к процессору (даже если он поддерживает более двух режимов): пользовательский (user mode) и ядра (kernel mode). Код
приложений работает в пользовательском режиме, тогда как код операци¬онной системы (например, системные сервисы и драйверы устройств) — в режиме ядра. В режиме ядра предоставляется доступ ко всей системной па¬мяти и разрешается выполнять любые машинные команды процессора, Пре¬доставляя операционной системе более высокий уровень привилегий, чем прикладным программам, процессор позволяет разработчикам операцион¬ных систем реализовать такие архитектуры, которые не дают возможности сбойным приложениям нарушать стабильность работы всей системы.
ПРИМЕЧАНИЕ В архитектуре процессора Intel х8б определено четы¬ре уровня привилегий, или колец (rings), предназначенных для защиты кода и данных системы от случайной или умышленной перезаписи ко-дом с меньшим уровнем привилегий. Windows использует уровень при¬вилегий 0 (или кольцо 0) для режима ядра и уровень привилегий 3 (или кольцо 3) для пользовательского режима. Почему Windows использует только два уровня? Дело в том, что на некоторых из ранее поддержи¬вавшихся аппаратных платформ (например, Compaq Alpha и Silicon Graphics MIPS) реализовано лишь два уровня привилегий.
Хотя каждый Windows-процесс имеет свою (закрытую) память, код опе¬рационной системы и драйверы устройств, работающие в режиме ядра, де¬лят единое виртуальное адресное пространство. Каждая страница в вирту¬альной памяти помечается тэгом, определяющим, в каком режиме должен работать процессор для чтения и/или записи данной страницы. Страницы в системном пространстве доступны лишь в режиме ядра, а все страницы в пользовательском адресном пространстве — в пользовательском режиме. Страницы только для чтения (например, содержащие лишь исполняемый код) ни в каком режиме для записи недоступны.
Windows не предусматривает никакой защиты системной памяти от ком¬понентов, работающих в режиме ядра. Иначе говоря, код операционной си¬стемы и драйверов устройств в режиме ядра получает полный доступ к сис¬темной памяти и может обходить средства защиты Windows для обращения к любым объектам. Поскольку основная часть кода Windows выполняется в режиме ядра, крайне важно, чтобы компоненты, работающие в этом режи¬ме, были тщательно продуманы и протестированы.
Это также подчеркивает, насколько надо быть осторожным при загрузке драйвера устройства от стороннего поставщика: перейдя в режим ядра, он получит полный доступ ко всем данным операционной системы. Такая уяз¬вимость стала одной из причин, по которым в Windows введен механизм проверки цифровых подписей драйверов, предупреждающий пользователя о попытке установки неавторизованного (неподписанного) драйвера (под¬робнее на эту тему см. главу 9). Кроме того, механизм Driver Verifier (вери-фикатор драйверов) помогает разработчикам драйверов устройств находить в них ошибки (вызывающие, например, утечку памяти или переполнения буферов). Driver Verifier поясняется в главе 7.
Как вы увидите в главе 2, прикладные программы могут переключаться из пользовательского режима в режим ядра, обращаясь к системному сервису. Например, Windows-функции ReadFile в ходе своего выполнения приходит¬ся вызывать внутреннюю подпрограмму Windows — она-то и считывает дан¬ные из файла. Так как эта подпрограмма обращается к внутрисистемным структурам данных, она должна выполняться в режиме ядра. Переключение из пользовательского режима в режим ядра осуществляется специальной командой процессора. Операционная система перехватывает эту команду, обнаруживает запрос системного сервиса, проверяет аргументы, которые поток передал системной функции, и выполняет внутреннюю подпрограм¬му. Перед возвратом управления пользовательскому потоку процессор пере¬ключается обратно в пользовательский режим. Благодаря этому операцион¬ная система защищает себя и свои данные от возможной модификации пользовательскими процессами,
ПРИМЕЧАНИЕ Переключение из пользовательского режима в режим ядра (и обратно) не влияет на планирование потока, так как контекст в этом случае не переключается. О диспетчеризации системных сер¬висов см. главу 3-
Так что ситуация, когда пользовательский поток часть своего времени работает в пользовательском режиме, а часть — в режиме ядра, совершенно нормальна. А поскольку подсистема, отвечающая за поддержку графики и окон, функционирует в режиме ядра, то приложения, интенсивно работаю¬щие с графикой, большую часть времени действуют в режиме ядра, а не в пользовательском режиме. Самый простой способ проверить это — запус¬тить приложение вроде Microsoft Paint или Microsoft Pinball и с помощью одного из счетчиков оснастки Performance (Производительность), перечис¬ленных в таблице 1 -2, понаблюдать за показателями времени работы в поль¬зовательском режиме и в режиме ядра.