Сетевые операционные системы

         

Стандарт OpenDoc


Apple, совместно с WordPerfect, Novell, Sun, Xerox, Oracle, IBM и Taligent, известными вместе как Component Integration Laboratory (Лаборатория по объединению компонентов), также занимается архитектурой объектно-ориентированных составных документов, называемой OpenDoc. Создаваемый для работы на разных платформах, этот проект значительно отстает по степени готовности от OLE 2.0.

Ключевыми технологиями OpenDoc являются механизм хранения Бенто (названный так в честь японской тарелки с отделениями для разной пищи), технология сценариев (scripting), позаимствованная в значительной степени из AppleSript, и SOM фирмы IBM. В Бенто-документе каждый объект имеет постоянный идентификатор, перемещающийся вместе с ним от системы к системе. Хранение не только является транзакционным, как в OLE, но и позволяет держать и отслеживать многочисленные редакции каждого объекта. Если имеется несколько редакций документа, то реально храниться будут только изменения от одной редакции к другой. Верхняя граница числа сохраняемых редакций будет определяться пользователем.

Команда Apple планирует сделать OpenDoc совместимым с Microsoft OLE. Если план завершится успехом, система OpenDoc сможет окружать объекты OLE слоем программ трансляции сообщений. Контейнер OpenDoc будет видеть встроенный объект OLE как объект OpenDoc, а объект OLE будет представлять свой контейнер, как контейнер OLE. Утверждается, что будет допустима также и обратная трансляция по этому сценарию, когда объекты OpenDoc функционируют в контейнерах OLE. Слой трансляции разрабатывается WordPerfect при помощи Borland, Claris, Lotus и других.

В основе OLE и OpenDoc лежат две соперничающие объектные модели: Microsoft COM (Component Object Model - компонентная объектная модель) и IBM SOM. Каждая определяет протоколы, используемые объектами для взаимодействия друг с другом. Основное их различие заключается в том, что SOM нейтральна к языкам программирования и поддерживает наследование, тогда как COM ориентирована на С ++ и вместо механизма наследования использует альтернативный механизм, который Microsoft называет агрегацией.



Странично-сегментное распределение


Как видно из названия, данный метод представляет собой комбинацию страничного и сегментного распределения памяти и, вследствие этого, сочетает в себе достоинства обоих подходов. Виртуальное пространство процесса делится на сегменты, а каждый сегмент в свою очередь делится на виртуальные страницы, которые нумеруются в пределах сегмента. Оперативная память делится на физические страницы. Загрузка процесса выполняется операционной системой постранично, при этом часть страниц размещается в оперативной памяти, а часть на диске. Для каждого сегмента создается своя таблица страниц, структура которой полностью совпадает со структурой таблицы страниц, используемой при страничном распределении. Для каждого процесса создается таблица сегментов, в которой указываются адреса таблиц страниц для всех сегментов данного процесса. Адрес таблицы сегментов загружается в специальный регистр процессора, когда активизируется соответствующий процесс. На рисунке 2.15 показана схема преобразования виртуального адреса в физический для данного метода.

Рис. 2.15. Схема преобразования виртуального адреса в физический для

сегментно-страничной организации памяти



Страничное распределение


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

Вся оперативная память машины также делится на части такого же размера, называемые физическими страницами (или блоками).

Размер страницы обычно выбирается равным степени двойки: 512, 1024 и т.д., это позволяет упростить механизм преобразования адресов.

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

Рис. 2.12. Страничное распределение памяти



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

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

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

дольше всего не использовавшаяся страница,

первая попавшаяся страница,

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

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

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

Рассмотрим механизм преобразования виртуального адреса в физический при страничной организации памяти (рисунок 2.13).

Виртуальный адрес при страничном распределении может быть представлен в виде пары (p, s), где p - номер виртуальной страницы процесса (нумерация страниц начинается с 0), а s - смещение в пределах виртуальной страницы. Учитывая, что размер страницы равен 2 в степени к, смещение s может быть получено простым отделением k младших разрядов в двоичной записи виртуального адреса. Оставшиеся старшие разряды представляют собой двоичную запись номера страницы p.



Рис. 2.13. Механизм преобразования виртуального адреса в физический



при страничной организации памяти

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

на основании начального адреса таблицы страниц (содержимое регистра адреса таблицы страниц), номера виртуальной страницы (старшие разряды виртуального адреса) и длины записи в таблице страниц (системная константа) определяется адрес нужной записи в таблице,

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

к номеру физической страницы присоединяется смещение (младшие разряды виртуального адреса).

Использование в пункте (3) того факта, что размер страницы равен степени 2, позволяет применить операцию конкатенации (присоединения) вместо более длительной операции сложения, что уменьшает время получения физического адреса, а значит повышает производительность компьютера.

На производительность системы со страничной организацией памяти влияют временные затраты, связанные с обработкой страничных прерываний и преобразованием виртуального адреса в физический. При часто возникающих страничных прерываниях система может тратить большую часть времени впустую, на свопинг страниц. Чтобы уменьшить частоту страничных прерываний, следовало бы увеличивать размер страницы. Кроме того, увеличение размера страницы уменьшает размер таблицы страниц, а значит уменьшает затраты памяти. С другой стороны, если страница велика, значит велика и фиктивная область в последней виртуальной странице каждой программы. В среднем на каждой программе теряется половина объема страницы, что в сумме при большой странице может составить существенную величину. Время преобразования виртуального адреса в физический в значительной степени определяется временем доступа к таблице страниц. В связи с этим таблицу страниц стремятся размещать в "быстрых" запоминающих устройствах. Это может быть, например, набор специальных регистров или память, использующая для уменьшения времени доступа ассоциативный поиск и кэширование данных.

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


Структура файловой системы


Файловая система s5 имеет иерархическую структуру, в которой уровни создаются за счет каталогов, содержащих информацию о файлах более низкого уровня. Каталог самого верхнего уровня называется корневым и имеет имя root. Иерархическая структура удобна для многопользовательской работы: каждый пользователь локализуется в своем каталоге или поддереве каталогов, и вместе с тем все файлы в системе логически связаны. Корневой каталог файловой системы всегда располагается на системном устройстве (диск, имеющий такой признак). Однако это не означает, что и все остальные файлы могут содержаться только на нем. Для связи иерархий файлов, расположенных на разных носителях, применяется монтирование файловой системы, выполняемое системным вызовом mount. Пусть имеются две файловые системы, расположенные на разных дисках (рисунок 5.3). Операция монтирования заключается в следующем: в корневой файловой системе выбирается некоторый существующий каталог, содержащий один пустой файл, в данном примере каталог man, содержащий файл dummy. После выполнения монтирования выбранный каталог man становится корневым каталогом второй файловой системы. Через этот каталог смонтированная файловая система подсоединяется как поддерево к общему дереву (рисунок 5.4). При этом нет логической разницы между основной и монтированными файловыми системами.

Рис. 5.3. Традиционная файловая система s5

Рис. 5.4. Общая файловая система (после монтирования)



Структура физической памяти


На рисунке 5.12 показан пример распределения физической памяти. В самых нижних адресах находится текстовый сегмент ядра, затем располагается сегмент данных ядра, далее может идти динамический сегмент данных ядра, в котором отводится место для структур ядра, например, для дескрипторов процессов. В оставшейся физической памяти могут располагаться в общем случае несколько областей для хранения страниц пользовательских процессов. Эти области описываются таблицей pageac_table[ ], каждый элемент которой содержит номера начальной и конечной страницы области, указатели на дескрипторы первой и последней страниц, размещенных в этой области.

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

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

Список свободных страниц.

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




Рис. 5.12. Структуры, описывающие физическую память

Для вытеснения виртуальных страниц с целью освобождения физической памяти в UNIX System V Release 4 используется несколько констант, описывающих размер свободной памяти. Эти константы используются как пороговые значения для действий по освобождению физической памяти (рисунок 5.13). Если свободная память в системе превышает порог lotsfree, то процесс pageout не вызывается вовсе. Если размер свободной физической памяти находится в пределах от desfree до lotsfree, то pagefree вызывается 4 раза в секунду, а если ее размер становится меньше порога desfree, то pagefree вызывается при каждом цикле работы функции clock(). Если же свободная память становится меньше порога GPGSLO, то в действие вступает процесс свопинга, который в UNIX System V Release 4 называется shed. Этот процесс выбирает определенный процесс, а затем выгружает все его страницы на диск, освобождая тем самым сразу значительное место в памяти. Таким образом UNIX System V Release 4 использует механизм свопинга процессов, который был основным механизмом в ранних версиях UNIX для освобождения физической памяти для других процессов. Процесс, выгруженный на диск, исключается из претендентов на выполнение. Через некоторое время процесс shed вызывается снова. Если количество свободной памяти превысило GPGSL, то процесс загружается с диска в память и включается в очередь готовых к выполнению процессов.



Рис. 5.13. Пороговые значения для действий по освобождению физической памяти

Процесс вытеснения страниц pageout использует при поиске страниц для вытеснения алгоритм NRU (Not Recently Used), выбирающий для вытеснения не используемые в последнее время страницы. Этот алгоритм использует признаки модификации и доступа страниц. Процесс pageout периодически очищает эти признаки у тех страниц, которые не свободны. Если при следующем вызове процесс pageout видит, что эти признаки равны нулю, то значит доступа к этим страницам с момента предыдущего вызова процесса pageout не было, поэтому эти страницы вытесняются на диск.Процесс pageout циклически проверяет все страницы физической памяти, поэтому он называется часовым алгоритмом, что отражает просмотр страниц как бы по часовой стрелке. Было замечено, что обход всех страниц при их большом количестве занимает слишком много времени, поэтому в UNIX System V Release 4 применяется модифицированный часовой алгоритм. Он хорошо иллюстрируется часами с двумя стрелками, которые движутся синхронно, то есть угол между ними сохраняется постоянным. Первая стрелка указывает на виртуальные страницы, признаки которых обнуляются, а вторая - на страницы, признаки которых проверяются и, в случае их равенства нулю, страница вытесняется их физической памяти. При каждом вызове процесс pageout делает лишь часть полного оборота, поэтому при небольшом зазоре между стрелками в памяти остаются только страницы, к которым идет интенсивное обращение.


Структура NetWare и обзор особенностей


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

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

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

Кроме повышения производительности - основной цели разработки семейства ОС NetWare 3.x и 4.x, разработчики ставили перед собой цели создания открытой, расширяемой и высоконадежной операционной системы, обеспечивающей высокий уровень защиты информации.



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


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

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

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

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



Рис. 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.


Структура сетевой операционной системы


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

Рис. 1.1. Структура сетевой ОС

В сетевой операционной системе отдельной машины можно выделить несколько частей (рисунок 1.1):

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

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

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

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


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

На рисунке 1.2 показано взаимодействие сетевых компонентов. Здесь компьютер 1 выполняет роль "чистого" клиента, а компьютер 2 - роль "чистого" сервера, соответственно на первой машине отсутствует серверная часть, а на второй - клиентская. На рисунке отдельно показан компонент клиентской части - редиректор. Именно редиректор перехватывает все запросы, поступающие от приложений, и анализирует их. Если выдан запрос к ресурсу данного компьютера, то он переадресовывается соответствующей подсистеме локальной ОС, если же это запрос к удаленному ресурсу, то он переправляется в сеть. При этом клиентская часть преобразует запрос из локальной формы в сетевой формат и передает его транспортной подсистеме, которая отвечает за доставку сообщений указанному серверу. Серверная часть операционной системы компьютера 2 принимает запрос, преобразует его и передает для выполнения своей локальной ОС. После того, как результат получен, сервер обращается к транспортной подсистеме и направляет ответ клиенту, выдавшему запрос. Клиентская часть преобразует результат в соответствующий формат и адресует его тому приложению, которое выдало запрос.



Рис. 1.2. взаимодействие компонентов операционной системы при взаимодействии компьютеров

