Рефераты

Сетевые ОС

"состояния связей" (Link State Algorithms), хорошо работающем в сетях

больших размеров за счет того, что маршрутизаторы обмениваются только

информацией о изменениях в состоянии связей с ближайшими соседями, что

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

векторными протоколами, к которым относится протокол RIP. К протоколам

"состояния связей" относится и сравнительно новый протокол OSPF,

разработанный как часть стека Internet.

Одновременно с разработкой протокола NLSP фирма Novell предприняла и

другие шаги по улучшению своего стека протоколов в условиях работы в

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

протокола IPX в глобальных сетях, при поддержке всеми узлами сети службы

NDS отпадает необходимость в другом широковещательном протоколе - протоколе

SAP.

4 Семейство сетевых ОС компании Microsoft

1 Сетевые продукты Microsoft

В 1984 году Microsoft выпустила свой первый сетевой продукт, называемый

Microsoft Networks, который обычно неформально называют MS-NET. Некоторые

концепции, заложенные в MS-NET, такие как введение в структуру базовых

компонент - редиректора и сетевого сервера - успешно перешли в LAN Manager,

а затем и в Windows NT.

Microsoft все еще поставляет свою сетевую ОС LAN Manager. Большое

количество независимых поставщиков имеют лицензии на эту ОС и поддерживают

свои собственные версии LAN Manager как часть своих сетевых продуктов. В

число этих компаний входят такие известные фирмы как AT&T и Hewlett-

Packard. LAN Manager требует установки на файл-сервере операционной системы

OS/2, рабочие станции могут работать под DOS, Windows или OS/2. OS/2 - это

операционная система, реализующая истинную многозадачность, работающая в

защищенном режиме микропроцессоров x86 и выше. LAN Manager использует 32-х

битную версию файловой системы OS/2, называемую HPFS, которая

оптимизирована для работы на файл-сервере за счет кэширования каталогов и

данных. LAN Manager - это первая сетевая ОС, разработанная для поддержки

среды клиент-сервер. Ключевыми компонентами LAN Manager являются редиректор

и сервер. Особенно эффективно LAN Manager поддерживает архитектуру клиент-

сервер для систем управления базами данных. LAN Manager разрешает рабочим

станциям под OS/2 поддерживать сетевой сервис по технологии "равный-с-

равным". Это означает, что рабочая станция может выполнять функции сервера

баз данных, принт-сервера или коммуникационного сервера. Ограничением

является то, что только один пользователь, кроме владельца этой рабочей

станции, имеет доступ к такому одноранговому сервису.

Для работы в небольшой сети фирма Microsoft предлагает компактную, не

требующую значительных аппаратных или программных затрат операционную

систему Windows for Workgroups. Эта операционная система позволяет

организовать сеть по схеме "равный-с-равным", при этом нет необходимости

приобретать специальный компьютер для работы в качестве сетевого сервера.

Эта операционная система особенно подходит для решения сетевых задач в

коллективах, члены которого ранее широко использовали Windows 3.1. В

Windows for Workgroups достигнута высокая производительность сетевой

обработки за счет того, что все сетевые драйверы являются 32-х разрядными

виртуальными драйверами.

С середины 1993 года Microsoft начала выпуск новых операционных систем

"новой технологии" (New Technology - NT) Windows NT.

В сентябре 1995 года компания Microsoft выпустила еще одну новую

операционную систему Windows 95 (кодовое название Chicago), предназначенную

для замены Windows 3.1 и Windows for Workgroups 3.11 в настольных

компьютерах с процессорами Intel x86.

В конце 88-го года Microsoft поручила Дэвиду Катлеру (David Cutler)

возглавить новый проект в области программного обеспечения: создать новую

ОС фирмы Microsoft для 90-х годов. (Дэвид Катлер - главный консультант

фирмы DEC, который 17 лет проработал там, разрабатывая ОС и компиляторы:

VAX/ VMS, ОС для MicroVAX I, OS RSX-11M, компиляторы VAX PL/1, VAX C). Он

собрал команду инженеров для разработки ОС новой технологии (New Technology

- NT).

Первоначально планировалось разработать NT с пользовательским и

программным (API) интерфейсами в стиле OS/2, однако OS/2 плохо продавалась,

