Индекс
НазадОглавлениеВперед

Глава 5. Операционные системы Windows NT/2000

5.1. История и архитектура

Windows NT явилась продолжением фирмой Microsoft проекта OS/2, предпринятым фирмой Microsoft после того, как разошлись ее пути с IBM. В качестве руководителя проекта Windows NT был приглашен Д.Катлер, имеющий большой опыт в разработке операционных систем в фирме DEС (ОС VAX VMS).

С самого начала Windows NT планировалась как ОС, предназначенная для выполнения функций сервера. Windows NT является полностью 32-разрядной ОС с объектно-ориентированной структурой и строится на базе микроядра. Последнее обстоятельство позволило сделать ОС доступной на большом числе аппаратных платформ CISC- и RISC-процессоров, в том числе, и в симметричных многопроцессорных архитектурах. Однако, начиная с версии 4, Windows NT работает только на процессорной архитектуре Intel/Pentium. Архитектура ОС [10, 35] представлена на рисунке 5.1.


Рисунок 5.1 Архитектура Windows NT/2000

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

Строго говоря, Windows NT не является по-настоящему системой с микроядром, так как, по определению, в таких системах только компактное микроядро работает в привилегированном режиме. Здесь же помимо того, что разработчики называют "микроядром" ("ядро" на рис.5.1), в таком режиме работает и огромная испольнительная подсистема.

Часть системы, работающая в режиме ядра, состоит из нескольких слоев.

Уровень аппаратных абстракций виртуализирует аппаратные интерфейсы. При его создании ставилась цель подготовки процедур, которые позволяли бы единственному драйверу конкретного устройства поддерживать функционирование этого устройства на всех аппаратных платформах. Аппаратные абстракции скрывают от вышележащих частей ОС такие детали как интерфейс ввода-вывода, контроллеры прерываний и другие аппаратно-зависимые и специфические функции. Уровень аппаратных абстракций также обеспечивает программные механизмы управления и обмена данными между процессорами в симметричных многопроцессорных архитектурах. Ядро и драйверы устройств для выполнения аппаратно зависимых функций обращаются к уровню аппаратных абстракций, хотя начиная с версии 4.0, для повышения быстродействия допускается непосредственное взаимодействие драйвера с аппаратурой. Модуль уровня аппаратных абстракций требует перенастройки при изменении конфигурации оборудования.

5.2. Ядро и планирование процессов

Ядро осуществляет планирование действий процессора и синхронизацию работы процессов и нитей. Ядро является резидентным и непрерываемым. Ядро объектно-базировано, то есть обеспечивает низкоуровневую базу для определенных объектов ОС, которые могут использоваться компонентами высшего уровня. Объекты ядра делятся на две группы: объекты управления и объекты диспетчеризации. Основным оъектом управления является процесс, представляющий собой адресное пространство, набор доступных процессу объектов и совокупность нитей управления. Некоторые другие объекты управления: прерывание, процедура синхронного вызова, процедура отложенного вызова и т.д. Объекты диспетчеризации характеризуются сигнальными состояниями и управляют диспетчеризацией и синхронизацией операций. Примеры объектов диспетчеризации: нить, семафор, событие, взаимное исключение (mutex - для пользовательского режима и mutant - для режима ядра) и другие.

Ядро реализует основную политику планирования процессов и нитей (хотя в нее могут быть внесены изменения серверами подсистем). Всего в Windows NT имеется 32 градации приоритетов, разнесенные по 4 классам. При запуске процесс получает уровень приоритета, назначаемый по умолчанию его классу:

Общие правила диспетчеризации таковы:

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

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

Менеджер безопасности проводит политику защиты и аудита объектов на персональном компьютере (подробнее - см.ниже).

Менеджер процессов отслеживает объекты процессов и нитей. Фактически основная часть планирования процессов и нитей реализована в ядре, менеджер же процессов обеспечивает создание, уничтожение и протоколирование этих объектов, а также обеспечивает набор средств создания и использования нитей и процессов для конкретных подсистем сред. В Windows NT процессы не связываются родственными отношениями в структуру дерева (как, например, в Unix или в OS/2). Однако в Windows 2000 введен новый объект - задание, представляющий собой именованную группу процессов и позволяющий вести общее управление и учет для такой группы.

