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

Наиболее принципиальным отличием между системами класса 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). А для обеспечения надежности они располагаются в отдельном виртуальном ад­ресном пространстве, к которому ни один модуль и ни одна прикладная програм­ма, помимо системного кода, не может иметь доступа.

Основные особенности архитектуры - student2.ru

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

Основные особенности архитектуры - student2.ru Основные особенности архитектуры - student2.ru 384 Глава 11. Операционные системы Windows

Основные особенности архитектуры - student2.ru Ядро (микроядро) систем 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.

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

Операционные системы 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-разрядные потоки разделяют процессорное время. вытес-няя друг друга через некоторые моменты времени. При этом диспетчер задач пла-

Основные особенности архитектуры - student2.ru 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].

Модель безопасности

При разработке всех операционных систем семейства Windows NT/2000/XP ком­пания Microsoft уделяла самое пристальное внимание обеспечению информаци­онной безопасности. Как следствие, эти системы предоставляют надежные меха­низмы защиты, которые просты в использовании и легки в управлении. Сертификат безопасности на соответствие уровню С2 имеют операционные системы Win­dows NT 3.5 и Windows NT 4.0. Операционные системы семейства Windows 2000 имеют еще более серьезные средства обеспечения безопасности, однако на момент написания этой книги они еще не сертифицировались.

В отличие от операционных систем семейства Windows 9x, как, впрочем, и от сис­темы OS/2, в разработке первой версии которой Microsoft тоже принимала учас­тие, системы класса Windows NT имеют совершенно иную модель безопасности. Средства защиты изначально глубоко интегрированы в операционную систему. Подсистема безопасности осуществляет контроль за тем, кто и какие действия со­вершает в процессе работы, к каким объектам пытается получить доступ. Все дей­ствия пользователя, в том числе и обращения ко всем объектам, как нетрудно до­гадаться, на самом деле могут быть совершены только через соответствующие запросы к операционной системе. Операционная система использует этот факт и имеет все необходимые механизмы для тотального контроля всех запросов к ней. Запрашиваемые у операционной системы операции и обращения к конкретным объектам разрешаются, только если у пользователя для этого имеются необходи­мые права и/или разрешения. При этом обязательно следует различать эти поня­тия.

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

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

чснь прав является достаточно большим. Права могут быть изменены посредством применения соответствующих политик.

Термин разрешение (permission) обычно применяют по отношению к конкретным объектам, таким как файлы и каталоги, принтеры и некоторые другие. Можно го­ворить о разрешениях на чтение, на запись, на исполнение, на удаление и проч. Например, можно иметь разрешения на чтение и запуск некоторой программы, но не иметь разрешений на ее переименование и удаление.

Важно, что права имеют преимущество перед разрешениями. Например, если у некоторого пользователя нет разрешения «стать владельцем» того или иного фай­лового объекта, но при этом мы дадим ему право стать владельцем любого объекта, то он, дав запрос на владение упомянутым объектом, получит его в свою собствен­ность.

Модель безопасности Windows NT гарантирует, что не удастся получить доступ к ее объектам без того, чтобы предварительно пройти аутентификацию и авторизацию. Для того чтобы иметь право работать на компьютере, необходимо иметь учетную запись (account). Учетные записи хранятся в базе данных учетных записей, которая представлена файлом SAM (Security Account Management). Каждая учетная запись в базе данных идентифицируется не по имени, а по специальному системному иден­тификатору. Такой идентификатор в Windows NT называется идентификатором безопасности (Security IDentifier, SID). Подсистема безопасности этих операцион­ных систем гарантирует уникальность идентификаторов безопасности. Они генери­руются при создании новых учетных записей и никогда не повторяются. Имеются встроенные учетные записи, но они тоже уникальны. Помимо учетных записей пользователей имеются учетные записи групп. Учетные записи имеют и компьюте­ры. Идентификаторы несут в себе информацию о типе учетной записи.

Учетные записи могут быть объединены в группы. Имеются встроенные группы. Принадлежность учетной записи к одной из встроенных групп определяет полно­мочия (права, привилегии) пользователя при работе на этом компьютере. Напри­мер, члены встроенной группы администраторов имеют максимально возможные права при работе на компьютере (встроенная учетная запись администратора рав­носильна учетной записи суперпользователя в UNIX-системах).

