Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Структура 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 Crea t eProcess используется в 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.

Процесс WinLogon

Этот системный процесс управляет входом пользователей в систему и выходом из нее. Вызывается специальной комбинацией клавиш Windows Ctrl+Alt+Delete. WinLogon отвечает за загрузку оболочки Windows (обычно это Windows Explorer).

Процесс system состоит из системных потоков (system threads), являющихся потоками режима ядра. Windows и многие драйверы устройств создают потоки прoцecca system для различных целей. Например, диспетчер памяти формирует системные потоки для решения задач управления виртуальной памятью, диспет­чер кэша использует системные потоки для управления кэш-памятью, а драйвер гибкого диска - для контроля над гибкими дисками.

Csrss.exe Данный процесс является частью подсистемы Win32, выполняющейся в непривилегированном режиме (Win32.sys является модулем привилегированного режима). Процесс Csrss представляет клиент-серверную подсистему времени выполнения. Данный процесс должен быть запущен все время. Процесс Csrss отвечает за консольные окна, создание и удаление потоков и за некоторые части 16-разрядной виртуальной среды MS-DOS.

Подсистема Win32 является разновидностью подсистемы среды (environment subsystem). Другие подсистемы среды Windows (не показаны на рисунке) включают POSIX и OS/2. POSIX является сокращением термина «переносимая операционная система па базе UNIX» (portable operating system based on UNIX) и реализует ограниченную поддержку операционной системы UNIX.

Назначение подсистемы среды - служить интерфейсом между пользовательски­ми приложениями и соответствующей частью исполнительной системы Windows. Каждая подсистема имеет свои функциональные возможности на базе единой исполнительной системы Windows. Любой выполняемый файл неразрывно связан с одной из этих подсистем. Подсистема Win32 содержит Win32 API в виде набора DLL, таких как KERNEL32.DLL, GDI32.DLL и USER32.DLL.

В Windows NT Microsoft перенесла часть подсистемы Win32 из пользовательского режима в режим ядра. В частности, драйвер устройства режима ядра WIN32K.SYS, который управляет отображением окон, вы­водом на экран, вводом данных с клавиатуры или при помощи мыши и передачей сообщений. Он включает также библиотеку интерфейсов графических устройств (Graphical Device Interface library – GDL.DLL), используемую для создания графических объектов и текста.

Сервисы исполнительной системы Windows составляют низкоуровневую часть Windows NT режима ядра, включенную в файл NTOSKRNL.EXE.

Cервисы исполнительной системы делят на две группы: исполнительную систему (executive), относящуюся к верхнему уровню, и ядро (kernel).

Ядро - это самый нижний уровень операционной системы, реализующий наиболее фундаментальные сервисы, такие как:

- планирование потоков;

- обработку исключений;

- обработку прерываний;

- синхронизацию процессоров в многопроцессорной системе;

- создание объектов ядра.

 

Ниже приведены некоторые наиболее важные составляющие исполнительной системы:

- диспетчер процессов и потоков создает и завершает и процессы, и потоки, используя сервисы низкоуровневого ядра;

- диспетчер виртуальной памяти реализует механизм виртуальной памяти;

- диспетчер ввода/вывода реализует аппаратно-независимый ввод/вывод и взаимодействует с драйверами устройств;

- диспетчер КЭШа управляет кэшированием диска;

- диспетчер объектов создает объекты исполнительной системы Windows и управляет ими. Windows использует объекты для представления разнооб­разных ресурсов, таких как процессы и потоки;

- библиотеки времени выполнения содержат такие функции, как обработки строк и арифметическиефункции.

Уровень абстрагирования от аппаратуры (HAL) - это библиотека режима ядра (HAL.DLL), которая реализует низкоуровневый интерфейс с аппаратурой. Компо­ненты Windows и драйверы устройств от других компаний взаимодействуют с аппа­ратурой посредством HAL. Существует много версий HAL под различные аппаратные платформы. Подходящий уровень выбирается в процессе установки Windows.

Процесс - это исполняемый экземпляр приложения инабор ресурсов, которые выделяются данному исполняемому приложению. Ресурсы включают в себя следующее:

- виртуальное адресное пространство;

- системные ресурсы, такие как растровые изображения, файлы, области памяти и т.д.;

- модули процесса, то есть исполняемые модули, которые отображены (загружены) в его адресное пространство. Это могут быть динамические библиотеки (DLL), драйверы (DRV) и управляющие элементы (OCX), основной загрузочный модуль (ЕХЕ) процесса, который иногда и называют собственно модулем. Модуль данных (или программный модуль) может или находиться на диске, или быть загруженным в физическую память (RAM) Правда, термин «загружен» (loaded) имеет иное значение, относящееся к виртуальному адресному пространству процесса. Здесь больше подходит термин «отображен» (mapped), так как само отображение - это просто назначение виртуальным адресам физических адресов. После того как модуль загружен в физическую память, его физические адреса могут отображаться в различные виртуальные адресные пространств, при этом возможно использование в каждом процессе разных виртуальных адресов. Отображение не обязательно требует физического перемещения реальных данных или программ (хотя, как вы увидите позже, бывает и так); уникальный идентификационный номер, называемый идентификатором процесса; один или несколько потоков управления.

Поток - это внутренняя составляющая процесса, которой операционная система выделяет процессорное время. Каждый процесс должен иметь, по крайней мере, один поток. Поток включает:

· текущее состояние регистров процессора;

· два стека, один из которых используется при выполнении в режиме ядра, второй - при выполнении в пользовательском режиме;

· участок памяти для работы подсистем, библиотеки времени выполнения,

· динамические библиотеки;

· уникальный идентификатор, называемый идентификатором потока.

Состояние регистров, содержимое стека и области памяти называют контекстом потока (thread's context).

Основное назначение потоков - дать процессу возможность поддерживать несколько ветвей управления, то есть выполнять больше «дел» одновременно. В многопроцессорной конфигурации (компьютер с двумя и более процессорами) Windows NT может назначать разные потоки разным процессорам в различные моменты времени, обеспечивая действительно параллельную обработку. В однопроцессорной конфигурации процессор должен выделять кванты времени каждому исполняемому в данный момент потоку.





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


Дата добавления: 2018-10-14; Мы поможем в написании ваших работ!; просмотров: 285 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Ваше время ограничено, не тратьте его, живя чужой жизнью © Стив Джобс
==> читать все изречения...

2181 - | 2122 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.