На практике сложилось несколько подходов к построению сетевых операционных систем (рисунок 1.3).



Рис. 1.3. Варианты построения сетевых ОС

Первые сетевые ОС представляли собой совокупность существующей локальной ОС и надстроенной над ней сетевой оболочки. При этом в локальную ОС встраивался минимум сетевых функций, необходимых для работы сетевой оболочки, которая выполняла основные сетевые функции. Примером такого подхода является использование на каждой машине сети операционной системы MS DOS (у которой начиная с ее третьей версии появились такие встроенные функции, как блокировка файлов и записей, необходимые для совместного доступа к файлам).Принцип построения сетевых ОС в виде сетевой оболочки над локальной ОС используется и в современных ОС, таких, например, как LANtastic или Personal Ware.

Однако более эффективным представляется путь разработки операционных систем, изначально предназначенных для работы в сети. Сетевые функции у ОС такого типа глубоко встроены в основные модули системы, что обеспечивает их логическую стройность, простоту эксплуатации и модификации, а также высокую производительность. Примером такой ОС является система Windows NT фирмы Microsoft, которая за счет встроенности сетевых средств обеспечивает более высокие показатели производительности и защищенности информации по сравнению с сетевой ОС LAN Manager той же фирмы (совместная разработка с IBM), являющейся надстройкой над локальной операционной системой OS/2.


Структуры индексных дескрипторов и каталогов


Вся необходимая операционной системе информация о файле, кроме его символьного имени, хранится в специальной системной таблице, называемой индексным дескриптором (inode) файла. Индексные дескрипторы всех файлов имеют одинаковый размер - 64 байта и содержат данные о типе файла, о физическом расположении файла на диске (описанные выше 13 элементов), размере в байтах, о дате создания, последней модификации и последнего обращения к файлу, о привилегиях доступа и некоторую другую информацию. Индексные дескрипторы пронумерованы и хранятся в специальной области файловой системы. Номер индексного дескриптора является уникальным именем файла. Соответствие между полными символьными именами файлов и их уникальными именами устанавливается с помощью иерархии каталогов.

Каталог представляет собой совокупность записей обо всех файлах и каталогах, входящих в него. Каждая запись состоит из 16 байтов, 14 байтов отводится под короткое символьное имя файла или каталога, а 2 байта - под номер индексного дескриптора этого файла. В каталоге файловой системы s5 непосредственно не указываются характеристики файлов. Такая организация файловой системы позволяет с меньшими затратами перестраивать систему каталогов. Например, при включении или исключении файла из каталога идет манипулирование меньшими объемами информации. Кроме того, при включении одного и того же файла в разные каталоги не нужно иметь несколько копий как характеристик, так и самих файлов. С этой целью в индексном дескрипторе ведется учет ссылок на этот файл из всех каталогов. Как только число ссылок становится равным нулю, индексный дескриптор данного файла уничтожается.

Расположение файловой системы s5 на диске показано на рисунке 5.5. Все дисковое пространство, отведенное под файловую систему, делится на четыре области:

загрузочный блок (boot), в котором хранится загрузчик операционной системы;

суперблок (superblock) - содержит самую общую информацию о файловой системе: размер файловой системы, размер области индексных дескрипторов, число индексных дескрипторов, список свободных блоков и список свободных индексных дескрипторов, а также другую административную информацию;



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


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

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



Рис. 5.5. Расположение файловой системы s5 на диске

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

Проверяет, существует ли файл; если не существует, то можно ли его создать. Если существует, то разрешен ли к нему доступ требуемого вида.

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

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

Делает отметку в контексте процесса, выдавшего системный вызов на операцию с данным файлом.


Свопинг


Разновидностью виртуальной памяти является свопинг.

На рисунке 2.16 показан график зависимости коэффициента загрузки процессора в зависимости от числа одновременно выполняемых процессов и доли времени, проводимого этими процессами в состоянии ожидания ввода-вывода.

Рис. 2.16. Зависимость загрузки процессора от числа задач и интенсивности ввода-вывода

Из рисунка видно, что для загрузки процессора на 90% достаточно всего трех счетных задач. Однако для того, чтобы обеспечить такую же загрузку интерактивными задачами, выполняющими интенсивный ввод-вывод, потребуются десятки таких задач. Необходимым условием для выполнения задачи является загрузка ее в оперативную память, объем которой ограничен. В этих условиях был предложен метод организации вычислительного процесса, называемый свопингом. В соответствии с этим методом некоторые процессы (обычно находящиеся в состоянии ожидания) временно выгружаются на диск. Планировщик операционной системы не исключает их из своего рассмотрения, и при наступлении условий активизации некоторого процесса, находящегося в области свопинга на диске, этот процесс перемещается в оперативную память. Если свободного места в оперативной памяти не хватает, то выгружается другой процесс.

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



Тенденции в структурном построении ОС


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



Типы адресов


Для идентификации переменных и команд используются символьные имена (метки), виртуальные адреса и физические адреса (рисунок 2.7).

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

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

Рис. 2.7. Типы адресов

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

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

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



Типы файлов


Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги.

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

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

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

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

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

пароль для доступа к файлу,

владелец файла,

создатель файла,

признак "только для чтения",

признак "скрытый файл",

признак "системный файл",

признак "архивный файл",

признак "двоичный/символьный",

признак "временный" (удалить после завершения процесса),

признак блокировки,


длина записи,

указатель на ключевое поле в записи,

длина ключа,

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

текущий размер файла,

максимальный размер файла.

Каталоги могут непосредственно содержать значения характеристик файлов, как это сделано в файловой системе MS-DOS, или ссылаться на таблицы, содержащие эти характеристики, как это реализовано в ОС UNIX (рисунок 2.31). Каталоги могут образовывать иерархическую структуру за счет того, что каталог более низкого уровня может входить в каталог более высокого уровня (рисунок 2.32).



Рис. 2.31. Структура каталогов: а - структура записи каталога MS-DOS (32 байта);

б - структура записи каталога ОС UNIX

Иерархия каталогов может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог, и сеть - если файл может входить сразу в несколько каталогов. В MS-DOS каталоги образуют древовидную структуру, а в UNIX'е - сетевую. Как и любой другой файл, каталог имеет символьное имя и однозначно идентифицируется составным именем, содержащим цепочку символьных имен всех каталогов, через которые проходит путь от корня до данного каталога.



Рис. 2.32. Логическая организация файловой системы

а - одноуровневая; б - иерархическая (дерево); в - иерархическая (сеть)


Тома и жесткие диски


Том - это первичная структура данных файловой системы NetWare. Том включает физическое хранилище данных, логическую информацию о файлах (файлы и каталоги), информацию пространства имен (Name Space) для поддержки не-DOS'овских форматов файлов и системы отказоустойчивости - систему оперативного исправления (Hot Fix) и систему отслеживания транзакций (TTS).

Сервер NetWare 3.12 или 4.x может иметь до 64 томов, монтируемых одновременно. Каждый том может обеспечивать хранение до 32 TБ (терабайт), если сервер имеет достаточный кэш для хранения структур данных тома, включая FAT (File Allocation Table) тома.

Том NetWare - это аналог понятия "файловая система" в UNIX. То есть том можно монтировать и демонтировать, как и файловую систему UNIX. Однако внутренняя структура тома NetWare существенно отличается от структуры файловой системы UNIX.



Транзакции


. Все изменения делаются по принципу "все или ничего".



Требования к аппаратуре


Для работы с Windows NT Workstation (Server) 3.5 требуется:

Компьютер с процессорами i386, i486 или Pentium с тактовой частотой от 33 Мгц и оперативной памятью от 12 (16) Мбайт; либо с процессором DEC Alpha и оперативной памятью от 16 (24) Мбайт; либо с MIPS-процессором; либо компьютер с несколькими процессорами.

Не менее 70 (90) Мб свободного пространства на жестком диске.

Желательно иметь устройство чтения компакт дисков с интерфейсом SCSI (CD-ROM) и мышь.

При работе в сети, требуется наличие 16- или 32-разрядной сетевой карты Ethernet или Token Ring.

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

Полный список техники, прошедшей тестирование на совместимость с Windows NT, прилагается к системе.



Требования, предъявляемые к ОС 90-х годов


Операционная система является сердцевиной сетевого программного обеспечения, она создает среду для выполнения приложений и во многом определяет, какими полезными для пользователя свойствами эти приложения будут обладать. В связи с этим рассмотрим требования, которым должна удовлетворять современная ОС.

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

Расширяемость. Код должен быть написан таким образом, чтобы можно было легко внести дополнения и изменения, если это потребуется, и не нарушить целостность системы.

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

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

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

Безопасность. ОС должна обладать средствами защиты ресурсов одних пользователей от других.

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

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



Третий период (1965 - 1980)


Следующий важный период развития вычислительных машин относится к 1965-1980 годам. В это время в технической базе произошел переход от отдельных полупроводниковых элементов типа транзисторов к интегральным микросхемам, что дало гораздо большие возможности новому, третьему поколению компьютеров.

Для этого периода характерно также создание семейств программно-совместимых машин. Первым семейством программно-совместимых машин, построенных на интегральных микросхемах, явилась серия машин IBM/360. Построенное в начале 60-х годов это семейство значительно превосходило машины второго поколения по критерию цена/произ-водительность. Вскоре идея программно-совместимых машин стала общепризнанной.

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

Однако, несмотря на необозримые размеры и множество проблем, OS/360 и другие ей подобные операционные системы машин третьего поколения действительно удовлетворяли большинству требований потребителей. Важнейшим достижением ОС данного поколения явилась реализация мультипрограммирования. Мультипрограммирование - это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько программ. Пока одна программа выполняет операцию ввода-вывода, процессор не простаивает, как это происходило при последовательном выполнении программ (однопрограммный режим), а выполняет другую программу (многопрограммный режим). При этом каждая программа загружается в свой участок оперативной памяти, называемый разделом.

Другое нововведение - спулинг (spooling). Спулинг в то время определялся как способ организации вычислительного процесса, в соответствии с которым задания считывались с перфокарт на диск в том темпе, в котором они появлялись в помещении вычислительного центра, а затем, когда очередное задание завершалось, новое задание с диска загружалось в освободившийся раздел.

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



Тупики


Приведенный выше пример поможет нам проиллюстрировать еще одну проблему синхронизации - взаимные блокировки, называемые также дедлоками (deadlocks), клинчами (clinch) или тупиками. Если переставить местами операции P(e) и P(b) в программе "писателе", то при некотором стечении обстоятельств эти два процесса могут взаимно заблокировать друг друга. Действительно, пусть "писатель" первым войдет в критическую секцию и обнаружит отсутствие свободных буферов; он начнет ждать, когда "читатель" возьмет очередную запись из буфера, но "читатель" не сможет этого сделать, так как для этого необходимо войти в критическую секцию, вход в которую заблокирован процессом "писателем".

Рассмотрим еще один пример тупика. Пусть двум процессам, выполняющимся в режиме мультипрограммирования, для выполнения их работы нужно два ресурса, например, принтер и диск. На рисунке 2.6,а показаны фрагменты соответствующих программ. И пусть после того, как процесс А занял принтер (установил блокирующую переменную), он был прерван. Управление получил процесс В, который сначала занял диск, но при выполнении следующей команды был заблокирован, так как принтер оказался уже занятым процессом А. Управление снова получил процесс А, который в соответствии со своей программой сделал попытку занять диск и был заблокирован: диск уже распределен процессу В. В таком положении процессы А и В могут находиться сколь угодно долго.

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



Рис. 2.6. (a) фрагменты программ А и В, разделяющих принтер и диск;

(б) взаимная блокировка (клинч);(в) очередь к разделяемому диску;

(г) независимое использование ресурсов

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

Проблема тупиков включает в себя следующие задачи:

предотвращение тупиков,

распознавание тупиков,

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

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

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

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


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