а Windows 3.0 имела большой и постоянный успех на рынке. Увидев рыночные

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

несовместимых систем, Microsoft решила изменить свой курс и направить своих

инженеров в сторону стратегии единой цельной операционной системы. Эта

стратегия состоит в том, чтобы разрабатывать семейство базирующихся на

Windows операционных систем, которые охватывали бы множество типов

компьютеров, от самых маленьких ноутбуков до самых больших

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

поколение Windows-систем, занимает самое высокое место в семействе Windows.

Она поддерживает графический интерфейс (GUI) пользователя Windows, а также

является первой базирующейся на Windows операционной системой фирмы

Microsoft, поддерживающей Win32 API, 32-х битный программный интерфейс для

разработки новых приложений. Win32 API делает доступными для приложений

улучшенные свойства ОС, такие как многонитевые процессы, синхронизацию,

безопасность, I/O, управление объектами.

В июле 1993 года появились первые ОС семейства NT - Windows NT 3.1 и

Windows NT Advanced Server 3.1.

2 Windows NT 4.0

При разработке Windows NT 4.0 Microsoft решила пожертвовать стабильностью

ради производительности. С этой целью были внесены изменения в архитектуру:

библиотеки менеджера окон и GDI, а также драйверы графических адаптеров

были перенесены из пользовательского режима в режим ядра. Это изменение

означает некоторый отход от принятой в предыдущих версиях Windows NT 3.х

концепции микроядра.

Перенос графической библиотеки и драйверов в область ядра повышает скорость

выполнения графического ввода-вывода. Эти изменения особенно сказались на

скорости выполнения приложений Win32, в то время как приложения Windows-16

и DOS-ские графические приложения работают примерно также, как и в версии

3.5.

В то же время описанные изменения делают операционную систему в принципе

менее надежной. Действительно, поскольку программное обеспечение

графических адаптеров, как правило, разрабатывается фирмами-производителями

этого оборудования и это программное обеспечение часто меняется (вместе с

оборудованием), то от него трудно ожидать той надежности, которая требуется

для модулей операционной системы.

Кроме архитектурных в Windows NT 4.0 имеются и другие не менее кардинальные

изменения:

Средства взаимодействия с NetWare модифицированы - Gateway и клиент NCP

поддерживают теперь NDS.

В стандартную поставку включен Internet Information Server и сервер DNS.

DNS взаимодействует с WINS и DHCP-серверами. Эта комбинация реализует

Dynamic DNS, который разрешает верхние уровни доменного имени и передает

имя для окончательного разрешения службе WINS.

Поддержка многопротокольной маршрутизации.

Сервер может работать как транслирующий агент протокола BOOTP/DHCP , что

позволяет компьютеру передавать сообщения BOOTP/DHCP по IP-сети.

Новые административные средства Windows NT могут работать удаленно на

клиентах Windows 95. Кроме того, Windows NT Server обеспечивает сервис

удаленной загрузки для клиентов Windows 95. (Это полезно для бездисковых

рабочих станций.)

Интерфейс в стиле Windows 95.

Подсистема обработки сообщений Microsoft Windows Messaging Subsystem

позволяет получать и отправлять почту из приложений.

В Windows NT 4.0 появился эмулятор Intel'овских процессоров для RISC-

платформ.

Но не известно как скажется на быстродействии распределенная версия OLE,

названная Distributed COM (в Windows 95 добавление OLE снизило

производительность).

Microsoft добавила в Windows NT 4.0 много технических средств, чтобы

сделать эту операционную систему пригодной для использования в качестве

платформы для Web-сервера.

Одно из усовершенствований связано с тем, что повышающаяся роль Internet'а

и клиент-серверных систем ведет к росту числа мобильных пользователей.

Microsoft в связи с этим улучшила RAS ( улучшила поддержку ISDN) и

предоставила средства безопасной работы с RAS через Internet. В RAS

реализованы протоколы PPTP (создает зашифрованный трафик через Internet) и

Multilink PPP (позволяет объединять несколько каналов в один). Клиентами

могут быть Windows NT 4.0 Workstation или Windows 95. Важным аргументом в

борьбе за Internet является включение в стандартную поставку Windows NT 4.0