Вновь создаваемые учетные записи групп (их называют группами безопасности) используются для определения разрешений на доступ к тем или иным объектам. Для этого каждый объект может иметь список управления доступом (Access Control List, ACL)1. Список ACL состоит из записей — АСЕ (Access Control Entry). Каж­дая запись списка состоит из двух полей. В первом поле указывается некий иден­тификатор безопасности. Во втором поле располагается битовая маска доступа, описывающая, какие разрешения указаны в явном виде, какие не запрещены, и какие запрещены в явном виде для этого идентификатора. При использовании файловой системы NTFS список ACL реально представлен списком DACL (Dis­cretionary Access Control List). Ранее (в главе 6) был изложен механизм работы

Основные особенности архитектуры - student2.ru ' На самом деле файловые объекты (файлы и каталоги с файлами) имеют списки управления досту­пом, только если они расположены па дисках с файловой системой NTFS.

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

разрешений NTFS, причем описаны разрешения как для прежней версии NTFS, использовавшиеся вплоть до Windows NT 4.0, так и для файловой системы NTFS5, которая появилась в Windows 20001. Здесь мы лишь заметим, что рекомендуется составлять списки управления доступом, пользуясь не учетными записями пользо­вателей, а учетными записями групп. Во-первых, это позволяет существенно со­кратить список управления доступом, поскольку групп обычно намного меньше, чем пользователей. Как результат, список будет намного короче, понятнее и удоб­нее для последующего редактирования. Во-вторых, в последующем можно будет создать нового пользователя (и не единожды) и добавить его в соответствующие группы, что практически автоматически определит его разрешения на те или иные объекты как члена определенных групп. Наконец, в-третьих, списрк будет быст­рее обрабатываться операционной системой.

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

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

Операционные системы Windows NT/2000/XP обеспечивают защиту на локаль­ном уровне. Это означает, что механизмы защиты работают на каждом компьюте­ре с такой операционной системой. Однако это имеет и обратную сторону. Дело в том, что учетные записи пользователей и групп локальны: они действуют только на том компьютере, где их создали. Если же есть необходимость обратиться к об­щим ресурсам компьютера через сеть, нужно, чтобы для пользователя, который выполняет такое обращение к удаленным объектам, была создана такая же учет­ная запись. Поскольку становится затруднительным обеспечить наличие учетных записей для каждого пользователя на всех тех компьютерах, с ресурсами которых ему необходимо работать, пользуясь вычислительной сетью, в свое время была предложена технология доменных сетей. В домене, который представляет собой множество компьютеров, должен быть выделен сервер со всеми учетными запися­ми этого домена. Такой сервер называют контроллером домена. Учетные записи домена2 в отличие от локальных учетных записей, имеющихся на каждом компью-

Основные особенности архитектуры - student2.ru ' В новых серверных операционных системах Windows 2003 Server используется новая версия системы управления файлами, которая обеспечивает существенное увеличение производительности при рабо­те с файлами. Версия файловой системы в этих операционных системах осталась прежней — NTFS5.

2 На контроллере домена, работающем под управлением Windows NT 4.0 Server, база с учетными за­писями домена по-прежнему представлена файлом SAM. На контроллерах домена, работающих под управлением Windows 2000/2003 Server, база с учетными записями домена находится в файле NTDS.DIT, поскольку организация доменов в этих операционных системах возможна только при установке службы Active Directory.

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

Основные особенности архитектуры - student2.ru тере с операционной системой типа Windows NT, являются перемещаемыми: они могут перемещаться с контроллера домена на любой другой компьютер этого до­мена. В результате, имея множество компьютеров, объединенных в домен, и кон­троллер домена, на котором созданы все необходимые учетные записи, мы можем использовать эти учетные записи для управления доступом к различным ресур­сам. Более того, мы можем контролировать использование этих ресурсов и регис­трировать попытки несанкционированного доступа к тем или иным объектам. Кон­троль за использованием прав и разрешений, а также их регистрация называется аудитом.

Наши рекомендации