5.3. Адресные пространства

Менеджер виртуальной памяти выполняет формирование виртуального адресного пространства процесса и отображает виртуальные адреса в адресных пространствах процессов на физические страницы памяти. Структура виртуального адресного пространства пользовательского процесса показана на рисунке 5.2.


Рисунок 5.2 Виртуальное адресное пространство пользовательского процесса в Windows NT

Из 4 Гбайт виртуального адресного пространства для пользовательского процесса доступна нижняя половина за вычетом самых младших 64 Кбайт. В виртуальном адресном пространстве процесса реализована плоская модель памяти, качественно структура доступной для процесса памяти совпадает с таковой в Windows 9x, но в Windows NT адресные пространства процессов полностью изолированы друг от друга. Верхняя часть виртуального адресного пространства процесса, в которой находятся системные DLL, в Windows NT содержит не сами эти DLL, а только модули-заглушки. Обращение процесса к системе происходит в пределах адресного пространства процесса. Но такое обращение попадает к модулю-заглушке, который формирует сообщение-запрос к подсистеме-серверу на выполнение системного вызова. Средства вызова локальных процедур передают это сообщение процессу-серверу, они же передают ответ сервера в модуль-заглушку, а тот формирует отклик на системный вызов. У пользовательского процесса, таким образом, создается впечатление, что системный вызов был выполнен в пределах его адресного пространства, но если пользовательский процесс испортит верхнюю часть доступного ему адресного пространства, то он испортит только свои модули-заглушки и никак не повлияет на работу других процессов.

5.4. Ввод-вывод

Менеджер ввода-вывода обеспечивает независимый от устройств интерфейс ввода-вывода и отвечает за пересылку запросов на ввод-вывод соответствующим драйверам. Менеджер Ввода-Вывода поддерживает драйверы файловых систем, драйверы устройств и сетевые драйверы, обеспечивая для них однородную среду. Модель ввода-вывода Windows NT многоуровневая, каждый драйвер отвечает за логически законченный уровень работы. Самый нижний уровень составляют драйверы устройств. Другие драйверы являются надстройкой над драйверами устройств и не зависят от специфики работы конкретного устройства. Поддержка файловой системы отдельным драйвером в этой иерархии позволяет Windows NT работать с разными файловыми системами.

5.5. Процессы-серверы

Часть системы, работающая в пользовательском режиме, представлена процессами-серверами. Процессы-серверы выполняются каждый в своем адресном пространстве, полностью изолированном от пользовательских процессов и от других серверов. Серверу доступны все 4 Гбайта его виртуального адресного пространства. Процессы-серверы могут быть подсистемами сред или специальными серверами. Подсистемы сред обеспечивают для пользовательских процессов среды выполнения, соответствующие спецификациям тех или иных операционных систем. Подсистема работает в пользовательском режиме, но ее виртуальное адресное пространство полностью отделено от адресного пространства любого приложения. Взаимодействие между приложениями и подсистемами происходит только через вызовы локальных процедур, что делает процесс-сервер защищенным от клиентов. Основной и обязательной подсистемой является Win32, остальные среды могут устанавливаться по выбору. Подсистема Win32 обеспечивает выполнение приложений Windows NT и Windows 9x, а также эмулирует среды MS DOS и Windows 3.1. Среда Win32 обеспечивает наиболее полную функциональность, и другие серверы обращаются к ней для выполнения некоторых функций. Приложения MS DOS и Windows 3.1 выполняются в контексте процесса, являющегося Виртуальной Машиной MS DOS. Виртуальная Машина MS DOS - это процесс Win32, который эмулирует процессор Intel 8086, прерывания BIOS, прерывания MS DOS и системные функции Windows 3.1 и драйверы реального режима. Каждая Виртуальная Машина MS DOS выполняется в собственном изолированном виртуальном адресном пространстве и обеспечивает для выполняющихся в ней приложений адресное пространство, соответствующее MS DOS или Windows 3.1.

