Основные особенности архитектуры

Наиболее принципиальным отличием между системами класса Windows 9x и Win­dows NT является то, что у них разная архитектура.

Большинство операционных систем использует такую особенность современных процессоров, как возможность работать в одном из двух режимов: привилегирован­ном (режиме ядра, или режиме супервизора) и пользовательском (режиме выпол­нения приложений). При описании своей системы Windows NT Microsoft для ука­зания этих режимов использует термины kernel mode и user mode соответственно. Программные коды, которые выполняются процессором в привилегированном режиме, имеют доступ и к системным аппаратным средствам, и к системным дан­ным. Чтобы защитить операционную систему и данные, располагающиеся в опе­ративной памяти, от ошибок приложений или их преднамеренного вмешательства в чужие вычисления, только системному коду, относящемуся к управляющей (су-первизорной) части операционной системы, разрешают выполняться в привиле­гированном режиме работы процессора. Все остальные программные модули дол­жны выполняться в пользовательском режиме.

Поскольку при создании Windows NT разработчики хотели обеспечить ее мобиль­ность, то есть легкую переносимость на другие платформы, они приняли решение использовать только два уровня привилегий из четырех, имеющихся в микропро­цессорах Intel семейства i80x86. Как мы уже знаем, нулевой уровень привилегий в микропроцессорах с архитектурой ia32 обеспечивает возможность выполнять лю­бые команды и иметь доступ ко всем регистрам процессора. Наименьшие приви­легии имеются у кода, выполняемого в третьем кольце защиты (см. главу 4), кото­рое и предназначается для выполнения обычных приложений. Напомним, что код,


Операционные системы Windows NT/2000/XP_______________________________ 383

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

Системы типа Windows NT построены по микроядерной технологии. Конечно, их ядро никак нельзя назвать маленьким, особенно в сравнении с ядром операцион­ной системы QNX. Однако в целом архитектура Windows NT безусловно отвечает идеям построения операционной системы, в которой управляющие модули орга­низованы с четким выделением центральной части и взаимодействием этой части с остальными по принципу клиент-сервер. Это означает, что в состав ядра включе­ны только самые важные основообразующие управляющие процедуры, а осталь­ные управляющие модули операционной системы вызываются из ядра как служ­бы. Причем только часть служб использует процессор в режиме ядра, а остальные — в пользовательском режиме, как и обычные приложения пользователей (рис. 11.2). А для обеспечения надежности они располагаются в отдельном виртуальном ад­ресном пространстве, к которому ни один модуль и ни одна прикладная програм­ма, помимо системного кода, не может иметь доступа.

Рис. 11.2. Архитектура операционных систем класса Windows NT


384 Глава 11. Операционные системы Windows

Ядро (микроядро) систем Windows NT выполняет диспетчеризацию задач (точ­нее, потоков), обработку прерываний и исключений, поддерживает механизмы синхронизации потоков и процессов, обеспечивает взаимосвязи между всеми ос­тальными компонентами операционной системы, работающими в режиме ядра. Если компьютер имеет микропроцессорную архитектуру (системы класса Win­dows NT поддерживают симметричную мультипроцессорную архитектуру1), ядро повышает его производительность, синхронизируя работу процессоров.

Из рисунка видно, что помимо собственно ядра в том же режиме супервизора ра­ботают модуль HAL (Hardware Abstraction Layer — уровень абстракции аппарат­ных средств), низкоуровневые драйверы устройств и исполняющая система Win­dows NT, называемая Win32 Executive. Начиная с Windows NT 4.0 в режиме ядра работают и диспетчер окон (Window Manager), который иногда называют «User», и модули графического интерфейса устройств (GDI).

Программное обеспечение, абстрагирующее работу исполняющей системы и соб­ственно ядра от специфики работы конкретных устройств и контроллеров, во мно­гом упрощает перенос операционной системы на другую платформу. Оно пред­ставлено в системе модулем динамически связываемой библиотеки HAL.DLL.