Из всего вышесказанного ясно, что использовать семафоры нужно очень осторожно, так как одна незначительная ошибка может привести к останову системы. Для того, чтобы облегчить написание корректных программ, было предложено высокоуровневое средство синхронизации, называемое монитором. Монитор - это набор процедур, переменных и структур данных. Процессы могут вызывать процедуры монитора, но не имеют доступа к внутренним данным монитора. Мониторы имеют важное свойство, которое делает их полезными для достижения взаимного исключения: только один процесс может быть активным по отношению к монитору. Компилятор обрабатывает вызовы процедур монитора особым образом. Обычно, когда процесс вызывает процедуру монитора, то первые несколько инструкций этой процедуры проверяют, не активен ли какой-либо другой процесс по отношению к этому монитору. Если да, то вызывающий процесс приостанавливается, пока другой процесс не освободит монитор. Таким образом, исключение входа нескольких процессов в монитор реализуется не программистом, а компилятором, что делает ошибки менее вероятными.

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


Улучшения в системе безопасности


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

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

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



Улучшения в транспортной системе


Штатные средства NetWare 4.0х обеспечивают режимы ускорения передачи информации в сети: режим форсированной передачи пакетов Packet Burst Mode, когда пакеты передаются группами без подтверждения приема на каждый переданный пакет, и режим передачи межсетевых пакетов большого размера без их разбиения на сегменты.

В программном обеспечении рабочей станции NetWare 4.02 улучшены утилиты печати, утилита просмотра электронной документации, изменена система службы управления сохранением файлов Storage Management Services (SMS), упрощена и убыстрена процедура установки CD-ROM.



UnixWare


UnixWare представляет собой полную реализацию наиболее современной версии системы UNIX для Intel-совместимых платформ - UNIX System V Release 4.2 (SVR4.2). Система сочетает высокую производительность, удобный графический интерфейс и возможности гибкой интеграции с сетями NetWare. Реализованная в ядре поддержка протокола IPX предоставляет пользователям UnixWare прозрачный доступ к сетевым ресурсам NetWare. DOS-клиенты сети получают при этом терминальный доступ к приложениям на сервере UnixWare и возможность коллективного использования файлов, хранящихся на сервере NetWare. Система выпускается в двух вариантах: UnixWare Personal Edition для работы в качестве клиента и однорангового сервера на 2 соединения, UnixWare Application Server, для построения мощного многопользовательского сервера приложений.

Версия UNIX SVR4.2 была создана фирмой UNIX System Laboratories (USL) в 1992 году как развитие версии UNIX System V Release 4. Для совместимости этой версии с наиболее популярными в секторе локальных сетей операционными системами Novell NetWare было создано совместное предприятие USL и Novell Univel, которое разработало и выпустило на рынок операционную систему UnixWare.



Управление локальными ресурсами


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



Управление оперативной и дисковой памятью сервера


Новые средства управления оперативной памятью сервера, используемые в NetWare 4.0х, значительно улучшают, по сравнению с предыдущими версиями NetWare, использование оперативной памяти сервера. После выгрузки NLM оперативная память освобождается более эффективно, поэтому многократная загрузка и выгрузка NLM в NetWare 4.0х не приводит к накоплению так называемого "мусора" в оперативной памяти сервера. В NetWare 4.0х обеспечивается также защита областей оперативной памяти, используемой загружаемыми модулями, от искажения в результате работы других модулей. Такое искажение может возникнуть при использовании некорректно написанных NLM (например, разрабатываемых самим пользователем). Защита оперативной памяти сервера позволяет снизить вероятность отказов сети при тестировании новых NLM.

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

В NetWare 3.х информация записывается на диск только целыми блоками, минимальный размер которых составляет 4 К. NetWare 4.0х может распределять дисковое пространство не только целыми блоками, но и подблоками размером 512 байт. Эта функция, называемая Disk Suballocation, позволяет существенно уменьшить потери дискового пространства.

NetWare v.4.0х позволяет подключать накопители большой емкости, такие как CD-ROM, WORM, перезаписываемые оптические диски и другие, непосредственно к файловой системе NetWare в качестве томов.



Управление памятью


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



Управление памятью. Свопинг


В UNIX System V Release 4 реализована сегментно-страничная модель памяти в ее традиционном виде. Наряду с механизмом управления страницами используется и механизм свопинга, когда на диск выталкиваются все страницы какого-либо процесса. Свопинг применяется в "предаварийных" ситуациях, когда размер свободной оперативной памяти уменьшается до некоторого заданного порога, так что работа всей системы очень затрудняется.

На рисунке 5.11 показаны основные структуры, описывающие виртуальное адресное пространство отдельного процесса. В дескрипторе процесса proc содержится указатель на структуру as, с помощью которой описываются все виртуальные сегменты, которыми обладает данный процесс. Элемент a_seg в структуре as указывает на первый дескриптор сегмента процесса. Каждый дескриптор сегмента (структура seg) описывает один виртуальный сегмент процесса. Дескрипторы сегментов процесса связаны в двунаправленный список. Дескриптор сегмента содержит базовый адрес начала сегмента в виртуальном адресном пространстве процесса, размер сегмента, а также указатели на операции, которые допускаются над этим сегментом (дублирование, освобождение, отображение и т.д.).

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

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

Данные (data) - содержит данные, используемые и модифицируемые процессом во время выполнения. К сегменту данных обычно разрешается иметь доступ для чтения и записи. В отличие от текстового сегмента, сегмент данных никогда не разделяется другими процессами.

Стек (stack) - содержит стек процесса. Он помечается доступным для чтения и записи и, подобно сегменту данных, не может разделяться другими процессами.

Есть еще два типа сегментов:

Разделяемая память (shared memory) - область памяти, доступная для чтения и записи нескольким процессам.


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

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

type: признак, является ли сегмент разделяемым или личным;

vp и offset: указатель на vnode файла и смещение в этом файле, которые задают адрес, начиная с которого расположены на диске данные этого сегмента;

amp: указатель на карту анонимных страниц сегмента.



Рис. 5.11. Сегментно-страничная модель виртуальной памяти UNIX

Каждый сегмент имеет связь с дисковым пространством, на котором хранятся данные, отображаемые в данный сегмент виртуального адресного пространства. Это может быть файл или часть файла на диске, или же это может быть область свопинга, которая файлом не является. Сегмент кода или сегмент инициализированных данных обычно связан с файлом, в котором хранится исполняемая программа. Под связью с файлом понимается отображение виртуального сегмента и его страниц на определенную область диска, из которой загружаются данные виртуальных страниц сегмента при их перемещении в оперативную память, а также куда помещаются данные при вытеснении виртуальных страниц на диск. Виртуальные страницы, которые были изначально взяты из определенного файла (который описывается на уровне ядра структурой vnode), называются vnode-страницами, а страницы, которые появились только при развертывании процесса (а это обычно страницы стека или неинициализированных сегментов данных) - анонимными страницами. Однако анонимные страницы также имеют связь с файлом, в который они выталкиваются при их вытеснении из физической памяти (так называемое свопинг-устройство). На свопинг-устройство также указывает vnode, поэтому в этом качестве может выступать любой файл, а перемещение страниц из свопинг-устройства в память осуществляется теми же функциями, что используются для vnode-страниц.



Отображение виртуальных страниц сегмента на физические задается с помощью таблицы HAT (Hardware Address Translation), указатель на которую имеется в структуре адресного пространства процесса as. Структура таблицы HAT зависит от аппаратной платформы, но в любом случае с ее помощью можно найти таблицу или таблицы страниц, содержащих дескрипторы страниц (структуры типа pte). Дескриптор страницы содержит признак наличия данной виртуальной страницы в физической памяти, номер соответствующей физической страницы, а также ряд признаков типа "модификация", "была ссылка", помогающих операционной системе планировать процесс вытеснения виртуальных страниц на диск.

В UNIX System V Release 4 используется алгоритм перемещения виртуальных страниц процесса в физическую память по запросу. Обычно при запуске процесса в физическую память помещается только небольшая часть страниц, необходимая для старта процесса, а остальные страницы загружаются при страничных сбоях. Очевидно, что начальный период работы любого процесса порождает повышенную нагрузку на систему. Если при поиске виртуального адреса в соответствующем дескрипторе обнаруживается признак отсутствия этой страницы в физической памяти, то происходит страничное прерывание, и ядро перемещает эту страницу с диска в физическую память. Для поиска страницы на диске используется информация из структуры s_data сегмента - либо vnode и offset, если страница типа vnode, либо информация о расположении анонимной страницы в области свопинга с помощью информации о ее расположении там по карте amp.

Если в физической памяти недостаточно места для размещения затребованной процессом страницы, то ОС выгружает некоторые страницы на диск. Этот процесс осуществляется специальным процессом ядра, "выталкивателем страниц", имеющем в UNIX System V Release 4 имя pageout. Для принятия решения о том, какую виртуальную страницу нужно переместить на диск, процессу pageout нужно иметь информацию о текущем состоянии физической памяти.


Управление памятью в Mach


Ядро Mach имеет мощную, тщательно разработанную и в высшей степени гибкую систему управления памятью, основанную на страничном механизме и обладающую многими редкими свойствами. В частности, в нем машинно-зависимая часть кода отделена от машинно-независимой части чрезвычайно ясным и необычным способом. Это разделение делает управление памятью более мобильным, чем в других системах. Кроме того, система управления памятью тесно взаимодействует с коммуникационной системой.

Одной из основных особенностей системы управления памятью Mach является то, что ее код разбит на три части. Первая часть называется pmap, который работает в ядре и занимается работой с устройством отображения виртуальных адресов в физические (Memory Management Unit, MMU). Эта часть устанавливает значения регистров MMU и аппаратных страничных таблиц, а также перехватывает все страничные прерывания. Эта часть кода зависит от архитектуры MMU и должна быть переписана для каждой новой машины всякий раз, когда Mach на нее переносится. Вторая часть - это машинно-независимый код ядра, и он связан с обработкой страничных сбоев, управляет отображением областей памяти и заменой страниц.

Третья часть кода работает в пользовательском пространстве в качестве процесса, называемого "менеджер памяти" (memory manager) или иногда "внешний менеджер страниц" (external pager). Эта часть имеет дело с логическими аспектами (в отличие от физических) системы управления памятью, в основном, с управлением хранения образов памяти на диске. Например, менеджер памяти отслеживает информацию о том, какие виртуальные страницы используются, какие находятся в оперативной памяти и где они хранятся на диске, когда не находятся в оперативной памяти. Ядро и менеджер памяти взаимодействуют с помощью хорошо определенного протокола, что дает возможность для пользователей ядра Mach писать свои собственные менеджеры памяти. Такое разделение обязанностей позволяет реализовывать страничные системы специльного назначения. При этом ядро становится потенциально меньше и проще, так как значительная часть кода работает в пользовательском пространстве. С другой стороны, это и источник усложнения ядра, так как при этом оно должно защищать себя от ошибок или некорректной работы менеджера памяти. Кроме того, при наличии двух активных частей системы управления памятью возможно возникновение гонок между ними.



Управление процессами


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


Эти контексты вложены друг в друга, как это показано на рисунке 7.2. Соотношение между данными этих контекстов напоминает соотношение глобальных и локальных переменных в программе, написанной на языке C. Глобальный контекст является общим для всех нитей данного NLM'а, и все его переменные видны для всех его нитей. В NetWare можно создавать несколько групп нитей внутри одного NLM-процесса, и эти группы имеют свой групповой контекст. Все нити группы видят переменные контекста своей группы, но не видят переменных контекста другой группы. И, наконец, каждая отдельная нить имеет свой собственный контекст. Содержимое этого контекста доступно только для данной нити.

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

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

BeginThread - создать новую нить.

BeginThreadGroup - создать новую группу нитей, которая содержит одну нить. Функция аналогична BeginThread, но нить приписывается к новой группе нитей.

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

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



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

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