Специальными серверами являются службы Windows NT, такие как регистратор событий, подсистема безопасности, средства вызова удаленных процедур и т.п., а также компоненты промежуточного программного обеспечения фирмы Microsoft, устанавливаемые по выбору - такие как MS SQL Server, MS Transaction Server и т.п. Со временем значимость подсистем сред (кроме среды Win32) падает, так как Microsoft не ставит перед собой задачи поддержки приложений, разработанных для других сред, но значительно возрастает роль серверных процессов, в которых выполняются продукты семейства MS BackOffice.

5.6. Система безопасности

Windows NT с самого начала планировалась как многопользовательская система, поэтому средства аутентификации пользователей и авторизации доступа к ресурсам встроены в систему, в том числе, и на уровне ядра. На рисунке 5.3. показаны компоненты системы безопасности Windows NT (имеется в виду локальная безопасность, т.е. защита ресурсов на локальном компьютере).


Рисунок 5.3 Система безопасности Windows NT

Процесс входа в систему обеспечивает начало работы с системой как интерактивных пользователей, так и удаленных клиентов, обращающихся к серверу. Этот компонент не связан с безопасностью непосредственно, но обращается к Распорядителю локальной безопасности, который организует аутентификацию пользователя по имени и паролю. Бюджеты всех зарегистрированных пользователей сохраняются в Базе данных бюджетов, доступ к которой осуществляется только через Диспетчер бюджета безопасности. Кроме того, Распорядитель локальной безопасности управляет политикой локальной безопасности - разрешениями на доступ и ведет Базу данных локальной безопасности, а также управляет политикой контроля и регистрирует контрольные сообщения в Журнале безопасности.

Основную работу выполняет Менеджер безопасности в составе Исполнительной системы. Этот модуль проверяет права доступа к объектам по запросам других модулей Исполнительной системы (прежде всего - Менеджера объектов) и генерирует контрольные сообщения. Для получения информации о правах и передачи контрольных сообщений Менеджер безопасности взаимодействует с Распорядителем локальной безопасности.

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

Последний элемент определяет права, не связанные с отдельными объектами, например: возможность выполнять низкоуровневую отладку объектов, увеличивать приоритет процессов, изменять конфигурацию драйверов, работать с Журналом контроля и т.д. Пользователи могут входить в группы, в Windows NT существует несколько встроенных групп (например, Администраторы, Операторы сервера, Операторы архива и т.д.), которым некоторые специальные привилегии предоставляются по умолчанию.

Копия маркера доступа создается для каждого процесса данного пользователя. Однако, для работы в режиме клиент/сервер Windows NT использует так называемое воплощение прав. Суть воплощения состоит в том, что процесс-сервер (или его нить), выполняющий обслуживание клиента, выполняется с маркером доступа процесса-клиента.

Windows NT использует модель безопасности, основанную на списках контроля доступа: основная информация о возможностях доступа связывается с объектом, а не с пользователем. Все именованные и некоторые неименованные объекты имеют собственные дескрипторы безопасности в Базе данных локальной безопасности. В дескриптор безопасности входят:

Контролируемый список управления доступом состоит из элементов двух типов: "доступ разрешается" и "доступ запрещается". Каждый из элементов содержит идентификатор пользователя и маску доступа, кодирующую одну или несколько возможностей для данного пользователя. Для одного пользователя может быть несколько элементов в списке, описывающих его различные возможности, при просмотре списка эти возможности накапливаются.

Каждый тип объекта может иметь до 5 специфических возможностей - операций, выполняемых только для данного типа объекта. Кроме того, имеются стандартные возможности - операции, выполняемые для объектов любого типа, а именно:

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

