
Ядро в привилегированном режиме
Для надежного управления ходом выполнения приложений операционная система должна иметь по отношению к приложениям определенные привилегии. Иначе некорректно работающее приложение может вмешаться в работу ОС и, например, разрушить часть ее кодов. Все усилия разработчиков операционной системы окажутся напрасными, если их решения воплощены в незащищенные от приложений модули системы, какими бы элегантными и эффективными эти решения ни были. Операционная система должна обладать исключительными полномочиями также для того, чтобы играть роль арбитра в споре приложений за ресурсы компьютера в мультипрограммном режиме. Ни одно приложение не должно иметь возможности без ведома ОС получать дополнительную область памяти, занимать процессор дольше разрешенного операционной системой периода времени, непосредственно управлять совместно используемыми внешними устройствами.
Обеспечить привилегии операционной системе невозможно без специальных средств аппаратной поддержки. Аппаратура компьютера должна поддерживать как минимум два режима работы — пользовательский режим (user mode) и привилегированный режим, который также называют режимом ядра (kernel mode), или режимом супервизора (supervisor mode). Подразумевается, что операционная система или некоторые ее части работают в привилегированном режиме, а приложения — в пользовательском режиме.
Так как ядро выполняет все основные функции ОС, то чаще всего именно ядро становится той частью ОС, которая работает в привилегированном режиме. Иногда это свойство — работа в привилегированном режиме — служит основным определением понятия «ядро».
Процессы
Процесс образуется после загрузки программы в оперативную память и является ее образом на этапе выполнения. Иными словами, процесс есть работа, производимая при выполнении программы над ее данными. В однозадачных ОС понятия программы и процесса зачастую смешиваются. Например в MS-DOS понятие процесс отсутствует, есть термин программа, которую можно запустить на исполнение. Хотя в MS-DOS существует возможность разместить в памяти несколько программ, система не защищает их от друг от друга, как результат возможно компьютер зависнет. В UNIX программа и процесс не тождественны друг другу, например, если одну программу одновременно запускают на исполнение несколько пользователей, то порождается соответствующее число процессов.
Процесс является единицей управления операционной системы. Он создается только по запросу другого процесса, который договоримся называть родительским (parent), а созданный - потомком (child). Процесс существует в течение определенного времени, называемого жизненным циклом процесса (process lifetime), и завершается либо по команде пользователя, либо после того как выполнят всю порученную ему работу.
Поскольку в системе одновременно существует несколько процессов, а активным в любой момент времени, может быть только один из них, необходима стратегия разделения процессорного времени.
Что бы защитить процессы от вредного воздействия на самих себя или на другие процессы в системе, требуются механизмы защиты. Они могут быть сформулированы как полномочия - перечень разрешенных и запрещенных действий. Полномочия для каждого процесса определяются индивидуально, причем наивысшими полномочиями обладает ядро системы.
Полномочия определяют право доступа процесса к любому другому процессу или ресурсу. Интересно отметить, что для всех типов ресурсов используется единый алгоритм проверки прав доступа.
Итак, мы можем дать определение процесса как единицы работы, управления и потребления ресурсов вычислительной системы.
Процессы подразделяются на системные и пользовательские. Системные процессы принадлежат административным учетным именам, автоматически порождаются при старте системы и выполняются в режиме ядра. Они могут непосредственно манипулировать внутренними данными и структурами ядра, как это делает, например процесс init. Пользовательские процессы принадлежат обычным - не административным учетным именам, исполняются в пользовательском режиме и для доступа к таблицам ядра используют системные вызовы. Пользовательские процессы обычно связаны с определенным управляющим терминалом.
Процессы мы можем увидеть в диспетчере задач, это знает каждый. Но вот что значит каждый процесс знают не все. Процессы Windows запускаемые по умолчанию:
CSRSS.EXE - Процесс отвечает за окна консоли, за создание и удаление потоков, а также частично за работу 16-битной среды MS-DOS. Он относиться к подсистеме Win32 пользовательского режима (WIN32.SYS же относиться к ядру Kernel) и должен всегда выполняться.
EXPLORER.EXE - Пользовательская среда, содержащая такие компоненты, как Панель задач, Рабочий стол и тому подобное. Его практически всегда можно закрывать и снова открывать без каких-либо последствий.
INTERNAT.EXE - Загружает различные выбранные пользователем языки ввода, показывает на панели задач значок >, который позволяет переключать языки ввода. С помощью панели управления возможно без использования данного процесса безо всяких проблем переключать раскладку клавиатуры.
LSASS.EXE - Этот локальный сервер авторизации отвечает за IP-директивы безопасности (интернет- протоколы) и загружает драйвер безопасности. Он запускает процесс, отвечающий за авторизацию пользователей. При успешной авторизации пользователя приложение создаёт и присваивает ему специальный протокол. Все запущенные далее процессы используют этот протокол.
MSTASK.EXE - Отвечает за службу планирования Schedule, которая предназначена для запуска различных приложений в определённое пользователем время.
SMSS.EXE - Диспетчер сеансов запускает высокоуровневые подсистемы и сервисы. Процесс отвечает за различные действия, например запуск Winlogon и Win32 процессов, а также за операции с системными переменными. Когда Smss определяет, что Winlogon или Csrss закрыты, он автоматически выключает систему.
SPOOLSV.EXE - Обеспечивает создание очереди на печать, временно сохраняя документы и факсы в памяти.
SVCHOST.EXE - Этот всеобъемлющий процесс служит хостингом для других процессов, запускаемых с помощью DLL. Поэтому иногда работают одновременно несколько Svhost. С помощью команды > можно вывести на экран все процессы, использующие Svchost.
SERVICES.EXE - Процесс управления системными службами. Запуск, окончание, а также все остальные действия со службами происходят через него.
SYSTEM - Выполняет все потоки ядра Kernel.
SYSTEM IDLE PROCESS - Этот процесс выполняется на любом компьютере. Нужен он, правда, всего лишь для мониторинга процессорных ресурсов, не используемых другими программами.
TASKMGR.EXE - Процесс диспетчера задач, закрывать который крайне не рекомендуется.
WINLOGON.EXE - Отвечает за управление процессами авторизации пользователей.
WINMGTM.EXE - Основной компонент клиентской службы Windows. Процесс запускается одновременно с первыми клиентскими приложениями и выполняется при любом запросе служб. В Windows XP процесс запускается как клиент процесса Svchost.