SheduleWorkToDo - вместо создания новой нити для выполнения определенной работы (выраженной функцией языка C), поручает эту работу уже созданной заранее нити из резервного пула нитей ОС NetWare, который создается при старте системы для системных целей и срочных работ NLM'ов. Эта функция появилась только в версии NetWare 4.0.

Кроме этих функций NetWare предоставляет средства синхронизации нитей с помощью семафоров и сигналов.

Планировщик NetWare использует несколько очередей для организации невытесняющей дисциплины обслуживания нитей (рисунок 7.3).

При создании нити с помощью функций BeginThread или BeginThreadGroup нить попадает в конец очереди RunList, которая содержит готовые к выполнению нити. После того, как выполнявшаяся на CPU нить завершает свою очередную итерацию с помощью одного из вызовов передачи управления (или вызова ожидания на семафоре), планировщик выбирает для выполнения стоящую первой в очереди RunList нить и запускает ее на выполнение. Нить, завершившая свою очередную итерацию, помещается в конец одной из очередей в зависимости от того, какой вызов передачи управления она использовала: в конец очереди RunList при вызове ThreadSwitch, в конец очереди DelayedWorkToDoList при вызовах ThreadSwitchWithDelay или Delay или же в конец очереди LowPriorityRunList при вызове ThreadSwitchLowPriority. Если же нить вообще завершила свою работу, выполнив функцию return() в главной функции нити (при создании нити в качестве параметра указывается функция, которая является главной функцией нити), то данная нить уничтожается.

Нити, находящиеся в очереди DelayedWorkToDoList, после завершения условия ожидания перемещаются в конец очереди RunList.

Нити, находящиеся в очереди LowPriorityRunList, запускаются на выполнения только в том случае, когда очередь RunList пуста.


Обычно в эту очередь назначаются нити, выполняющую несрочную фоновую работу.



Рис. 7.3. Система очередей планирования NetWare

Очередь WorkToDoList является в системе самой приоритетной. Рабочие нити ОС выбирают работы из этой очереди, и эти нити обладают наивысшим приоритетом, то есть попадают на выполнение перед нитями из очереди RunList. Рабочие нити должны использоваться для выполнения очень срочных работ. Планировщик разрешает выполниться подряд только определенному количеству нитей из очереди WorkToDoList, а затем запускает нить из очереди RunList. Очередь WorkToDoList и связанные с ней функции, появившиеся в версии NetWare 4.0, значительно повышают производительность NLM-приложений.

Описанный механизм организации многонитевой работы в ОС NetWare v3.x и NetWare 4.x в сочетании со средствами синхронизации нитей (семафоры и сигналы) представляет собой современный подход к организации параллелизма и многопоточной обработки. Этот подход потенциально очень производителен, так как отличается небольшими накладными расходами ОС на диспетчирование нитей за счет простых алгоритмов планирования и иерархии контекстов Но для достижения высокой производительности к разработчикам NLM-приложений предъявляются высокие требования, так как распределение процессорного времени между различными NLM будет зависеть в конечном счете от реализации приложения и способа использования описанных в этом разделе средств. Кроме того, общая производительность сервера будет определяться всем набором выполняемых на нем NLM'ов и их взаимной способностью к сосуществованию.


Практически все составляющие сети представлены


Практически все составляющие сети представлены в LAN Server представлены в виде объектов, для которых существует быстрый и эффективный механизм создания и управления. Возможность "перетаскивать" объекты существенно ускоряет и упрощает управление учетной информацией пользователей и правами их доступа к разделяемым ресурсам. Для пользователей, которые предпочитают работать с командной строкой, а не с мышью и пиктограммами, предоставляется мощный командный язык Rexx.

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

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

LAN Server позволяет администратору создавать профили пользователей, регулируя их доступ к определенным системным ресурсам. Можно создать единую процедуру входа пользователя в сеть, а также организовать централизованное управление сетевыми ресурсами с помощью концепции доменов. Процедуру входа в домен сформировать достаточно просто, но затем необходимо это сделать для каждого домена (здесь нет доверительных отношений между доменами). Конечно, такой вариант далек от идеала, но он все же лучше, чем вход в каждый сервер в отдельности. Если идентификаторы пользователя и его пароли в разных доменах совпадают, то в различных процедурах входа для каждого домена нет необходимости (при желании можно заказать программу Net Signon, осуществляющую согласование идентификаторов пользователя и его паролей между доменами).
Служба псевдонимов системы LAN Server работает в масштабах всей сети, что позволяет серверам одного домена видеть ресурсы другого. Возможности централизованного управления сетью в этой системе ограничены. Графический интерфейс обеспечивает управление только шестью доменами, однако для утилит командной строки такого ограничения не существует.

Имея дело с Windows NT Server, приходится выбирать между файловыми системами: быстрой FAT и NTFS, обеспечивающей более надежную защиту информации. Используемая же в LAN Server файловая система HPFS оказалась лучше по обоим параметрам. Она работает эффективно и гарантирует безопасность файлов и каталогов. HPFS использует нулевое кольцо защиты микропроцессора Intel x86 и пытается обработать запросы на ввод-вывод в рамках одного прерывания. Кроме того, HPFS необходима для выполнения полного спектра задач администрирования сети, таких как защита файлов о несанкционированного доступа на самом сервере (это важно, поскольку LAN Server функционирует под управлением ОС, не содержащей процедуры аутентификации пользователя при входе).

В отличие от NetWare 4.1 и Windows NT Server, система LAN Server не удовлетворяет спецификациям уровня защиты С2, однако подобно этим сетевым операционным системам она использует зашифрованный ключ для аутентификации пользователей. Система регистрирует появляющиеся в сети ошибки и предупреждения и сопровождает их краткими комментариями. Тем не менее утилита ведения журнала контроля ограничивается лишь фиксацией событий, происходящих на сервере. В системе отсутствуют средства контроля ситуаций, возникающих в сети, регистрации транзакций и автоматической перезагрузки.

Термин "сервер приложений" приобретает в LAN Server второе значение. Администраторы могут выбирать приложения для DOS, Windows или OS/2, которые будут выполняться на сервере. Отдельные пользователи и группы с соответствующими правами осуществляют доступ к приложению, не заботясь о фактическом месте его выполнения. Администратор может незаметно для пользователей производить изменения на сервере, так как последний полностью прозрачен для них.


Допустимо управлять сервером с рабочей станции.

В LAN Server 4. 0 не предусмотрена возможность динамической настройки параметров производительности системы. Однако в ее состав входит утилита LS 4.0 Tuning Assistant, предоставляющая администраторам доступ к большому числу параметров. Правда, работая с этой утилитой, нужно хорошо знать особенности системы LAN Server и сетевых технологий низкого уровня.

Фирма IBM снабдила свою сетевую операционную систему и другими полезными утилитами, в том числе LAN Specialist, помогающей отслеживать ошибки (для этого требуется установить соответствующую программу на машину клиента), а также утилитой синхронизации файлов для удаленных пользователей (станции которых должны работать под управлением OS/2). На установочном компакт-диске имеется набор дополнительных программ под названием LAN Server Productivity Aids, включающий несколько утилит для данной ОС. Эти программы, в особенности Access Control Manager, который упрощает разделение ресурсов в сети, очень полезны.

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


Управление сложной сетью


NetWare 4.x обеспечивает широкий набор функций по управлению сложной сетью, позволяющих контролировать доступ к файлам, каталогам, очередям, томам, генерировать разнообразные отчеты о событиях, происходящих в сети. Новая утилита "NetWare Administrator", работающая в среде Windows 3.1 или OS/2 2.x, обеспечивает графический интерфейс для управления сетью. В версии 4.02 эта утилита проще устанавливается и примерно втрое быстрее работает, чем в предыдущих версиях NetWare 4.0x. Появилась также возможность вывода дерева сетевого каталога на печать.



Управление вводом-выводом


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



Упрощенная процедура инсталляции при использовании программы DS-Standard


При переходе с NetWare 3.х на NetWare 4.1 Novell рекомендует вместо собственных средств использовать программу DS-Standard. Главное преимущество этого продукта состоит в том, что он позволяет собирать информацию с существующих серверов и дает возможность администратору создавать и конфигурировать NDS-дерево в автономном режиме. Как только администратор решает, что полученная структура дерева его устраивает, DS-Standard экспортирует все данные о новой структуре в справочник NDS. Работа с DS делится на три основных этапа: сбор информации, моделирование и конфигурирование. На первом этапе осуществляется сбор информации с существующих серверов 3.х и 4.х., при этом могут быть собраны все сведения, включая учетные ограничения, данные об эквивалентности прав доступа, конфигурации заданий на печать, доверенные права, сценарии входа в сеть, ограничения на станцию, а также информация о системе печати. Единственное, что не импортируется с серверов 3.х - это пароли пользователей (средства миграции Novell импортируют пароли).

После сбора программой DS-Standard данных с серверов, администратор может приступить к моделированию дерева NDS. Программа позволяет добавлять, перемещать и удалять объекты, а также изменять их свойства. В этом отношении она во многом напоминает утилиту NetWare Admin.

После завершения автономного моделирования, DS-Standard формирует новую конфигурацию, внося изменения в "живое" дерево NDS.

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

В NetWare 4.1 расширены функции эмуляции bindery. В предыдущей версии процедура эмуляции могла использовать только одну ветвь дерева, а в 4.1 - до 16 ветвей.

В состав новой версии включена утилита NetSync, позволяющая управлять с сервера 4.1 12-ю серверами NetWare 3.х. При инсталляции NetSync на сервер NetWare 3.х вся информация из его базы bindery копируется в контекст bindery сервера NetWare 4.1, после чего можно управлять сервером NetWare 3.х с помощью утилит NetAdmin NWAdmin версии 4.1. Любые изменения, сделанные на сервере NetWare 4.1, автоматически переносятся на сервер NetWare 3.х. Недостаток такой системы состоит в том, что, если на сервере 3.х пользователь изменяет свой сценарий входа в сеть, то внесенные им изменения не переносятся автоматически на сервер 4.1.



Усовершенствованные средства передачи сообщений


Служба сообщений MHS в версии 4.1 теперь тесно интегрирована со службой NDS и включена в комплект поставки. Это позволило, во-первых, значительно уменьшить размер модулей NLM MHS (примерно с 2 Мбайт до примерно 200 Кбайт) и, во-вторых, обеспечить в системе поддержку только одной базы данных с информацией о пользователях - NDS.

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



В функции System Management Server входит:


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

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

Анализ сетевых протоколов. SMS позволяет анализировать сетевые протоколы в целях обнаружения узких мест в сети и управления сетевым трафиком.

Удаленный анализ производительности и возникающих проблем. База данных SMS хранит детальную информацию о конфигурации всех ПК в сети для того, чтобы можно было выполнять удаленный анализ возникающих проблем. Администратор может удаленно управлять мышью, клавиатурой и видеть экран любого ПК, работающего в сети под управлением MS-DOS или Windows.



V(S)


: переменная S увеличивается на 1 одним неделимым действием; выборка, инкремент и запоминание не могут быть прерваны, и к S нет доступа другим процессам во время выполнения этой операции.



х существенно отличаются от версий


Версии ОС NetWare 4. х существенно отличаются от версий семейства 3.х их очевидной корпоративной направленностью. Если версии 3.х были рассчитаны на сети небольших и средних предприятий, то уже первая ОС из нового семейства - NetWare 4.0 - имеет много новых свойств, направленных на обеспечение успешной работы в больших гетерогенных сетях. Версии 4.01 и 4.02 лишь незначительно отличаются от версии 4.0 за счет небольших улучшений в глобальной службе каталогов, которая оказалась в версии 4.0 не слишком удобной для использования, что и привело к весьма медленному старту ОС нового поколения. Кроме уже отмеченной глобальной службы каталогов, в этих версиях улучшены:

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

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

система управления сетью;

система безопасности;

транспортная система.


Версия 1.2 системы Advanced NetWare


, выпущенная также в 1985 году, стала первой операционной системой для процессора Intel 80286, работающей в защищенном режиме.