Web-сервера производства Microsoft - Internet Information Server,

возможности которого сравнимы, а по ряду тестов и превосходят аналогичный

популярный продукт Server Netscape для NT.

3 Области использования Windows NT

Windows NT Workstation, прежде всего, может использоваться как клиент в

сетях Windows NT Server, а также в сетях NetWare, UNIX, Vines. Она может

быть рабочей станцией и в одноранговых сетях, выполняя одновременно функции

и клиента, и сервера. Windows NT Workstation может применяться в качестве

ОС автономного компьютера при необходимости обеспечения повышенной

производительности, секретности, а также при реализации сложных графических

приложений, например, в системах автоматизированного проектирования.

Windows NT Server может быть использован прежде всего как сервер в

корпоративной сети. Здесь весьма полезной оказывается его возможность

выполнять функции контроллера доменов, позволяя структурировать сеть и

упрощать задачи администрирования и управления. Он используется также в

качестве файл-сервера, принт-сервера, сервера приложений, сервера

удаленного доступа и сервера связи (шлюза). Кроме того, Windows NT Server

может быть использован как платформа для сложных сетевых приложений,

особенно тех, которые построены с использованием технологии клиент-сервер.

Так, под управлением Windows NT Server может работать сервер баз данных

Microsoft SQL Server, а также серверы баз данных других известных фирм,

такие как Oracle и Sybase, Adabas и InterBase.

На платформе Windows NT Server может быть установлена новая мощная система

администрирования Microsoft System Management Server, функцией которой

является инвентаризация аппаратной и программной конфигурации компьютеров

сети, автоматическая установка программных продуктов на рабочие станции,

удаленное управление любым компьютером и мониторинг сети.

Windows NT Server может использоваться как сервер связи с мейнфреймам. Для

этого создан специальный продукт Microsoft SNA Server, позволяющий легко

объединить в одной сети IBM PC-совместимые рабочие станции и мощные

мейнфреймы.

Наконец, Windows NT Server является платформой для нового производительного

почтового сервера Microsoft Exchange.

4 Концепции Windows NT

1 Структура: NT executive и защищенные подсистемы

При разработке структуры Windows NT была в значительной степени

использована концепция микроядра. В соответствии с этой идеей ОС разделена

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

сервисных функций - например, сервис памяти, сервис по созданию процессов,

или сервис по планированию процессов. Каждый сервер выполняется в

пользовательском режиме, выполняя цикл проверки запроса от клиента на одну

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

ОС, либо прикладная программа, запрашивает сервис, посылая сообщение на

сервер. Ядро ОС (или микроядро), работая в привилегированном режиме,

доставляет сообщение нужному серверу, затем сервер выполняет операцию,

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

Структурно Windows NT может быть представлена в виде двух частей: часть

операционной системы, работающая в режиме пользователя, и часть

операционной системы, работающая в режиме ядра (рисунок 8.1).

Часть Windows NT, работающая в режиме ядра, называется executive -

исполнительной частью. Она включает ряд компонент, которые управляют

виртуальной памятью, объектами (ресурсами), вводом-выводом и файловой

системой (включая сетевые драйверы), взаимодействием процессов и частично

системой безопасности. Эти компоненты взаимодействуют между собой с помощью

межмодульной связи. Каждая компонента вызывает другие с помощью набора

тщательно специфицированных внутренних процедур.

Вторую часть Windows NT, работающую в режиме пользователя, составляют

серверы - так называемые защищенные подсистемы. Серверы Windows NT

называются защищенными подсистемами, так как каждый из них выполняется в

отдельном процессе, память которого отделена от других процессов системой

управления виртуальной памятью NT executive. Так как подсистемы

автоматически не могут совместно использовать память, они общаются друг с

другом посредством посылки сообщений. Сообщения могут передаваться как

между клиентом и сервером, так и между двумя серверами. Все сообщения

проходят через исполнительную часть Windows NT. Ядро Windows NT планирует

нити защищенных подсистем точно так же, как и нити обычных прикладных

процессов.

[pic]

Рис. 8.1. Структура Windows NT

Поддержку защищенных подсистем обеспечивает исполнительная часть - Windows

NT executive, которая работает в пространстве ядра и никогда не

