КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Структура Windows 2000, executive и защищенные подсистемыРежим ядра и пользовательский режим Микропроцессор Pentium имеет четыре уровня привилегий (privilege levels), известных также как кольца (rings), которые управляют, например, доступом к памяти, возможностью использовать некоторые критичные команды процессора (такие как команды, связанные с защитой) и т.д. Каждый поток выполняется на одном из этих уровней привилегий. Кольцо 0 - наиболее привилегированный уровень, с полным доступом ко всей памяти и ко всем командам процессора. Кольцо 3 - наименее привилегированный уровень. Для обеспечения совместимости с системами на базе процессоров, отличных от тех, что выпускает компания Intel, Windows поддерживает только два уровня привилегий - кольца 0 и 3. Если поток работает в кольце 0, говорят, что он выполняется в режиме ядра (kernel mode). Если поток выполняется в кольце 3, говорят, что он работает в пользовательском режиме (user mode). Низкоуровневый код операционной системы действует в режиме ядра, тогда как пользовательские приложения выполняются в основном в пользовательском режиме. Заметим, что прикладной поток может переключаться из пользовательского режима в режим ядра при вызове некоторых API-функций, которые требуют более высокого уровня привилегий, например, связанных с доступом к файлам или с выполнением функций, ориентированных на графические операции. В действительности некоторые пользовательские потоки могут работать в режиме ядра даже больше времени, чем в пользовательском режиме. Но как только завершается выполнение той части кода, которая относится к режиму ядра, пользовательский поток автоматически переключается обратно в пользовательский режим. Такой подход лишает возможности писать код, предназначенный для работы в режиме ядра, программист может только вызывать выполняющиеся в режиме ядра системные функции (system functions). При работе с Windows NT можно определить, когда поток выполняется в пользователъском режиме, а когда - в режиме ядра. Для этого используется утилита Performance Monitor (Системный монитор) из пункта Administrative Tools (Администрирование) меню Start. (Пуск).
Интересно, что драйверы устройств работают в режиме ядра. Это обстоятельство имеет два следствия. Во-первых, в отличие от неправильно выполняющегося приложения неправильно работающий драйвер устройства может нарушить работу всей системы, так как он имеет доступ и ко всему системному коду, и ко всей памяти. Во-вторых, прикладной программист может получить доступ к защищенным ресурсам, написав драйвер псевдоустройства (fake device), хотя это и нелегкая задача. Термин сервис (service) имеет в среде Windows множество значений. Ниже представлены некоторые из них, имеющие отношение к рассматриваемой теме: Сервис АРI - функция или подпрограмма API, которая реализует некоторое действие (сервис) операционной системы, такое как создание файла или работа с графикой (рисование линий или окружностей). Например, функция API CreateProcess используется в Windows для создания нового процесса; системный сервис - недокументированная (undocumented) функция, которая может вызываться из пользовательского режима. Эти функции часто используются функциями Win32 API для предоставления низкоуровневых сервисов; внутренний (internal) сервис - функция или подпрограмма, которая может вызываться только из кода, выполняемого в режиме ядра. Эти функции относятся к низкоуровневой части кода Windows: к исполнительной системе Windows NT, к ядру или к слою абстрагирования от аппаратуры (HAL). Системные процессы (system processes) - это особые процессы, обслуживающие операционную систему. В системе Windows постоянно задействованы следующие системные процессы (учтите, что все они, кроме процесса system, выполняются в пользовательском режиме): - процесс idle, который состоит из одного потока, управляющего временем простоя процессора; - процесс system - специальный процесс, выполняющийся только в режиме ядра. Его потоки называются системными потоками (system threads); - процесс Session Manager (диспетчер сеансов) - SMSS.EXE; - подсистема Win32 - CSRSS.EXE; - процесс регистрации в системе — WinLogon (WINLOGON.EXE). Вы можете убедиться в том, что эти системные процессы действительно выполняются в системе, посмотрев на вкладку Processes (Процессы) программы Task Manager (Диспетчер Давайте рассмотрим вкратце некоторые из этих системных процессов. Процесс Session Manager(менеджер сеансов) Процесс Session Manager (SMSS.EXE) - один из первых процессов, создаваемых операционной системой в процессе загрузки. Он выполняет важные функции инициализации, такие как создание переменных окружения системы; задание имен устройств MS DOS, например, LPT1 и СОМ1; загрузка той части подсистемы Win32, которая относится к режиму ядра; запуск процесса регистрации в системе WinLogon.
|