Версия 2.0 системы Advanced NetWare


, выпущенная в 1986 году, отличалась от предыдущих версий более высокой производительностью и возможностью объединения разнородных на канальном уровне сетей. Полностью используя возможности защищенного режима процессора 80286, Advanced NetWare обеспечила такую производительность сети, которая была недоступна операционным системам, работающим в реальном режиме и ограниченным 640 Кбайтами памяти. Версия 2.0 впервые обеспечила возможность подключения к одному серверу до четырех сетей с различной топологией, таких как Ethernet, ArcNet и Token Ring.

В 1987 году Novell выпустила систему



в свет версией NetWare семейства


Версия 4.1 является последней выпущенной в свет версией NetWare семейства 4.х на момент написания данного пособия.

Некоторые обозреватели считают, что версия 4.1 - эта та версия, которой должна была быть версия 4.0, имея в виду многочисленные неудобства в реализации службы NDS и некоторые другие недочеты, помешавшие версиям 4.0х завоевать рынок (на конец 1994 года только 31% пользователей NetWare в мире работало с различными версиями 4.0х). Теперь, с выходом версии 4.1, положение может существенно измениться.

Во-первых, Novell значительно упростила процедуру инсталляции.

Во-вторых, возможности версии 4.1 существенно расширены. Как и в NetWare 4.0х, здесь поддерживается улучшенная файловая система и средства управления памятью, увеличено максимальное число обслуживаемых пользователей (свыше 250), реализованы службы сжатия и перемещения редко используемых файлов, а также более совершенные средства защиты информации и управления правами пользователей.

Новыми элементами NetWare 4.1 являются средства IPX Mac и NetWare IP, интегрированная с NDS служба обработки сообщений MHS и очень полезная программа DS-Standard фирмы Preffered Systems, облегчающая конфигурирование NetWare и переход от одной версии к другой.

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


Виртуальная файловая система VFS


В UNIX System V Release 3 был реализован механизм переключения файловых систем (File System Switch, FSS), позволяющий операционной системе поддерживать различные типы файловых систем. В соответствии с этим подходом информация о файловой системе и файлах разбивается на две части - зависимую от типа файловой системы и не зависимую. FSS обеспечивает интерфейс между ядром и файловой системой, транслируя запросы ядра в операции, зависящие от типа файловой системы. При этом ядро имеет представление только о независимой части файловой системы. Однако большее распространение получила схема, реализованная фирмой Sun Microsystems, использующая аналогичный подход. Эта схема называется переключателем виртуальной файловой системы - Virtual File System (VFS). В UNIX System V Release 4 реализован именно этот механизм.

VFS не ориентируется на какую-либо конкретную файловую систему, механизмы реализации файловой системы полностью скрыты как от пользователя, так и от приложений. В ОС нет системных вызовов, предназначенных для работы со специфическими типами файловой системы, а имеются абстрактные вызовы типа open, read, write и другие, которые имеют содержательное описание, обобщающее некоторым образом содержание этих операций в наиболее популярных типах файловых систем (например, s5, ufs, nfs и т.п.). VFS также предоставляет ядру возможность оперирования файловой системой, как с единым целым: операции монтирования и демонтирования, а также операции получения общих характеристик конкретной файловой системы (размера блока, количества свободных и занятых блоков и т.п.) в единой форме. Если конкретный тип файловой системы не поддерживает какую-то абстрактную операцию VFS, то файловая система должна вернуть ядру код возврата, извещающий об этом факте.

В VFS вся информация о файлах разделена на две части - не зависящую от типа файловой системы, которая хранится в специальной структуре ядра - структуре vnode, и зависящую от типа файловой системы - структура inode, формат которой на уровне VFS не определен, а используется только ссылка на нее в структуре vnode. Имя inode не означает, что эта структура совпадает со структурой индексного дескриптора inode файловой системы s5. Это имя используется для обозначения зависящей от типа файловой системы информации о файле, как дань традиции.

Виртуальная файловая система VFS поддерживает следующие типы файлов:

обычные файлы,

каталоги,

специальные файлы,

именованные конвейеры,

символьные связи.

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



Виртуальная память


Концептуально модель памяти в Mach выглядит для пользовательских процессов в виде большого линейного виртуального адресного пространства. Для большинства 32-х разрядных процессоров адресное пространство занимает диапазон от 0 до 232 - 1 (4 Гбайта). Адресное пространство поддерживается страничным механизмом.

Mach обеспечивает очень тонкое управление механизмом использования виртуальных страниц (для тех процессов, которые интересуются этим). Для начала скажем о том, что адресное пространство может использоваться разреженным способом. Например, процесс может иметь дюжину секций виртуального адресного пространства, каждая из которых находится на расстоянии сотен мегабайт от ближайшего соседа, с большими зазорами неиспользуемого адресного пространства между этими секциями.

Теоретически любое виртуальное адресное пространство может быть разреженным, так что способность использовать большое количество разбросанных секций не является в действительности свойством архитектуры виртуальной памяти. Другими словами, любая 32-х битная машина должна позволять процессу иметь 50 000 секций данных, разделенных промежутками по 100 Мбайт, в пределах от 0 до 4 Гбайт. Однако, во многих реализациях линейная страничная таблица от 0 до самой старшей используемой страницы хранится в памяти ядра. На машине с размером страницы в 1 Kб эта конфигурация требует 4 миллиона элементов таблицы страниц, делая такую схему очень дорогой, если не невозможной. Даже при многоуровневой организации страничной таблицы такая разреженность в лучшем случае неприемлема. В ядре Mach при его разработке изначально ставилась задача полной поддержки разреженных адресных пространств.

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



Рис. 6.5. Адресное пространство с назначенными областями,

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

Ключевым понятием, связанным с использованием виртуального адресного пространства, является объект памяти (memory object). Объект памяти может быть страницей или набором страниц, а также может быть файлом или другой, более специальной, структурой данных, например, записью базы данных. Объект памяти может быть отображен в неиспользуемую часть виртуального адресного пространства, формируя новую область, как это показано на рисунке 6.5. Когда файл отображен в виртуальное адресное пространство, то его можно читать или в него можно писать с помощью обычных машинных команд. Отображенные (mapped) файлы постранично вытесняются из памяти обычным образом. Когда процесс завершается, то его отображенные в память файлы автоматически возвращаются в файловую систему вместе со всеми изменениями, произошедшими с их содержанием в то время, когда они были отображены в память. Также возможно отменить отображение файла или другого объекта памяти, освобождая его адресное пространство и делая его доступным для последовательного его распределения или отображения.

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

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


Внешние менеджеры памяти


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

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



Внутренняя организация OS/2 Warp


На рисунке 9.1 показана структура операционной системы OS/2 Warp 3.0. В OS/2 имеется несколько видов виртуальных машин для прикладных программ. Собственные 32- и 16-разрядные программы OS/2 выполняются на отдельных виртуальных машинах в режиме вытесняющей многозадачности и могут общаться между собой с помощью средств DDE OS/2. Прикладные программы DOS и Win16 могут запускаться на отдельных виртуальных машинах в многозадачном режиме. При этом они поддерживают полноценные связи DDE и OLE 2.0 друг с другом и связи DDE с 32-х разрядными программами OS/2. Кроме того, можно запустить несколько программ Win16 на общей виртуальной машине Win16, где они работают в режиме невытесняющей многозадачности. Разнообразные сервисные функции API OS/2, в том числе SOM (модель системных объектов), обеспечиваются с помощью системных динамических библиотек DLL, к которым можно обращаться без требующих затрат времени переходов между кольцами защиты. Ядро OS/2 предоставляет многие базовые сервисные функции API, обеспечивает поддержку файловой системы, управление памятью, и имеет диспетчер аппаратных прерываний. В ядре виртуальных DOS-машин (VDM-ядре) осуществляется эмуляция DOS и процессора 8086, а также управление VDM. Драйверы виртуальных устройств обеспечивают уровень аппаратной абстракции. Драйверы физических устройств напрямую взаимодействуют с аппаратурой.

Рис. 9.1. Структура OS/2

На рисунке 9.2 изображены сетевые средства OS/2 Warp Connect. Они делятся на четыре уровня. Прикладной уровень включает программные интерфейсы приложений операционной системы. Компоненты на уровне файловой системы отвечают за выполнение файловых операций. Транспортный уровень реализует коммуникационные протоколы. Имеется компонента Общая транспортная семантика (Common Transport Semantic), которая позволяет использовать любую файловую систему (а точнее ее редиректор) в сочетании с любым протоколом транспортного уровня.

Рис. 9.2. Структура сетевых средств OS/2 Warp Connect

Программное обеспечение MAC-уровня включает драйверы сетевых адаптеров и диспетчерский слой в стандарте NDIS 2.01, который позволяет различным сетевым протоколам работать через один адаптерам, и различным адаптерам связываться через общий протокол. Существует модуль преобразования ODI-NDIS, который позволяет использовать модули транспортных протоколов, реализованные в расчете на работу с диспетчерским слоем ODI компании Novell.

Диспетчер инсталлируемой файловой системы (IFS) теоретически позволяет любой прикладной программе работать с любой файловой системой.



Вопросы разработки структуры файловой системы


Рассмотрим прежде всего вопрос о распределении серверной и клиентской частей между машинами. В некоторых системах (например, NFS) нет разницы между клиентом и сервером, на всех машинах работает одно и то же базовое программное обеспечение, так что любая машина, которая хочет предложить файловый сервис, свободно может это сделать. Для этого ей достаточно экспортировать имена выбранных каталогов, чтобы другие машины могли иметь к ним доступ.

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

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

Аргументом в пользу разделения сервисов является тот факт, что они на самом деле слабо связаны, поэтому их раздельная реализация более гибкая. Например, можно реализовать сервер каталогов MS-DOS и сервер каталогов UNIX, которые будут использовать один и тот же файловый сервер для физического хранения файлов. Разделение этих функций также упрощает программное обеспечение. Недостатком является то, что использование двух серверов увеличивает интенсивность сетевого обмена.

Постоянный поиск имен, особенно при использовании нескольких серверов каталогов, может приводить к большим накладным расходам. В некоторых системах делается попытка улучшить производительность за счет кэширования имен.
При открытии файла кэш проверяется на наличие в нем нужного имени. Если оно там есть, то этап поиска, выполняемый сервером каталогов, пропускается, и двоичный адрес извлекается из кэша.
Последний рассматриваемый здесь структурный вопрос связан с хранением на серверах информации о состоянии клиентов. Существует две конкурирующие точки зрения.
Первая состоит в том, что сервер не должен хранить такую информацию (сервер stateless). Другими словами, когда клиент посылает запрос на сервер, сервер его выполняет, отсылает ответ, а затем удаляет из своих внутренних таблиц всю информацию о запросе. Между запросами на сервере не хранится никакой текущей информации о состоянии клиента. Другая точка зрения состоит в том, что сервер должен хранить такую информацию (сервер statefull).
Рассмотрим эту проблему на примере файлового сервера, имеющего команды ОТКРЫТЬ, ПРОЧИТАТЬ, ЗАПИСАТЬ и ЗАКРЫТЬ файл. Открывая файлы, statefull-сервер должен запоминать, какие файлы открыл каждый пользователь. Обычно при открытии файла пользователю дается дескриптор файла или другое число, которое используется при последующих вызовах для его идентификации. При поступлении вызова, сервер использует дескриптор файла для определения, какой файл нужен. Таблица, отображающая дескрипторы файлов на сами файлы, является информацией о состоянии клиентов.
Для сервера stateless каждый запрос должен содержать исчерпывающую информацию (полное имя файла, смещение в файле и т.п.), необходимую серверу для выполнения требуемой операции. Очевидно, что эта информация увеличивает длину сообщения.
Однако при отказе statefull-сервера теряются все его таблицы, и после перезагрузки неизвестно, какие файлы открыл каждый пользователь. Последовательные попытки провести операции чтения или записи с открытыми файлами будут безуспешными. Stateless-серверы в этом плане являются более отказоустойчивыми, и это аргумент в их пользу.
Преимущества обоих подходов можно обобщить следующим образом:
Stateless-серверы:
отказоустойчивы;
не нужны вызовы OPEN/CLOSE;
меньше памяти сервера расходуется на таблицы;
нет ограничений на число открытых файлов;
отказ клиента не создает проблем для сервера.
Statefull-серверы:
более короткие сообщения при запросах;
лучше производительность;
возможно опережающее чтение;
легче достичь идемпотентности;
возможна блокировка файлов.