сбрасывается на диск. Ее составными частями являются:

Менеджер объектов. Создает, удаляет и управляет объектами NT executive -

абстрактными типами данных, используемых для представления ресурсов

системы.

Монитор безопасности. Устанавливает правила защиты на локальном компьютере.

Охраняет ресурсы операционной системы, выполняет защиту и регистрацию

исполняемых объектов.

Менеджер процессов. Создает и завершает, приостанавливает и возобновляет

процессы и нити, а также хранит о них информацию.

Менеджер виртуальной памяти.

Подсистема ввода-вывода. Включает в себя следующие компоненты:

менеджер ввода-вывода, предоставляющий средства ввода-вывода, независимые

от устройств;

файловые системы - NT-драйверы, выполняющие файл-ориентированные запросы на

ввод-вывод и транслирующие их в вызовы обычных устройств;

сетевой редиректор и сетевой сервер - драйверы файловых систем, передающие

удаленные запросы на ввод-вывод на машины сети и получающие запросы от них;

драйверы устройств NT executive - низкоуровневые драйверы, которые

непосредственно управляют устройством;

менеджер кэша, реализующий кэширование диска.

Исполнительная часть, в свою очередь, основывается на службах нижнего

уровня, предоставляемых ядром (его можно назвать и микроядром) NT. В

функции ядра входит:

планирование процессов,

обработка прерываний и исключительных ситуаций,

синхронизация процессоров для многопроцессорных систем,

восстановление системы после сбоев.

Ядро работает в привилегированном режиме и никогда не удаляется из памяти.

Обратиться к ядру можно только посредством прерывания. Ядро расположено над

уровнем аппаратных абстракций (Hardware Abstraction Level HAL), который

концентрирует в одном месте большую часть машинно-зависимых процедур. HAL

располагается между NT executive и аппаратным обеспечением и скрывает от

системы такие детали, как контроллеры прерываний, интерфейсы ввода/вывода и

механизмы взаимодействия между процессорами. Такое решение позволяет легко

переносить Windows NT с одной платформы на другую путем замены только слоя

HAL.

При создании NT разработчики руководствовались задачами улучшения

производительности и сетевых возможностей, а также требованием поддержки

определенного набора прикладных сред. Эта цель была достигнута продуманным

разделением функций между модулями ядра и остальными модулями. Например,

передача данных в файловую систему и по сети производится быстрее в

пространстве ядра, поэтому внутри ядра NT выделены буфера для небольших по

объему (от 16 до 32 Кб) операций чтения и записи, являющихся типичными для

приложений клиент-сервер и распределенных приложений. Размещение этих

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

микроядра NT, но соответствует цели создания NT.

Защищенные подсистемы Windows NT работают в пользовательском режиме и

создаются Windows NT во время загрузки операционной системы. Сразу после

создания они начинают бесконечный цикл своего выполнения, отвечая на

сообщения, поступающие к ним от прикладных процессов и других подсистем.

Среди защищенных подсистем можно выделить подкласс, называемый подсистемами

окружения. Подсистемы окружения реализуют интерфейсы приложений

операционной системы (API). Другие типы подсистем, называемые интегральными

подсистемами, исполняют необходимые операционной системе задачи. Например,

большая часть системы безопасности Windows NT реализована в виде

интегральной подсистемы, сетевые серверы также выполнены как интегральные

подсистемы.

Наиболее важной подсистемой окружения является Win32 - подсистема, которая

обеспечивает доступ для приложений к 32-bit Windows API. Дополнительно эта

система обеспечивает графический интерфейс с пользователем и управляет

вводом/выводом данных пользователя. Также поддерживаются подсистемы POSIX,

OS/2,16-разрядная Windows и MS-DOS.

Каждая защищенная подсистема работает в режиме пользователя, вызывая

системный сервис NT executive для выполнения привилегированных действий в

режиме ядра. Сетевые серверы могут выполняться как в режиме пользователя,

так и в режиме ядра, в зависимости от того, как они разработаны.

Подсистемы связываются между собой путем передачи сообщений. Когда,

например, пользовательское приложение вызывает какую-нибудь API-процедуру,

подсистема окружения, обеспечивающая эту процедуру, получает сообщение и