Авторизация, то есть, проверка правильности доступа к объекту состоит из таких шагов.

  1. При обращении пользователя к объекту Менеджер безопасности создает запрашиваемую маску доступа, в ней кодируются те возможности, которые заданы в запросе.
  2. Менеджер безопасности поэлементно просматривает контролируемый список управления доступом. Если в списке находится элемент, содержащий идентификатор того пользователя, который выдал запрос, элемент обрабатывается.
  3. Если элемент имеет тип "доступ запрещается", то при совпадении хотя бы одной возможности в маске доступа элемента с возможностью в запрашиваемой маске доступа, доступ отклоняется. Все элементы типа "доступ запрещается" располагаются в начале списка, следовательно, обрабатываются в первую очередь.
  4. Если доступ отклонен, то проверяется, не содержит ли запрашиваемая маска только возможности чтения или записи и не является ли пользователь владельцем объекта. Если выполняются эти условия, то доступ предоставляется.
  5. Если элемент имеет тип "доступ разрешается", то ищутся совпадения возможностей в маске доступа элемента с возможностями в запрашиваемой маске доступа. Если достигнуто согласование, доступ предоставляется, в противном случае, просмотр списка продолжается.
  6. Если при достижении конца списка согласование не достигнуто, доступ отклоняется.

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

Windows NT предоставляет также возможность отслеживания событий, относящихся ко всей системе в целом. Различаются несколько категорий таких событий:

Перечень контролируемых событий - как системных, так и событий, связанных с отдельными объектами, - конфигурируется Администратором.

5.7. Файловая система NTFS

Механизм инсталлируемой файловой системы позволяет Windows NT работать с различными файловыми системами. Однако наиболее высокоэффективную работу вычислительных систем с несколькими жесткими дисками большого объема обеспечивает файловая система NTFS. Кроме того, NTFS поддерживает длинные имена файлов и обеспечивает надежное хранение и повышенные возможности для восстановления информации. NTFS в полной мере использует все средства контроля доступа, свойственные Windows NT как объектно-ориентированной системе.

В соответствии с общей объектно-ориентированной архитектурой Windows NT, каждый файл в NTFS представляется как объект, имеющий определенный набор атрибутов. К атрибутам относятся, например: имя файла, тип файла, временные отметки, дескриптор безопасности, индексная информация (для каталогов) и т.д. Данные файла также являются его атрибутом. Каждый файл в виде списка своих атрибутов представлен записью в специальном файле, называемом Главной Файловой Таблицей (MFT - Master File Table). Размер записи в MFT не фиксирован, но ограничен сверху (до 2 Кбайт). Примерная структура записи MFT показана на рисунке 5.4.


Рисунок 5.4 Структура записи MFT в файловой системе NTFS

Атрибуты файла, размещаемые непосредственно в записи MFT, называются резидентными. Так, имя файла - обязательно резидентный атрибут. Атрибуты, не поместившиеся в записи MFT, становятся нерезидентными, они размещаются в отдельных экстентах, а запись MFT содержит указатели на них.

В зависимости от размера файла, возможны следующие варианты его размещения (в порядке возрастания размера):

Подобным же, хотя и несколько отличным образом размещаются и каталоги:

Несколько первых записей MFT зарезервированы для системных нужд. Первая запись описывает сам файл MFT, вторая - его резервную копию. Адрес MFT и копии записаны в секторе начальной загрузки и продублированы в логическом центре диска. Вся системная информация представлена в виде файлов - записей MFT, хотя и скрытых от просмотра. Системными файлами являются:

Дисковая память в NTFS распределяется кластерами, размер кластера может выбираться.

Надежность NTFS обеспечивается прежде всего регистрацией транзакций. NTFS использует "ленивую" запись - занесение в кэш информации о любой транзакции. Параллельно, как фоновый процесс, эта информация записывается в файл регистрации транзакций. Каждые несколько секунд NTFS проверяет кэш, чтобы определить состояние отложенной записи, и фиксирует это состояние в файле регистрации как контрольную точку. При возникновении сбоя файловая система приводит свое состояние к последней контрольной точке, после чего обрабатывает записи регистрации транзакций, сделанные после фиксации контрольной точки: повторно выполняет все завершенные транзакции и отменяет (откатывает) незавершенные. Такая система гарантирует сохранение целостности тома, то есть, соответствие метаданных файловой системы ее действительному состоянию.