Вопросы реализации


При объединении сетей различных типов в общем случае необходимо обеспечить двухстороннее взаимодействие сетей, то есть решить две задачи (рисунок 3.17):

1. Обеспечение доступа клиентам сети A к ресурсам и сервисам серверов сети B.

2. Обеспечение доступа клиентам сети B к ресурсам и сервисам сети A.

Рис. 3.17. Варианты сетевого взаимодействия

Эти задачи независимы и их можно решать отдельно. Прежде всего нужно понять, необходимо ли полное решение или достаточно и частичного, то есть нужно ли, чтобы пользователи, например, UNIX-машин имели доступ к ресурсам серверов сети NetWare, а пользователи персональных машин имели доступ к ресурсам UNIX-хостов, или же достаточно обеспечить доступ к ресурсам другой сети только одному виду пользователей.

Кроме того, каждую из этих задач можно в свою очередь разделить на части. В сети обычно имеются различные виды разделяемых ресурсов, и с каждым типом ресурсов могут предоставляться различные виды сервиса. Например, в UNIX-сетях файлы являются разделяемым ресурсом, и с ними связаны два вида сервиса - перемещение файлов между машинами по протоколу FTP и монтирование удаленной файловой системы по протоколу NFS. Поэтому при объединении сетей можно предложить пользователям набор средств, каждое из которых позволяет воспользоваться одним каким-либо сервисом чужой сети. Естественно, возможно объединение всех функций в рамках одного продукта.

При объединении сетей достаточно иметь средства взаимодействия сетей только в одной из сетей. Например, фирма Novell разработала ряд программных продуктов для связи с UNIX-сетями, которые достаточно включить в программное обеспечение сети NetWare, чтобы решить обе указанные задачи взаимодействия сетей. При этом серверной части UNIX клиент NetWare представляется UNIX-клиентом, а клиент UNIX обращается с файлами и принтерами, управляемыми сервером NetWare, как с UNIX-файлами и UNIX-принтерами. Возможен перенос средств взаимодействия сетей и на сторону UNIX-сети. Тогда аналогичные функции будут выполнять программные средства на UNIX-машине.


В то время, как расположение программных средств, реализующих шлюз, уже было определено - они должны располагаться на компьютере, занимающем промежуточное положение между двумя взаимодействующими машинами, вопрос о размещении дополнительных стеков протоколов остался открытым. Заметим также, что шлюз реализует взаимодействие "многие-ко-многим" (все клиенты могут обращаться ко всем серверам).
Рассмотрим все возможные варианты размещения программных средств, реализующих взаимодействие двух сетей, которые основаны на мультиплексировании протоколов. Введем некоторые обозначения: С - сервер, К - клиент, ( - дополнительный протокол или стек протоколов.
На рисунке 3.18 показаны оба возможных варианта однонаправленного взаимодействия А®В: а) путем добавления нового стека к клиентам сети А, либо б) путем присоединения "добавки" к серверам сети В.
В первом случае, когда средства мультиплексирования располагаются на клиентских частях, только клиенты, снабженные средствами мультиплексирования протоколов, могут обращаться к серверам сети В, при этом они могут обращаться ко всем серверам сети В. Во втором случае, когда набор стеков расположен на каком-либо сервере сети В, данный сервер может обслуживать всех клиентов сети А. Очевидно, что серверы сети В без средств мультиплексирования не могут быть использованы клиентами сети А.