выполняет ее либо обращаясь к ядру, либо посылая сообщение другой

подсистеме. После завершения процедуры подсистема окружения посылает

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

другая деятельность защищенных подсистем невидима для пользователя.

Основным средством, скрепляющим все подсистемы Windows NT в единое целое,

является механизм вызова локальных процедур (Local Procedure Call - LPC).

LPC представляет собой оптимизированный вариант более общего средства -

удаленного вызова процедур (RPC), которое используется для связи клиентов и

серверов, расположенных на разных машинах сети.

Средства LPC поддерживают несколько способов передачи данных между

клиентами и серверами: один обычно используется для передачи коротких

сообщений, другой - для длинных сообщений, а третий оптимизирован

специально для использования подсистемой Win32. Каждая подсистема

устанавливает порт - канал связи, посредством которого с ней могут

связываться другие процессы. Порты реализуются как объекты.

Windows NT использует защищенные подсистемы для того, чтобы:

Обеспечить несколько программных интерфейсов (API), по возможности не

усложняя при этом базовый программный код (NT executive).

Изолировать базовую операционную систему от изменений или расширений в

поддерживаемых API.

Объединить часть глобальных данных, требующихся всем API, и в то же время

отделить данные, использующиеся каждым отдельным API от данных,

использующихся другими API.

Защитить окружение каждого API от приложений, а также от окружений других

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

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

Таким образом, реализация частей ОС в виде серверов, выполняющихся в режиме

пользователя, является важнейшей частью проекта Windows NT и оказывает

глубокое воздействие на все функционирование системы.

Микроядро NT служит, главным образом, средством поддержки для переносимой

основной части ОС - набора пользовательских сред. Концентрация машинно-

зависимых программ внутри микроядра делает перенос NT на разнообразные

процессоры относительно легким. Но в то время, как некоторые микроядра

(Mach и Chorus) предполагается поставлять в качестве самостоятельного

программного продукта, из операционной системы Windows NT ядро вряд ли

может быть вычленено для отдельного использования. Это является одной из

причин того, что некоторые специалисты не считают Windows NT истинно

микроядерной ОС в том смысле, в котором таковыми являются Mach и Chorus. Те

же критики отмечают также, что NT не исключает, как это положено, все

надстроенные службы из пространства ядра и что драйверы устройств в NT по

минимуму взаимодействуют с ядром, предпочитая работать непосредственно с

лежащим ниже слоем аппаратной абстракции HAL.

2 Множественные прикладные среды

При разработке NT важнейшим рыночным требованием являлось обеспечение

поддержки по крайней мере двух уже существующих программных интерфейсов

OS/2 и POSIX, а также возможности добавления других API в будущем.

Заметим, что для того, чтобы программа, написанная для одной ОС, могла быть

выполнена в рамках другой ОС, недостаточно лишь обеспечить совместимость

API. Кроме этого, необходимо обеспечить ей "родное" окружение: структуру

процесса, средства управления памятью, средства обработки ошибок и

исключительных ситуаций, механизмы защиты ресурсов и семантику файлового

доступа. Отсюда ясно, что поддержка нескольких прикладных программных сред

является очень сложной задачей, тесно связанной со структурой операционной

системы. Эта задача была успешно решена в Windows NT, при этом в полной

мере был использован опыт разработчиков ОС Mach из университета Карнеги-

Меллона, которые смогли в своей клиент-серверной реализации UNIX'а отделить

базовые механизмы операционной системы от серверов API различных ОС.

Windows NT поддерживает пять прикладных сред операционных систем: MS-DOS,

16-разрядный Windows, OS/2 1.x, POSIX и 32-разрядный Windows (Win32). Все

пять прикладных сред реализованы как подсистемы окружения. Каждая работает

в собственном защищенном пользовательском пространстве. Подсистема Win32

обеспечивает поддержку дисплея, клавиатуры и мыши для четырех оставшихся

подсистем.

16-битовые приложения DOS и Windows работают на VDM (virtual DOS machines -

виртуальные машины DOS), каждая из которых эмулирует полный 80x86 процессор

с MS-DOS. В NT VDM является приложением Win32, значит, как и обычные модули

прикладных сред для UNIX, приложения DOS и 16-битовой Windows расположены в