Одним из важнейших компонентов операционных систем Windows NT/2000/XP, который появился вследствие следования микроядерному принципу их построе­ния, является исполняющая система (Win32 Executive). Она выполняет такие ба­зовые функции операционной системы, как управление процессами и потоками, управление памятью, взаимодействие между процессами, защиту, операции вво­да-вывода (включая файловые операции, кэширование, работу с сетью и некото­рые другие). Ниже перечислены компоненты исполняющей системы.

- Диспетчер процессов (Process Manager) создает, отслеживает и удаляет про­
цессы. Для выполнения этих функций создается соответствующий дескриптор,
определяются базовый приоритет процесса и карта адресного пространства,
создается и поддерживается список всех готовых к выполнению потоков.

- Диспетчер виртуальной памяти (Virtual Memory Manager) предоставляет вир­
туальную память выполняющимся процессам. Каждый процесс имеет отдель­
ное адресное пространство, используется страничное преобразование линей­
ных адресов в физические, поэтому потоки одного процесса не имеют доступа к
физическим страницам, отведенным для другого процесса.

- Диспетчер объектов (Object Manager) создает и поддерживает объекты. В част­ности, поддерживаются дескрипторы объектов и атрибуты защиты объектов. Объектами считаются каталоги, файлы, процессы и потоки, семафоры и собы­тия и многие другие.

- Монитор безопасности (Security Reference Monitor) обеспечивает санкциони­рование доступа к объектам, контроль полномочий доступа и ведение аудита. Совместно с процессом входа в систему (logon) и защищенными подсистемами реализует модель безопасности Windows NT.

' Микроядро может одновременно выполняться па всех процессорах, а потоки одного процесса могут одновременно выполняться на нескольких процессорах.


Операционные системы Windows NT/2000/XP_______________________________ 385

- Диспетчер ввода-вывода (Input/Output Manager) управляет всеми операция­ми ввода-вывода в системе. Организует взаимодействие и передачу данных между всеми драйверами, включая драйверы файловых систем, драйверы фи­зических устройств, сетевые драйверы, для чего используются структуры дан­ных, называемые пакетами запросов на ввод-вывод (I/O Request Packet, IRP). Запросы на ввод-вывод обрабатываются в порядке приоритетов, а не в порядке их поступления. Операции ввода-вывода кэшируются, этим процессом управ­ляет диспетчер кэша (Cache Manager). Поддерживаются различные файловые системы, причем драйверы' этих систем воспринимаются диспетчером ввода-вывода как драйверы физических устройств. Специальное сетевое системное программное обеспечение (редиректор2 и сервер3) трактуются как сетевые драй­веры и также имеют непосредственную связь с диспетчером ввода-вывода.

- Средства вызова локальных процедур (Local Procedure Call, LPC) обеспечивают выполняющиеся подсистемы среды выполнения и приложения пользователей коммуникационным механизмом, в котором взаимодействие строится по прин­ципу клиент-сервер.

Для системных данных и программного кода, работающего в режиме ядра, не пре­дусмотрено никакой защиты. Это означает, что некорректно написанный драйвер устройства может разрушить вычисления, выполняемые собственно операцион­ной системой. Поэтому необходимо очень осторожно относиться к выбору таких драйверов и использовать только те, которые были тщательно оттестированы. По­следние версии операционных систем, включая поколение Windows 2000, имеют специальный механизм проверки цифровой подписи Microsoft, наличие которой означает, что драйвер прошел всестороннее тестирование. Это должно выступать гарантом качества системного кода.

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

Диспетчеризация в системах Windows NT/2000/XP организована почти так же, как и в системах Windows 95/98/ME. Все эти операционные системы относятся к мультизадачным и поддерживают потоковые вычисления. 16-разрядные прило­жения Windows, работая на одной виртуальной машине, разделяют процессорное время кооперативно. 32-разрядные потоки разделяют процессорное время. вытес-няя друг друга через некоторые моменты времени. При этом диспетчер задач пла-

1 Здесь можно было бы употребить термин «системы управления файлами».

2 Этот модуль перехватывает запрос на шюд-выпод и проверяет, к каким ресурсам он относится ло­
кальным (расположены непосредственно на том же компьютере) или удаленным (предоставлены в
общий доступ через сеть и могут быть расположены па любом компьютере).