Рис. 3.18. Варианты размещения программных средств
(С - cервер, К - клиент, ( - средства сетевого взаимодействия)
Примером "добавки", модифицирующей клиентскую часть, может служить популярное программное средство фирмы Novell LAN Workplace, которое превращает клиента NetWare в клиента UNIX. Аналогичным примером для модификации сервера могут служить другие продукты фирмы Novell: NetWare for UNIX, который делает возможным использование услуг сервера UNIX клиентами NetWare, или Novell NetWare for VMS, который служит для тех же целей в сети VMS.
Взаимодействие А ( В реализуется симметрично.
Если же требуется реализовать взаимодействие в обе стороны одновременно, то для этого существует четыре возможных варианта, показанных на рисунке 3.19.


Каждый вариант имеет свои особенности с точки зрения возможностей связи клиентов с серверами:
Средства обеспечения взаимодействия расположены только на клиентских частях обеих сетей. Для тех и только тех клиентов обеих сетей, которые оснащены "добавками", гарантируется возможность связи со всеми серверами из "чужой" сети.
Все средства обеспечения взаимодействия расположены на стороне сети А. Все клиенты сети В могут обращаться к серверам сети А (не ко всем, а только к тем, которые имеют сетевую "добавку"). Часть клиентов сети А, которые обозначены как К+(, могут обращаться ко всем серверам сети В.
Средства межсетевого взаимодействия расположены только на серверных частях обеих сетей. Всем клиентам обеих сетей гарантируется возможность работы с серверами "чужих" сетей, но не со всеми, а только с серверами, обладающими сетевыми средствами мультиплексирования протоколов.
Все средства межсетевого взаимодействия расположены на стороне В. Двусторонний характер взаимодействия обеспечивается модификацией и клиентских, и серверных частей сети В. Все клиенты сети А могут обращаться за сервисом к серверам сети В, обозначенным как С+(, а все серверы сети А могут обслуживать клиентов сети В, обозначенных как К+(.

Рис. 3.19. Варианты размещения программных средств при двустороннем взаимодействии
(С - cервер, К - клиент, ( - средства сетевого взаимодействия)
Очевидно, что наличие программных продуктов для каждого из рассмотренных вариантов сильно зависит от конкретной пары операционных систем. Для некоторых пар может вовсе не найтись продуктов межсетевого взаимодействия, а для некоторых можно выбирать из нескольких вариантов. Рассмотрим в качестве примера набор программных продуктов, реализующих взаимодействие Windows NT и NetWare. В ОС Windows NT и в серверной части (Windows NT Server), и в клиентских частях (Windows NT Workstation) предусмотрены встроенные средства мультиплексирования нескольких протоколов, в том числе и стека IPX/SPX.Следовательно эта операционная система может поддерживать двустороннее взаимодействие (по варианту 2) с NetWare без каких-либо дополнительных программных средств. Аналогичным образом реализуется взаимодействие сетей Windows NT с UNIX-сетями.

Вопросы реализации нитей


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

Завершаться нити могут одним из двух способов: по своей инициативе, когда завершается работа, и извне. Во многих случаях, например, при конвейерной модели, нити создаются сразу же после старта процесса и никогда не уничтожаются.

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

Нити могут быть реализованы как в пользовательском пространстве, так и в пространстве ядра. В первом случае нити работают на базе прикладной системы, управляющей всеми операциями с нитями. Первым преимуществом такого способа является то, что можно реализовать нити в операционной системе, которая их не поддерживает. ОС прикладная среда, управляющая нитями, кажется одним процессом. Все вызовы (ПРИОСТАНОВИТЬ, ПРОВЕРИТЬ СЕМАФОР и т.
д.) обрабатываются как вызовы функций этой прикладной среды. Она сохраняет регистры и переключает указатели счетчика команд и стека. В этом случае переключение происходит быстрее, чем с помощью ядра. Такая реализация имеет еще одно преимущество - для каждого процесса можно организовать свою схему планирования. Однако этот подход связан с некоторыми проблемами, одна из которых состоит в следующем. При выполнении блокирующих системных вызовов приостанавливается весь набор нитей, принадлежащих этому процессу. Чтобы избежать этого, можно сделать все системные вызовы неблокирующими, но это требует изменений в ОС, что нежелательно, так как одной из целей реализации нитей в пользовательском пространстве является их работа в существующих операционных системах.
Такой проблемы не существует при реализации нитей в пространстве ядра. Преимущество заключается также и в том, что ядро может при диспетчеризации выбирать нить из другого процесса. Однако хотя механизм управления нитями аналогичен первому случаю, временные затраты на переключение нитей выше, так как тратится время на переключение из режима пользователя в режим ядра.

Встроенные сетевые возможности


Novell DOS 7 объединяет в себе средства построения одноранговой локальной сети



Второй период (1955 - 1965)


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

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



Вытесняющая и невытесняющая многозадачность.


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

невытесняющая многозадачность (NetWare, Windows 3.x);

вытесняющая многозадачность (Windows NT, OS/2, UNIX).

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



Вытесняющие и невытесняющие алгоритмы планирования


Существует два основных типа процедур планирования процессов - вытесняющие (preemptive) и невытесняющие (non-preemptive).

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

Preemptive multitasking - вытесняющая многозадачность - это такой способ, при котором решение о переключении процессора с выполнения одного процесса на выполнение другого процесса принимается планировщиком операционной системы, а не самой активной задачей.

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

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


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

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

Поэтому разработчики приложений для non-preemptive операционной среды, возлагая на себя функции планировщика, должны создавать приложения так, чтобы они выполняли свои задачи небольшими частями. Например, программа форматирования может отформатировать одну дорожку дискеты и вернуть управление системе. После выполнения других задач система возвратит управление программе форматирования, чтобы та отформатировала следующую дорожку. Подобный метод разделения времени между задачами работает, но он существенно затрудняет разработку программ и предъявляет повышенные требования к квалификации программиста. Программист должен обеспечить "дружественное" отношение своей программы к другим выполняемым одновременно с ней программам, достаточно часто отдавая им управление. Крайним проявлением "недружественности" приложения является его зависание, которое приводит к общему краху системы. В системах с вытесняющей многозадачностью такие ситуации, как правило, исключены, так как центральный планирующий механизм снимет зависшую задачу с выполнения.



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

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

Однако почти во всех современных операционных системах, ориентированных на высокопроизводительное выполнение приложений (UNIX, Windows NT, OS/2, VAX/VMS), реализована вытесняющая многозадачность. В последнее время дошла очередь и до ОС класса настольных систем, например, OS/2 Warp и Windows 95. Возможно в связи с этим вытесняющую многозадачность часто называют истинной многозадачностью.


W


- поле разрешения записи в сегмент (при W=1 запись разрешена, при W=0 - запрещена),



Windows 95 и будущее семейства Windows


Windows 95 представляет собой замечательный пример эволюционного развития архитектуры Windows. Система имеет новый интерфейс, который можно легко настраивать и с помощью которого можно легко путешествовать по ресурсам системы. Эта ОС выполняет 16- и 32-х разрядные приложения, поддерживает технологию "plug-and-play" и содержит встроенные средства для сетевой работы. У многих обозревателей нет сомнений в том, что эта система улучшит жизнь многим миллионам пользователей персональных компьютеров.

Несмотря на все преимущества, Windows 95 - это по-прежнему вариация на тему Windows 3.1. Для большинства пользователей это означает, что заложенные в ней архитектурные анахронизмы могут приводить к неожиданному краху системы. Даже по мнению специалистов Microsoft, для важных бизнес-приложений более предпочтительным является использование Windows NT, которая обеспечивает защиту данных и устойчивость к некорректной работе приложений.

Windows 95 обладает некоторыми уникальными возможностями. Вероятно, она обеспечивает наилучшую среди всех операционных систем поддержку мобильных пользователей, спектр ее коммуникационных средств чрезвычайно широк и гибок, она наконец предоставляет решение застарелой проблемы недостатка памяти для выполнения приложений. Именно для мобильных пользователей, работающих на портативных компьютерах с шиной PCMCIA, наилучшим образом проявляет себя технология "plug-and-play", хотя для персональных компьютеров с шиной ISA могут возникать некоторые проблемы. Windows 95 автоматически отслеживает подключение портативного компьютера к рабочей станции сети и загружает или выгружает соответствующие драйверы. Например, когда пользователь приезжает в офис и подключает свой ноутбук к своей же рабочей станции, то Windows 95 узнает, что она присоединена теперь к внешнему монитору и начинает работать с графикой более высокого разрешения.

Windows 95 также является отличным коммуникационным средством: она поддерживает практически все сетевые протоколы и адаптеры.
Для коммуникаций, использующих коммутируемые телефонные линии, Windows 95 предлагает использовать средства Microsoft Exchange. Встроенный клиент Microsoft Exchange имеет подсистемы для пересылки факсов, сообщений электронной почты и сети Microsoft Network, которая занимается рассылкой программного обеспечения и технической поддержкой пользователей в режиме on-line.

Наконец, переделка средств управления оперативной памятью позволит пользователям загрузить больше приложений прежде, чем система выдаст сообщение о нехватке памяти. Например, в Windows 3.1 обычно можно загрузить от 3 до 5 приложений, а для Windows 95 эти границы составляют 6 - 12 приложений.

Стабильность Windows 95, развитые средства сетевой работы и новый удобный пользовательский интерфейс представляют собой безусловные преимущества по сравнению с DOS или Windows 3.1, но все же не дотягивают до того уровня, к которому привыкли пользователи таких ОС, как OpenVMS, UNIX или Windows NT.

Одной из проблем Windows 3.1 является способность приложения вызвать крах системы, вынудив сделать перезагрузку. В Windows 95 осталось много старого кода, с помощью которого осуществляется выполнение приложений. Например, такие критические компоненты операционной системы, как USER и GDI, которые соответственно обеспечивают управление окнами и предоставляют средства графического интерфейса, являются по-прежнему 16-разрядными и работают в том же адресном пространстве, что и 16-разрядные приложения. Поэтому 16-разрядное приложение, содержащее ошибки, может потенциально "подвесить" виртуальную машину, на которой работают подсистемы USER и GDI, или, что еще хуже, заставить USER или GDI неверно работать, что может привести к краху всей ОС. Даже 32-разрядные приложения могут вызвать останов системы. Большая часть нижней памяти размером в 1 Мбайт, принадлежащая адресному пространству системного кода Windows 95 (то есть системной виртуальной машине System VM), открыта для операций приложения Win32.

Многозадачность - это еще одно потенциально слабое место.


Windows 95 пересылает все вызовы USER API через 16-разрядную системную виртуальную машину System VM, которая размещается там же , где и выполняемое 16-разрядное приложение. Если 16-разрядное приложение "подвешивает" машину System VM, отказываясь обрабатывать сообщение (встречающийся чаще всего тип ошибки в существующих приложениях Windows), то все остальные процессы приостанавливаются. Пока пользователь не завершит в принудительном порядке зависшее 16-разрядное приложение (в Windows 95 есть хорошее средство для выполнения этой операции) и тем самым не освободит машину System VM, другие выполняемые программы, даже 32-разрядные, будут заблокированы.

Рисунки 8.4, 8.5 и 8.6 дают возможность сравнить архитектурные решения, положенные в основу операционных систем Windows 3.1, Windows 95 и Windows NT.



Рис. 8.4. Архитектура ОС Windows 3.1

В состав операционной системы Windows 3.1 (рис 8.4) входит системная виртуальная машина System VM, внутри которой размещаются все 16-разрядные приложения Win16, а также код и данные системных DLL, которые обеспечивают выполнение сервисных функций ОС. Приложения Win16 выполняются в общем адресном пространстве внутри системной виртуальной машины. Программы Win16 выполняются в режиме невытесняющей многозадачности. Системные библиотеки USER, GDI и KERNEL предоставляют сервисные функции операционной системы приложениям и отображаются в адресное пространство, совместно используемое приложениями Win16. Приложения DOS запускаются на отдельных виртуальных DOS-машинах (VDM), работающих в режиме вытесняющей многозадачности. Диспетчер устанавливаемых файловых систем (IFS) и драйвер 32-разрядного доступа к файлам (только в Windows for Workgroups 3.11) осуществляют большинство файловых операций в защищенном режиме, что ускоряет доступ к файлам. Драйвер 32-разрядного доступа к диску управляет обменом с диском на физическом уровне.



Рис. 8.5. Архитектура ОС Windows 95

Подсистема управления виртуальными машинами (VM Manager, VMM) предоставляет сервисные функции низкого уровня, такие как распределение процессорного времени между VM и управление виртуальной памятью.


Сюда также относятся драйверы виртуальных устройств (VxD) для аппаратуры.

Архитектура Windows 95 (рисунок 8.5) представляет собой немного улучшенную версию архитектуры Windows 3.1. Внутри системной VM выполняются приложения Win16 и Win32. Большая часть кода операционной системы и данных также размещается здесь. Приложения Win32 работают на основе алгоритма вытесняющей многозадачности в отдельных адресных пространствах. Все приложения Win16 выполняются как единый процесс в общем адресном пространстве на основе алгоритма невытесняющей многозадачности. Библиотеки динамической компоновки USER, USER32, GDI, GDI32, KERNEL и KERNEL32, которые предоставляют системные сервисы всем приложениям, загружаются в системную VM и отображаются в адресные пространства каждого прикладного процесса. Это повышает производительность за счет устранения затрат времени на переходы между кольцами защиты при вызове системных функций. Однако с другой стороны, это также ставит под угрозу целостность системы, открывая доступ к частям ОС для прикладных программ. На виртуальных DOS-машинах (VDM) выполняются DOS-программы. Они работают в режиме вытесняющей многозадачности.



Рис. 8.6. Архитектура ОС Windows NT

Подсистема управления файлами Windows 95 работает в нулевом кольце защиты и обрабатывает все вызовы, связанные с вводом-выводом. Большинство вызовов обрабатывается в защищенном режиме, но некоторые по-прежнему приводят к переключению в режим Virtual 86, и обрабатываются в реальном режиме DOS. Диспетчер устанавливаемых файловых систем IFS передает вызовы файлового ввода-вывода драйверу соответствующей файловой системы. Драйвер файловой системы VFAT реализует собственную VFAT-систему Windows 95, которая похожа на файловую систему FAT с добавленными средствами обработки длинных имен файлов. Драйвер CDFS заменяет MSCDEX и управляет операциями по вводу данных с накопителей CD ROM. Редиректор, выполненный в виде драйвера файловой системы, обеспечивает обращение к сетевым накопителям. Можно устанавливать дополнительные драйверы файловых систем.


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

Подсистема управления виртуальными машинами (VMM) предоставляет низкоуровневые сервисные функции, например, планирование нитей и управление памятью. Сюда также относятся драйверы виртуальных устройств (VxD) для аппаратуры.

На рисунке 8.6 представлена уже знакомая структура Windows NT, в которой каждое из приложений обращается к сервисным функциям (серверам) косвенно, через вызовы локальных процедур (LPC), реализованных в диспетчере LPC, являющемся частью NT Executive и работающем в привилегированном режиме. Приложения Win32 исполняются как отдельные многонитевые процессы. Программы Win16 могут запускаться как однонитевые процессы на общей виртуальной машине, или на собственной виртуальной машине, что обеспечивает им большую степень защищенности от других программ Win16. Приложения DOS выполняются как отдельные процессы на отдельных виртуальных DOS-машинах (VDM). Среда машины в рамках VDM конструируется таким образом, чтобы как можно более точно имитировать среду реального режима DOS. Подсистемы OS/2 и POSIX обеспечивают работу соответствующих прикладных программ в текстовом режиме.

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



Рис. 8.7. Структура сетевых средств Windows 95

Ядро обрабатывает прерывания и исключительные ситуации, переключает нити, синхронизирует процессоры в многопроцессорных системах и выполняет другие низкоуровневые функции, используемые при работе NT Executive.

На рисунке 8.7 представлена организация сетевых средств Windows 95, очень напоминающая аналогичную структуру сетевых средств Windows NT. Это и не удивительно - обе системы поддерживают один и тот же программный интерфейс WNet, с помощью которого приложения и системные утилиты получают доступ к просмотру, отображению и потреблению сетевых ресурсов.



Как видно из следующей таблицы, разбиение версий Windows на два семейства - NT и 95 - явление временное. Оно вызвано скорее не стратегическими соображениями, а тактикой борьбы за пользователей в условиях, когда мощность большей части персональных компьютеров, установленных в настоящее время у пользователей, оказалась явно недостаточной для эффективной работы Windows NT. Ввиду угрозы перетекания конечных пользователей на более компактную и менее ресурсоемкую (по сравнению с Windows NT) OS/2 Warp Connect компания Microsoft и выпустила Windows 95, как некоторую временную ОС с ограниченным сроком годности - не более 5 лет, как это видно из таблицы. И хотя Microsoft планирует выпустить еще 2 версии, улучшающие свойства Windows 95, наличие некоторых общих свойств у Windows NT и Windows 95, а также очевидные слабости Windows 95, говорят о том, что долговременная стратегия Microsoft связана с линией Windows NT, многие из новых свойств которой будут отрабатываться и в версиях линии Windows 95 (как сейчас это произошло с пользовательским интерфейсом и некоторыми системными утилитами типа клиента Microsoft Exchange).


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


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

В отличие от Windows, в которой реализована многозадачность без вытеснения (non-preemptive multitasking), в Windows NT используется механизм многозадачности с вытеснением (preemptive multitasking).

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

Для управления нитями Windows NT Server использует механизм приоритетов. В определенные моменты производятся оценка приоритетов и перераспределение нитей по процессорам, в результате чего последовательные стадии одного потока программы могут выполняться разными процессорами или откладываться до высвобождения очередного процессора.

Windows NT Server поддерживает до 16 параллельных процессоров, что актуально для таких серверов, как Symmetry 750 фирмы Sequent с 16 процессорами Intel 486/50 МГц. Следует, однако, иметь в виду, что реализация СМП в Windows NT Server нацелена на оптимизацию производительности и не обеспечивает резервирования в целях повышения отказоустойчивости. В случае выхода из строя одного из процессоров система останавливается.

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

При управлении устройствами ввода/вывода Windows NT Server использует асинхронный подход.
Для завершения процесса и начала выполнения новой задачи не нужно ждать поступления сигнала об окончании таких операций, как чтение или запись. Каждый процесс создается с использованием одной нити, которая служит специфическим отображением выполнения программы процессором. Впоследствии программа может создавать новые нити, и Windows NT Server будет распределять их и управлять ими, не привлекая к этому приложения высокого уровня.

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

В соответствии с требованием совместимости, Windows NT обеспечивает среду выполнения не только для приложений с исходным программным интерфейсом Win32 API. При выполнении на процессорах фирмы Intel защищенные подсистемы Windows NT обеспечивают двоичную совместимость существующих приложений фирмы Microsoft, включая MS-DOS, Win16, OS/2. На MIPS RISC процессорах двоичная совместимость достигается для приложений MS-DOS и 16-битных Windows-приложений (с использованием эмуляции). Windows NT обеспечивает также совместимость на уровне исходных текстов для POSIX-приложений, которые твердо придерживаются интерфейса, определенного в стандарте IEEE 1003.1.

Помимо совместимости программных интерфейсов, Windows NT поддерживает существующие файловые системы, включая файловую систему MS-DOS (FAT), файловую систему CD-ROM, файловую систему OS/2 (HPFS) и собственную новую файловую систему (NTFS).

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


в двух конфигурациях: для рабочей


Версия Windows NT 3.5, как и предыдущая Windows NT 3.1, разработана в двух конфигурациях: для рабочей станции Windows NT Workstation 3.5 и для сервера - Windows NT Server 3.5. Windows NT 3.5 имеет многочисленные усовершенствования и нововведения по сравнению с Windows NT 3.1:

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

Встроенная совместимость с NetWare. Возможность выполнения роли шлюза к сетям NetWare, так что Windows NT-компьютеры могут получать доступ к файлам, принтерам и серверам приложений NetWare. В Windows NT начиная с версии 3.5 входит Microsoft Compatible Workstation Service for NetWare, который позволяет осуществлять доступ к файлам, каталогам и принтерам на сервере Novell NetWare. Транспортный протокол Microsoft NWLink IPX/SPX обеспечивает связь между компьютером с Windows NT и NetWare файл-сервером и сервером печати. Он поддерживает работу с файлами и с очередями печати на NetWare сервере.

Встроенная поддержка TCP/IP. Новая высокопроизводительная Microsoft-реализация протоколов TCP/IP, которая обеспечивает простое, мощное решение для межсетевого взаимодействия.Microsoft поддерживает протокол TCP/IP, начиная с 1991 года, когда был выпущен первый стек для Microsoft LAN Manager 2.1. В Windows NT также имеется поддержка этого протокола, начиная с самой первой версии этой операционной системы. Помимо этого, имеются базовые утилиты, такие как ftp, tftp, telnet, команды r*, arp, route и finger. С выходом версии 3.5 появились новые ключевые свойства, которые, с одной стороны, упростили конфигурирование и обслуживание, а с другой - улучшили свойства TCP/IP.

Значительные улучшения средств удаленного доступа RAS, включающие поддержку IPX/SPX и TCP/IP, использование стандартов Point to Point Protocol (PPP) и Serial Line IP (SLIP). Сервер RAS может теперь поддерживать до 256 соединений (вместо 64 в версии 3.1).

Поддержка длинных имен файлов в файловой системе FAT.
Windows NT поддерживает работу с тремя файловыми системами: NTFS, FAT и HPFS. Таким образом, если до установки Windows NT на компьютере были установлены MS-DOS или OS/2, то нет никакой необходимости переформатировать диск. Система преобразует FAT или HPFS в NTFS, сохранив всю информацию на диске. Обратное преобразование невозможно. Здесь уместно заметить, что если вы хотите установить NTFS только затем, чтобы использовать длинные (до 255 символов) имена файлов, то для этих целей прекрасно подойдут и FAT и HPFS. Если для последней это естественное свойство, то возможность использования длинных имен файлов на FAT была введена только в версии Windows NT начиная с 3.5. Вы можете спокойно называть файлы и каталоги именами, выходящими за пределы традиционного для MS-DOS правила "8.3", нисколько не опасаясь, что эти файлы не будут доступны при работе в MS-DOS. Для таких файлов и каталогов будут назначены вторые, "короткие" имена.

Полная поддержка хранения встроенных объектов OLE 2.x и поиска составных документов. Эти возможности включают связывание, встраивание, связывание со встроенными объектами, технологии "drag-and-drop" и OLE-Automation.

В операционную систему Windows NT 3.5 встроены графические возможности трехмерной графики OpenGL API. OpenGL - это независимая от операционной системы промышленно-стандартная библиотека графических функций, разработанная фирмой Silicon Graphics для своих рабочих станций. В настоящее время OpenGL признана Architecture Review Board, включающей такие фирмы, как DEC, IBM, Intel, Microsoft и Silicon Graphics. Технология OpenGL была лицензирована Microsoft для предоставления этого мощного 32-разрядного API пользователям Windows NT. Развитые функции этой библиотеки требуются в том случае, когда необходима визуализация крупных проектов и данных. Типичные задачи, требующие ее использования, - это САПР, системы механического и промышленного дизайна, программы статистического и научного анализа.

Приложения, разработанные для MS Windows 3.x и MS-DOS, выполняются более надежно, так как каждое приложение теперь работает в своем адресном пространстве.



Доменная организация. В сетях на основе Windows NT Server рабочие станции подключаются к выделенным серверам. Именованные собрания серверов могут быть сгруппированы в домены. Такой метод организации сети упрощает централизованное управление сетью и позволяет использовать Windows NT Server в качестве сетевой операционной системы масштаба предприятия. Если администратор однажды завел учетную информацию о пользователе домена, то последний имеет возможность зарегистрироваться на любой рабочей станции в этом домене. Для этого достаточно ввести имя, имя домена и пароль при регистрации, и Windows NT Workstation опознает пользователя и воссоздаст его рабочую среду. В серверных сетях, как правило, все совместно используемые каталоги располагаются на выделенных серверах, а совместно используемые принтеры подключены к специализированным серверам печати. Однако это ни в коей мере не ограничивает возможностей пользователя по предоставлению ресурсов его рабочей станции в совместное использование так, как это обычно делается в одноранговых сетях. Windows NT Server предоставляет возможность пользователям различных доменов совместно использовать ресурсы путем установления доверительных отношений между доменами. Если домен А и домен Б полностью доверяют друг другу, то пользователь домена А может зарегистрироваться в домене Б и осуществлять доступ к ресурсам его сервера. Аналогично, пользователь домена Б может использовать ресурсы любого из серверов домена А.

Клиентами в сети с Windows NT Server могут являться компьютеры с различными операционными системами. Стандартно поддерживаются: MS-DOS, OS/2, Windows for Workgroups, клоны UNIX, Macintosh, Windows NT Workstation. Программное обеспечение возможных клиентов включается в стандартную поставку Windows NT Server.

Microsoft является одним из лидеров в установлении общественных стандартов на socket-интерфейсы для Windows. Windows Sockets является открытой спецификацией, определяющей программный интерфейс Windows к сетевым протоколам.


Этот интерфейс также является частью Microsoft Windows Open Services Architecture (WOSA). Он уже знаком сетевым программистам, работающим под UNIX с расширениями на базе Windows, и стал стандартным методом разработчиков, пишущих Windows-приложения для обеспечения удаленного вызова процедур (RPC) не только через TCP/IP, но и через IPX и NetBEUI. В 1993 году Microsoft создал свой Internet FTP сервер, работающий на базе Windows NT Advanced Server. Этот сервер можно найти в Internet как ftp.microsoft.com. В настоящее время в среднем 25 000 пользователей подключаются к этому серверу еженедельно и загружают с него общим числом около 75 000 файлов в неделю.

Взаимодействие с UNIX. В Windows NT обеспечивается посредством поддержки общих стандартных сетевых протоколов (включая TCP/IP), стандартных способов распределенной обработки, стандартных файловых систем и совместного использования данных, а также благодаря простоте переноса приложений. Несмотря на то, что система Windows NT была разработана для поддержки работы по схеме клиент-сервер, для совместимости с UNIX-хостами встроена эмуляция терминалов.

SNMP. В Windows NT имеется ряд средств для интеграции в системы, использующие протокол SNMP (Simple Network Management Protocol), что позволяет выполнять удаленное администрирование Windows NT с помощью, например, SUN Net Manager и HP OpenView. Поддержка графических и текстовых терминалов.

В Windows NT входят мощные API гибкой поддержки сред распределенных вычислений:

DCE совместимый RPC (Remote Procedure Call) - критическая составная часть, необходимая при построении распределенных приложений;

Windows Sockets - API, совместимый с сокетами типа Berkeley, популярным в UNIX механизмом распределенных вычислений;

WOSA (Windows Open Services Architecture) - этот набор API позволяет объединять системы Windows с широким рядом приложений-поставщиков данных, выпускаемых самыми разными производителями.

Сети SNA. Доступ к мэйнфреймам IBM и системам IBM AS400 возможен при установке Microsoft SNA Server.SNA Sever является шлюзом, позволяющим осуществлять доступ с рабочей станции как к серверам локальной сети, так и к мэйнфреймам без необходимости использования двух сетевых карт или нескольких стеков сетевых протоколов. Это приводит к снижению стоимости оборудования и объема требуемой оперативной памяти. Обеспечивая прозрачный доступ к мэйнфреймам, SNA Server, будучи интегрированным с системой безопасности NT Server, обеспечивает авторизацию доступа к хосту. SNA Server может работать с любым из протоколов, поддерживаемых NT Server: IPX/SPX, TCP/IP или NetBEUI.


Microsoft решила пожертвовать стабильностью


При разработке 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.


WinView for Networks v2.2 фирмы Citrix Systems


Фирмы Novell и Citrix Systems подписали соглашение о совместной разработке нового поколения средств удаленного доступа для сетей NetWare. Разработки будут основываться на созданной Citrix технологии сервера приложений WinView for Networks.

Данный программный продукт предназначен для реализации высокоэффективного сервера приложений, поддерживающего подключение пользователей по обычным телефонным линиям или по связям локальной сети. WinView, минимально загружая линии связи и обеспечивая необходимую надежность, позволяет работать с Windows-приложениями и текстовыми приложениями DOS и OS/2. Это достигается за счет использования разработанного Citrix коммуникационного протокола Intelligent Console Architecture. В рамках этого протокола сообщения, пересылаемые между сервером приложений и клиентом, состоят из сообщений Windows и уведомлений о событиях типа нажатия клавиш или кнопки мыши. Также возможна работа удаленных пользователей, использующих какой-либо из распространенных терминалов.

По сравнению с NetWare Access Services (NAS) WinView for Networks обладает целым рядом особенностей. Одна из них - возможность подключения удаленных пользователей не только через многопортовые адаптеры и интерфейс NASI, но и через стандартные COM-порты. В отличие от NAS, WinView может функционировать не только в интеграции с Novell NetWare, но и автономно. Очень интересна возможность эффективного общения с MS Windows по медленным каналам и полноценная работа с MS Windows при использовании в качестве клиентов машин класса AT 286 с 640 Kб оперативной памяти. За счет реализации на базе OS/2 WinView обеспечивает очень высокую надежность и эффективность исполнения разнообразных приложений. По этой же причине WinView предъявляет более высокие требования к персональному компьютеру, используемому в качестве сервера приложений. Рекомендуемая конфигурация - 486 компьютер с шиной EISA или MCA, 16 мегабайт оперативной памяти и 80 мегабайтный жесткий диск, многопортовый адаптер семейства DigiChannel, хотя возможно функционирование и на более скромных платформах. WinView for Networks версии 2.2 поставляется в версии на 5 и 10 одновременных подключений.

В соответствии с соглашением фирме Citrix передана линия продуктов NetWare Access Services (NAS). Начиная с 1994 года распространение и сопровождение линии NetWare Access Services обеспечивает именно фирма Citrix. Существует Upgrade с NAS 1.3 на WinView.



Защита информации


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

Операционные системы NetWare содержат механизмы защиты следующих уровней:

защита информации о пользователе;

защита паролем;

защита каталогов;

защита файлов;

межсетевая защита.

В 1983 году фирма Novell ввела в систему концепций локальной сети понятия имени пользователя, пароля и характеристики пользователя (user profile). Характеристика пользователя содержит перечень ресурсов, к которым пользователь имеет доступ, и права, которыми он обладает при работе с этими ресурсами. Администратор сети может ограничить права пользователя по входу в сеть датой, временем и конкретными рабочими станциями. Средства обнаружения нарушений защиты и блокировки действий нарушителя извещают администратора сети о попытках несанкционированного доступа.

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

В версии NetWare 4.x использована более надежная схема идентификации пользователя при логическом входе в сеть, основанная на использовании технологии защиты RSA public key/private key. При использовании этой технологии пароль и личный ключ пользователя никогда не передаются по кабелям, что полностью исключает возможность узнать чужой пароль. В службу каталогов NDS также введен новый уровень управления доступом, который может быть введен в действие администратором в любой части сети.

С точки зрения защиты ОС NetWare не делает различия между операционными системами рабочих станций. Станции, работающие под управлением DOS, Windows, OS/2, Macintosh и UnixWare, обслуживаются совершенно одинаково, и все функции защиты применяются ко всем операционным системам, которые могут использоваться в сети NetWare.