слое непосредственно над подсистемой Win32.

Подсистемы OS/2 и POSIX построены по-другому. В качестве полноценных

подсистем NT они могут взаимодействовать с подсистемой Win32 для получения

доступа к вводу и выводу, но также могут обращаться непосредственно к

исполнительной системе NT за другими средствами операционной системы.

Подсистема OS/2 может выполнять многие имеющиеся приложения OS/2

символьного режима, включая OS/2 SQL Server, и поддерживает именованные

каналы и NetBIOS.

Однако возможности подсистемы POSIX весьма ограничена, несмотря на

непосредственный доступ ее к службам ядра. Приложения POSIX должны быть

откомпилированы специально для Windows NT. NT не поддерживает двоичный код,

предназначенный для других POSIX-совместимых систем, таких как UNIX. К тому

же подсистема POSIX NT не поддерживает непосредственно печать, не

поддерживает сетевой доступ, за исключением доступа к удаленным файловым

системам, и не поддерживает многие средства Win32, например, отображение на

память файлов и графику.

[pic]

Рис. 8.2. Реализация множественных прикладных сред в Windows NT

На рисунке 8.2 показана структура, обеспечивающая в Windows NT поддержку

множественных прикладных сред.

NT executive выполняет базовые функции операционной системы и является той

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

приложений. Все подсистемы равноправны и могут вызвать "родные" функции NT

для создания соответствующей среды для своих приложений.

Каждая подсистема окружения имеет свое представление о том, что такое,

например, процесс или описатель файла, поэтому структуры данных,

используемые в каждом окружении, могут не совпадать. Следовательно, как

только подсистема Win32 передала прикладной процесс другой подсистеме

окружения, данное приложение становится клиентом этой подсистемы вплоть до

завершения процесса. При этом подсистема Win32 перенаправляет входные

сообщения от пользователя этому приложению, а также отображает вывод

приложения на экране.

3 Объектно-ориентированный подход

Хотя NT и не является полностью объектно-ориентированной, в ее основе лежат

объекты. Единообразная форма именования, совместного использования и учета

системных ресурсов, простой и дешевый способ обеспечения безопасности

системы и ее модификации - все эти преимущества могут быть достигнуты при

использовании объектной модели.

В Windows NT любой ресурс системы, который одновременно может быть

использован более чем одним процессом, включая файлы, совместно

используемую память и физические устройства, реализован в виде объекта и

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

необходимо внести в операционную систему в процессе ее эксплуатации. Если,

скажем, изменилось что-то в аппаратуре, то все, что необходимо сделать -

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

ресурсов, то надо добавить только новый объект, не изменяя при этом

остального кода операционной системы.

Наиболее фундаментальное отличие между объектом и обыкновенной структурой

данных заключается в том, что внутренняя структура данных объекта скрыта от

наблюдения. Вы должны вызвать объектную функцию для того, чтобы получить

данные из объекта или поместить данные в объект. Вы не можете

непосредственно изменять данные, находящиеся внутри объекта. Это отделяет

средства реализации объекта от кода, который только использует его, такая

техника позволяет легко изменять в последствии реализацию объектов.

Группа разработчиков NT executive решила использовать объекты для

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

централизованные средства для выполнения трех важных ( и часто

утомительных) задач ОС:

Поддержка воспринимаемых человеком имен системных ресурсов;

Разделение ресурсов и данных между процессами;

Защита ресурсов от несанкционированного доступа.

Не все структуры данных в NT executive являются объектами. Объектами

сделаны только такие данные, которые нужно разделять, защищать, именовать

или делать видимыми для программ пользовательского режима ( с помощью

системных функций). Структуры, которые используются только одним

компонентом executive для выполнения внутренних функций, не являются

объектами.

Несмотря на всестороннее использование объектов для представления

разделяемых ресурсов, Windows NT не является объектно-ориентированной

системой в строгом смысле. Большая часть кода операционной системы написана

на С с целью обеспечения переносимости. Несмотря на то, что С не

поддерживает непосредственно объектно-ориенти-

рованные конструкции, такие как динамическое связывание типов данных,

полиморфные функции или наследование классов, эти инструментальные средства

были использованы из-за их широкой распространенности.