3 В данном контексте речь идет о модуле системного сетевого программного обеспечения, который
получает запрос на обслуживание или ресурс от другого компьютера (посылаемым им после про­
хождения через свой модуль редиректора) и генерирует соответствующий запрос к операционной
системе.


386_______________________________ Глава 11. Операционные системы Windows

нировщик потоков) работает с несколькими очередями. Всего существует 32 уровня приоритетов — от 0 до 31. Распределение приоритетов между выполняющимися процессами и потоками осуществляется по следующим правилам:

- Low — 4 (низкий приоритет);

- BelowNormal — ниже среднего;

- Normal — 8 (нормальный приоритет);

- AboveNormal — выше среднего;

- High — 16 (высокий приоритет);

- RealTime — 24 (приоритет реального времени).

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

У потоков, выполняемых в фоновом режиме (background), приоритет уменьшает­ся. По умолчанию все задачи запускаются с нормальным приоритетом. Обычный пользователь может изменить приоритет задачи вплоть до высокого. Приоритет реального времени может присвоить только администратор.

Используемые дисциплины диспетчеризации у всех этих операционных систем одинаковы. Однако если внимательно понаблюдать за тем, как ведут себя системы Windows NT/2000/XP и системы Windows 95/98/ME, выполняя параллельно множество запущенных приложений, то можно без особого труда заметить, что многозадачность у первых реализована значительно лучше. Причина такого явле­ния заключается в том, что с разными затратами времени происходят изменения в подсистеме управления памятью. При переключении с одного вычислительного процесса на другой необходимо поменять значение регистра CR3, с помощью ко­торого линейные адреса команд и операндов псресчитываются в реальные физи­ческие. В операционных системах Windows NT/2000/XP (как и в OS/2, и в Linux) используется вся та аппаратная поддержка двухэтапного вычисления физических адресов, которая имеется в микропроцессорах. То есть при переключении процес­сора на новую задачу смена значения регистра CR3, а значит, и замена всех деск-рипторных таблиц, описывающих местонахождение виртуальных страниц процесса и его потоков, осуществляется автоматически. А в системах Windows 95/98/ME вместо инициализации одного регистра, указывающего на адрес таблицы PDE (см. в главе 4 описание страничного способа организации виртуальной памяти в мик­ропроцессорах i80x86), операционная система переписывает все содержимое це­лой физической страницы, на которую указывает регистр CR3 вместо простой за­мены содержимого этого регистра. И поскольку такая операция требует совершенно иных затрат времени, мы и наблюдаем тот факт, что многозадачность в системах Windows 95/98/ME реализована намного хуже, чем в системах класса NT.

Полезно знать, что операционные системы, предназначенные для построения ра­бочих станций (ранее Workstation, позже Professional), и серверные варианты стро­ятся практически на одном ядре, но имеют разные настройки в реестре. Более того,


Операционные системы Windows NT/2000/XP_______________________________ 387

их дистрибутивы почти полностью совпадают (более чем на 90 %). Однако серве­ры не имеют ограничений на количество сетевых подключений к ним (эти ограни­чения определяются только количеством приобретенных лицензий) и позволяют установить и выполнять различные сетевые службы, например службу именова­ния Windows для Интернета (Windows Internet Name Service, WINS), систему доменного именования (Domain Name System, DNS), протокол управления дина­мической адресацией компьютеров (Dynamic Host Control Protocol, DHCP), кон­троллер домена (domain controller) в локальной вычислительной сети и многие другие. В доказательство этому можно упомянуть известную утилиту NTSwitch.exe, которая при запуске превращает рабочую станцию в сервер или, наоборот, сер­вер — в рабочую станцию.

В заключение заметим, что мы очень кратко познакомились с архитектурой опера­ционных систем Windows NT/2000/XP. Для более детального изучения целого ряда вопросов, связанных с этой темой, рекомендую такие известные книги, как [16,42].








Дата добавления: 2016-09-20; просмотров: 660;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.