Для обеспечения надежности в отношении пользовательских данных в Windows NT имеется возможность программной поддержки технологий RAID. К таким средствам относятся:

NTFS совместима с файловыми системами FAT и HPFS. Для согласования с POSIX в NTFS включаются дополнительные средства, используемые в подсистеме выполнения POSIX-приложений.

Следует признать, что концепции, положенные в основу архитектуры Windows NT, являются изящными и хорошо продуманными и способны обеспечить как высокую функциональность и эффективность ОС, так и ее безопасность. Справедливые претензии пользователей к надежности и к уязвимости системы для хакерских атак объясняются, по мнению специалистов (см., например [4]), ошибками и небрежностью в реализации в основном системных и сетевых служб, но отчасти - и ядра системы. В старших версиях ОС разработчики с целью повышения быстродействия допускают нарушение некоторых концептуальных свойств системы (например, взаимодействия драйверов с оборудованием только через Уровень аппаратных абстракций, взаимодействия клиентов с сервером только через Вызов локальных процедур и т.п.), что снижает надежность системы.

Поскольку на момент создания Windows NT основные интересы фирмы Microsoft были сосредоточены на персональной сфере применения компьютеров первая версия этой ОС (v.3.1) не получила должного развития и поддержки. Начиная с версии 3.5, Windows NT попадает в число стратегических продуктов фирмы Microsoft, широкое распространение получает версия 4, а версия 5, переименованная в Windows 2000, объявляется Microsoft единственным стратегическим продуктом в сфере ОС. Предполагалось, что Windows 2000 будет существовать в различных редакциях - от "тонкого" клиента до корпоративного сервера, и, по замыслу Microsoft, станет единственной операционной системой фирмы. Однако, на сегодняшний день (середина 2001 г.) на рынке всерьез рассматриваются только ее серверные редакции. Персональные редакции по объему потребляемых ресурсов пока не могут конкурировать с ОС семейства Windows 9x, хотя отличаются от них значительно большей надежностью. Большинство производителей промышленного промежуточного и прикладного программного обеспечения (например, IBM, Oracle, Inprise) объявили о "готовности своих продуктов к Windows 2000" практически в день ее появления в продаже. Но они не рекомендуют своим покупателям спешить с миграцией на нее с Windows NT 4, предлагая подождать, пока в Windows 2000 не будут исправлены основные ошибки. Однако, следует ожидать, что в ближайшие 2-3 года такая миграция произойдет повсеместно, Windows 2000 как серверная ОС продолжит конкуренцию с клонами Unix.

Судя по последней (начало 2002 г.) "смене вывески", фирма Microsoft намерена разделить все свои ОС на два семейства продуктов - Windows XP и Windows .NET Server. Оба семейства должны базироваться на ядре Windows 2000. Windows XP масштабируется от версии Embedded до Server. Windows .NET Server представляет серверы промышленного масштаба, обеспечивающие концепцию Microsoft .NET. Концепция .NET представляет собой архитектуру взаимодействия в глобальном информационном пространстве, на основе которой фирма Microsoft намерена вступить борьбу с промышленными стандартами интероперабельности и с фирмами, обеспечивающими взаимодействие в глобальной сети (Sun Microsystems, IBM и др.).

Контрольные вопросы

  1. Является ли Windows NT/2000 ОС на базе микроядра?
  2. Какие тенденции архитектуры ОС реализованы в Windows NT/2000?
  3. Назовите основные компоненты Windows NT/2000 и их функции.
  4. Как выполняется планирование процессов в Windows NT/2000?
  5. Какова структура адресного пространства процесса в Windows NT/2000?
  6. Почему можно считать, что память в Windows NT/2000 защищена значительно лучше, чем в Windows 9x или в OS/2?
  7. Что такое процессы-серверы в Windows NT/2000? Какие существуют типы процессов-серверов?
  8. Как взаимодействуют компоненты Windows NT/2000 в системе безопасности?
  9. Опишите сценарий процесса авторизации в Windows NT/2000.
  10. В чем преимущества файловой системы NTFS по сравнению с FAT? по сравнению с HPFS?

НазадОглавлениеВперед
Индекс