Менеджер объектов - это компонента NT executive, которая ответственна за

создание, удаление, защиту и слежение за NT-объектами. Менеджер объектов

централизует операции управления ресурсами, которые в противном случае

будут разбросаны по всей ОС.

Менеджер объектов NT выполняет следующие функции:

Выделяет память для объекта.

Присоединяет к объекту так называемый дескриптор безопасности, который

определяет, кому разрешено использовать объект, и что они могут с ним

делать.

Создает и манипулирует структурой каталога объектов, в котором хранятся

имена объектов.

Создает описатель объекта и возвращает его вызывающему процессу.

Процессы пользовательского режима, включая подсистемы окружения, должны

иметь описатель объекта перед тем, как их нити смогут использовать этот

объект. Использование описателей для работы с системными ресурсами не

является новой идеей. Например, библиотеки С и Паскаля (а также других

языков) возвращают описатели для открытых файлов. Аналогично приложения

Win32 используют различные типы описателей для управления окнами, курсором

мыши, иконками. В обоих случаях описатели служат косвенными указателями на

системные ресурсы; эта косвенность предохраняет прикладные программы от

рутинной работы непосредственно с системными структурами данных.

Каждый NT-объект является объектом определенного типа. Тип определяет

данные, которые хранит объект, и "родные" системные функции, которые могут

к нему применяться. Для того, чтобы управлять различными объектами

единообразно, менеджер объектов требует, чтобы каждый объект содержал

несколько полей стандартной информации в определенном месте объекта. До тех

пор, пока эти данные имеются, менеджер объектов не заботится о том, что еще

хранится в объекте. Каждый объект состоит из двух частей - заголовка

объекта и тела объекта, которые содержат стандартные и переменные данные

объекта соответственно. Менеджер объектов работает с заголовком объекта, а

другие компоненты executive работают с телами объектов тех типов, которые

они сами создают. Заголовок объекта используется менеджером без учета типа

объекта. В заголовке объекта любого типа содержится имя, каталог,

дескриптор безопасности, квоты на использование ресурсов, счетчик открытых

описателей, база данных открытых описателей, признак постоянный/временный,

режим пользователя/ядра, указатель на тип объекта.

Кроме заголовка объекта, каждый объект имеет тело объекта, формат и

содержание которого уникально определяется типом этого объекта; у всех

объектов одного и того же типа одинаковый формат тела. При создании объекта

исполнительная часть может оперировать данными в телах всех объектов этого

типа.

4 Процессы и нити

В разных ОС процессы реализуются по-разному. Эти различия заключаются в

том, какими структурами данных представлены процессы, как они именуются,

какими способами защищены друг от друга и какие отношения существуют между

ними. Процессы Windows NT имеют следующие характерные свойства:

Процессы Windows NT реализованы в форме объектов, и доступ к ним

осуществляется посредством службы объектов.

Процесс Windows NT имеет многонитевую организацию.

Как объекты-процессы, так и объекты-нити имеют встроенные средства

синхронизации.

Менеджер процессов Windows NT не поддерживает между процессами отношений

типа "родитель-потомок".

В любой системе понятие "процесс" включает следующее:

исполняемый код,

собственное адресное пространство, которое представляет собой совокупность

виртуальных адресов, которые может использовать процесс,

ресурсы системы, такие как файлы, семафоры и т.п., которые назначены

процессу операционной системой.

хотя бы одну выполняемую нить.

Адресное пространство каждого процесса защищено от вмешательства в него

любого другого процесса. Это обеспечивается механизмами виртуальной памяти.

Операционная система, конечно, тоже защищена от прикладных процессов. Чтобы

выполнить какую-либо процедуру ОС или прочитать что-либо из ее области

памяти, нить должна выполняться в режиме ядра. Пользовательские процессы

получают доступ к функциям ядра посредством системных вызовов. В

пользовательском режиме выполняются не только прикладные программы, но и

защищенные подсистемы Windows NT.

В Windows NT процесс - это просто объект, создаваемый и уничтожаемый

менеджером объектов. Объект-процесс, как и другие объекты, содержит

заголовок, который создает и инициализирует менеджер объектов. Менеджер

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

обеспечивает системный сервис, который восстанавливает и изменяет эти

атрибуты.

В число атрибутов тела объекта-процесса входят:

Идентификатор процесса - уникальное значение, которое идентифицирует

процесс в рамках операционной системы.

Токен доступа - исполняемый объект, содержащий информацию о безопасности.

Базовый приоритет - основа для исполнительного приоритета нитей процесса.

Процессорная совместимость - набор процессоров, на которых могут

выполняться нити процесса.

Предельные значения квот - максимальное количество страничной и

нестраничной системной памяти, дискового пространства, предназначенного для

выгрузки страниц, процессорного времени - которые могут быть использованы

процессами пользователя.

Время исполнения - общее количество времени, в течение которого выполняются

все нити процесса.

Напомним, что нить является выполняемой единицей, которая располагается в

адресном пространстве процесса и использует ресурсы, выделенные процессу.

Подобно процессу нить в Windows NT реализована в форме объекта и

управляется менеджером объектов.

Объект-нить имеет следующие атрибуты тела:

Идентификатор клиента - уникальное значение, которое идентифицирует нить

при ее обращении к серверу.

Контекст нити - информация, которая необходима ОС для того, чтобы

продолжить выполнение прерванной нити. Контекст нити содержит текущее

состояние регистров, стеков и индивидуальной области памяти, которая

используется подсистемами и библиотеками.

Динамический приоритет - значение приоритета нити в данный момент.

Базовый приоритет - нижний предел динамического приоритета нити.

Процессорная совместимость нитей - перечень типов процессоров, на которых

может выполняться нить.

Время выполнения нити - суммарное время выполнения нити в пользовательском

режиме и в режиме ядра, накопленное за период существования нити.

Состояние предупреждения - флаг, который показывает, что нить должна

выполнять вызов асинхронной процедуры.

Счетчик приостановок - текущее количество приостановок выполнения нити.

Кроме перечисленных, имеются и некоторые другие атрибуты.

Как видно из перечня, многие атрибуты объекта-нити аналогичны атрибутам

объекта-процесса. Весьма сходны и сервисные функции, которые могут быть

выполнены над объектами-процессами и объектами-нитями: создание, открытие,

завершение, приостановка, запрос и установка информации, запрос и установка

контекста и другие функции.

5 Алгоритм планирования процессов и нитей

В Windows NT реализована вытесняющая многозадачность, при которой

операционная система не ждет, когда нить сама захочет освободить процессор,

а принудительно снимает ее с выполнения после того, как та израсходовала

отведенное ей время (квант), или если в очереди готовых появилась нить с

более высоким приоритетом. При такой организации разделения процессора ни

одна нить не займет процессор на очень долгое время.

[pic]

Рис. 8.3. Граф состояний нити

В ОС Windows NT нить в ходе своего существования может иметь одно из шести

состояний (рисунок 8.3). Жизненный цикл нити начинается в тот момент, когда

программа создает новую нить. Запрос передается NT executive, менеджер

процессов выделяет память для объекта-нити и обращается к ядру, чтобы

инициализировать объект-нить ядра. После инициализации нить проходит через

следующие состояния:

Готовность. При поиске нити на выполнение диспетчер просматривает только

нити, находящиеся в состоянии готовности, у которых есть все для

выполнения, но не хватает только процессора.

Первоочередная готовность (standby). Для каждого процессора системы

выбирается одна нить, которая будет выполняться следующей (самая первая

нить в очереди). Когда условия позволяют, происходит переключение на

контекст этой нити.

Выполнение. Как только происходит переключение контекстов, нить переходит в

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

вытеснит ее из-за того, что появилась более приоритетная нить или

закончился квант времени, выделенный этой нити, либо нить завершится

вообще, либо она по собственной инициативе перейдет в состояние ожидания.

Ожидание. Нить может входить в состояние ожидания несколькими способами:

нить по своей инициативе ожидает некоторый объект для того, чтобы

синхронизировать свое выполнение; операционная система (например,

подсистема ввода-вывода) может ожидать в интересах нити; подсистема

окружения может непосредственно заставить нить приостановить себя. Когда

ожидание нити подойдет к концу, она возвращается в состояние готовности.

Страницы: 1, 2, 3, 4, 5


© 2010 Современные рефераты