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.
Файловая система s5 имеет иерархическую структуру, в которой уровни создаются за счет каталогов, содержащих информацию о файлах более низкого уровня. Каталог самого верхнего уровня называется корневым и имеет имя root. Иерархическая структура удобна для многопользовательской работы: каждый пользователь локализуется в своем каталоге или поддереве каталогов, и вместе с тем все файлы в системе логически связаны. Корневой каталог файловой системы всегда располагается на системном устройстве (диск, имеющий такой признак). Однако это не означает, что и все остальные файлы могут содержаться только на нем. Для связи иерархий файлов, расположенных на разных носителях, применяется монтирование файловой системы, выполняемое системным вызовом mount. Пусть имеются две файловые системы, расположенные на разных дисках (рисунок 5.3). Операция монтирования заключается в следующем: в корневой файловой системе выбирается некоторый существующий каталог, содержащий один пустой файл, в данном примере каталог man, содержащий файл dummy. После выполнения монтирования выбранный каталог man становится корневым каталогом второй файловой системы. Через этот каталог смонтированная файловая система подсоединяется как поддерево к общему дереву (рисунок 5.4). При этом нет логической разницы между основной и монтированными файловыми системами.
Рис. 5.3. Традиционная файловая система s5
Рис. 5.4. Общая файловая система (после монтирования)
На рисунке 5.12 показан пример распределения физической памяти. В самых нижних адресах находится текстовый сегмент ядра, затем располагается сегмент данных ядра, далее может идти динамический сегмент данных ядра, в котором отводится место для структур ядра, например, для дескрипторов процессов. В оставшейся физической памяти могут располагаться в общем случае несколько областей для хранения страниц пользовательских процессов. Эти области описываются таблицей pageac_table[ ], каждый элемент которой содержит номера начальной и конечной страницы области, указатели на дескрипторы первой и последней страниц, размещенных в этой области.
Для каждой физической страницы имеется дескриптор страницы - структура page, в котором содержится информация о том, свободна или занята страница, загружена ли в нее в данный момент виртуальная страница, модифицировано ли ее содержимое, сколько процессов хотят сохранить эту страницу в памяти и другая информация. В каждый момент времени дескриптор физической страницы может состоять в одном из следующих списков:
Список хэшированных виртуальных дескрипторов файла. Каждый отображаемый или выполняемый файл описывается виртуальным дескриптором (vnode). Страницы, относящиеся к отдельному vnode, связываются в список. При этом используется хэширование для быстрого поиска в случае, когда произойдет страничное прерывание.
Список свободных страниц.
Список страниц, образующих кэш страниц. Этот список подобен списку свободных станиц, но данные в этих страницах остаются действительными. Страницы обычно помещаются в список кэша процессом pageout. Если происходит поиск какой-либо страницы и эта страница находится в списке страниц кэша, то она повторно используется. Например, страница может быть изъята процессом pageout и помещена в кэш-список. Процесс может затем повторно использовать эту страницу перед тем, как операционная система назначит ее другому процессу. Таким образом, кэшированная страница может быть повторно назначена процессу без перемещения данных с диска.
NetWare - это специализированная операционная система, а не ОС общего назначения. ОС общего назначения обеспечивают сервис, который удовлетворяет потребностям многих различных приложений, к тому же такая ОС обычно очень устойчива к поведению своих приложений за счет специальных ограничительных мер. Приложения могут разрабатываться почти без заботы о их взаимодействии с другими программами. Они также могут быть написаны без учета фактора разделения ресурсов компьютера, таких как память или CPU.
В ОС общего назначения проблемы взаимодействия, разделения ресурсов и т.д. решаются операционной системой. Приложениям, которые пытаются решать их самостоятельно, ОС может запретить это делать. Это обеспечивает некоторый уровень защиты приложений и ОС.
NetWare - это специализированная ОС, которая с самого начала проектировалась для оптимизации сетевого сервиса и, в первую очередь, доступа к удаленным файлам. Такие приложения, как электронные таблицы и текстовые процессоры, будут лучше работать под управлением ОС общего назначения, а приложения типа сервера печати, сервера баз данных и коммуникационного сервера, которые обеспечивают управление разделяемыми ресурсами, будут лучше работать под NetWare. Но, чтобы добиться такого эффекта, приложения для NetWare нужно писать тщательно, осознавая последствия их совместной работы на сервере, чтобы одно приложение не подавляло другие из-за слишком интенсивного захвата процессорного времени.
Кроме повышения производительности - основной цели разработки семейства ОС NetWare 3.x и 4.x, разработчики ставили перед собой цели создания открытой, расширяемой и высоконадежной операционной системы, обеспечивающей высокий уровень защиты информации.
При разработке структуры Windows NT была в значительной степени использована концепция микроядра. В соответствии с этой идеей ОС разделена на несколько подсистем, каждая из которых выполняет отдельный набор сервисных функций - например, сервис памяти, сервис по созданию процессов, или сервис по планированию процессов. Каждый сервер выполняется в пользовательском режиме, выполняя цикл проверки запроса от клиента на одну из его сервисных функций. Клиент, которым может быть либо другая компонента ОС, либо прикладная программа, запрашивает сервис, посылая сообщение на сервер. Ядро ОС (или микроядро), работая в привилегированном режиме, доставляет сообщение нужному серверу, затем сервер выполняет операцию, после этого ядро возвращает результаты клиенту с помощью другого сообщения.
Структурно Windows NT может быть представлена в виде двух частей: часть операционной системы, работающая в режиме пользователя, и часть операционной системы, работающая в режиме ядра (рисунок 8.1).
Часть Windows NT, работающая в режиме ядра, называется executive - исполнительной частью. Она включает ряд компонент, которые управляют виртуальной памятью, объектами (ресурсами), вводом-выводом и файловой системой (включая сетевые драйверы), взаимодействием процессов и частично системой безопасности. Эти компоненты взаимодействуют между собой с помощью межмодульной связи. Каждая компонента вызывает другие с помощью набора тщательно специфицированных внутренних процедур.
Вторую часть Windows NT, работающую в режиме пользователя, составляют серверы - так называемые защищенные подсистемы. Серверы Windows NT называются защищенными подсистемами, так как каждый из них выполняется в отдельном процессе, память которого отделена от других процессов системой управления виртуальной памятью NT executive. Так как подсистемы автоматически не могут совместно использовать память, они общаются друг с другом посредством посылки сообщений. Сообщения могут передаваться как между клиентом и сервером, так и между двумя серверами.
Все сообщения проходят через исполнительную часть Windows NT. Ядро Windows NT планирует нити защищенных подсистем точно так же, как и нити обычных прикладных процессов.
Сетевая операционная система составляет основу любой вычислительной сети. Каждый компьютер в сети в значительной степени автономен, поэтому под сетевой операционной системой в широком смысле понимается совокупность операционных систем отдельных компьютеров, взаимодействующих с целью обмена сообщениями и разделения ресурсов по единым правилам - протоколам. В узком смысле сетевая ОС - это операционная система отдельного компьютера, обеспечивающая ему возможность работать в сети.
Рис. 1.1. Структура сетевой ОС
В сетевой операционной системе отдельной машины можно выделить несколько частей (рисунок 1.1):
Средства управления локальными ресурсами компьютера: функции распределения оперативной памяти между процессами, планирования и диспетчеризации процессов, управления процессорами в мультипроцессорных машинах, управления периферийными устройствами и другие функции управления ресурсами локальных ОС.
Средства предоставления собственных ресурсов и услуг в общее пользование - серверная часть ОС (сервер). Эти средства обеспечивают, например, блокировку файлов и записей, что необходимо для их совместного использования; ведение справочников имен сетевых ресурсов; обработку запросов удаленного доступа к собственной файловой системе и базе данных; управление очередями запросов удаленных пользователей к своим периферийным устройствам.
Средства запроса доступа к удаленным ресурсам и услугам и их использования - клиентская часть ОС (редиректор). Эта часть выполняет распознавание и перенаправление в сеть запросов к удаленным ресурсам от приложений и пользователей, при этом запрос поступает от приложения в локальной форме, а передается в сеть в другой форме, соответствующей требованиям сервера. Клиентская часть также осуществляет прием ответов от серверов и преобразование их в локальный формат, так что для приложения выполнение локальных и удаленных запросов неразличимо.
Коммуникационные средства ОС, с помощью которых происходит обмен сообщениями в сети. Эта часть обеспечивает адресацию и буферизацию сообщений, выбор маршрута передачи сообщения по сети, надежность передачи и т.п., то есть является средством транспортировки сообщений.
Вся необходимая операционной системе информация о файле, кроме его символьного имени, хранится в специальной системной таблице, называемой индексным дескриптором (inode) файла. Индексные дескрипторы всех файлов имеют одинаковый размер - 64 байта и содержат данные о типе файла, о физическом расположении файла на диске (описанные выше 13 элементов), размере в байтах, о дате создания, последней модификации и последнего обращения к файлу, о привилегиях доступа и некоторую другую информацию. Индексные дескрипторы пронумерованы и хранятся в специальной области файловой системы. Номер индексного дескриптора является уникальным именем файла. Соответствие между полными символьными именами файлов и их уникальными именами устанавливается с помощью иерархии каталогов.
Каталог представляет собой совокупность записей обо всех файлах и каталогах, входящих в него. Каждая запись состоит из 16 байтов, 14 байтов отводится под короткое символьное имя файла или каталога, а 2 байта - под номер индексного дескриптора этого файла. В каталоге файловой системы s5 непосредственно не указываются характеристики файлов. Такая организация файловой системы позволяет с меньшими затратами перестраивать систему каталогов. Например, при включении или исключении файла из каталога идет манипулирование меньшими объемами информации. Кроме того, при включении одного и того же файла в разные каталоги не нужно иметь несколько копий как характеристик, так и самих файлов. С этой целью в индексном дескрипторе ведется учет ссылок на этот файл из всех каталогов. Как только число ссылок становится равным нулю, индексный дескриптор данного файла уничтожается.
Расположение файловой системы s5 на диске показано на рисунке 5.5. Все дисковое пространство, отведенное под файловую систему, делится на четыре области:
загрузочный блок (boot), в котором хранится загрузчик операционной системы;
суперблок (superblock) - содержит самую общую информацию о файловой системе: размер файловой системы, размер области индексных дескрипторов, число индексных дескрипторов, список свободных блоков и список свободных индексных дескрипторов, а также другую административную информацию;
Разновидностью виртуальной памяти является свопинг.
На рисунке 2.16 показан график зависимости коэффициента загрузки процессора в зависимости от числа одновременно выполняемых процессов и доли времени, проводимого этими процессами в состоянии ожидания ввода-вывода.
Рис. 2.16. Зависимость загрузки процессора от числа задач и интенсивности ввода-вывода
Из рисунка видно, что для загрузки процессора на 90% достаточно всего трех счетных задач. Однако для того, чтобы обеспечить такую же загрузку интерактивными задачами, выполняющими интенсивный ввод-вывод, потребуются десятки таких задач. Необходимым условием для выполнения задачи является загрузка ее в оперативную память, объем которой ограничен. В этих условиях был предложен метод организации вычислительного процесса, называемый свопингом. В соответствии с этим методом некоторые процессы (обычно находящиеся в состоянии ожидания) временно выгружаются на диск. Планировщик операционной системы не исключает их из своего рассмотрения, и при наступлении условий активизации некоторого процесса, находящегося в области свопинга на диске, этот процесс перемещается в оперативную память. Если свободного места в оперативной памяти не хватает, то выгружается другой процесс.
При свопинге, в отличие от рассмотренных ранее методов реализации виртуальной памяти, процесс перемещается между памятью и диском целиком, то есть в течение некоторого времени процесс может полностью отсутствовать в оперативной памяти. Существуют различные алгоритмы выбора процессов на загрузку и выгрузку, а также различные способы выделения оперативной и дисковой памяти загружаемому процессу.
Как уже отмечалось выше, для удовлетворения требований, предъявляемых к современной ОС, большое значение имеет ее структурное построение. Операционные системы прошли длительный путь развития от монолитных систем к хорошо структурированным модульным системам, способным к развитию, расширению и легкому переносу на новые платформы.
Для идентификации переменных и команд используются символьные имена (метки), виртуальные адреса и физические адреса (рисунок 2.7).
Символьные имена присваивает пользователь при написании программы на алгоритмическом языке или ассемблере.
Виртуальные адреса вырабатывает транслятор, переводящий программу на машинный язык. Так как во время трансляции в общем случае не известно, в какое место оперативной памяти будет загружена программа, то транслятор присваивает переменным и командам виртуальные (условные) адреса, обычно считая по умолчанию, что программа будет размещена, начиная с нулевого адреса. Совокупность виртуальных адресов процесса называется виртуальным адресным пространством. Каждый процесс имеет собственное виртуальное адресное пространство. Максимальный размер виртуального адресного пространства ограничивается разрядностью адреса, присущей данной архитектуре компьютера, и, как правило, не совпадает с объемом физической памяти, имеющимся в компьютере.
Рис. 2.7. Типы адресов
Физические адреса соответствуют номерам ячеек оперативной памяти, где в действительности расположены или будут расположены переменные и команды. Переход от виртуальных адресов к физическим может осуществляться двумя способами. В первом случае замену виртуальных адресов на физические делает специальная системная программа - перемещающий загрузчик. Перемещающий загрузчик на основании имеющихся у него исходных данных о начальном адресе физической памяти, в которую предстоит загружать программу, и информации, предоставленной транслятором об адресно-зависимых константах программы, выполняет загрузку программы, совмещая ее с заменой виртуальных адресов физическими.
Второй способ заключается в том, что программа загружается в память в неизмененном виде в виртуальных адресах, при этом операционная система фиксирует смещение действительного расположения программного кода относительно виртуального адресного пространства. Во время выполнения программы при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический. Второй способ является более гибким, он допускает перемещение программы во время ее выполнения, в то время как перемещающий загрузчик жестко привязывает программу к первоначально выделенному ей участку памяти. Вместе с тем использование перемещающего загрузчика уменьшает накладные расходы, так как преобразование каждого виртуального адреса происходит только один раз во время загрузки, а во втором случае - каждый раз при обращении по данному адресу.
В некоторых случаях (обычно в специализированных системах), когда заранее точно известно, в какой области оперативной памяти будет выполняться программа, транслятор выдает исполняемый код сразу в физических адресах.
Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги.
Обычные файлы в свою очередь подразделяются на текстовые и двоичные. Текстовые файлы состоят из строк символов, представленных в ASCII-коде. Это могут быть документы, исходные тексты программ и т.п. Текстовые файлы можно прочитать на экране и распечатать на принтере. Двоичные файлы не используют ASCII-коды, они часто имеют сложную внутреннюю структуру, например, объектный код программы или архивный файл. Все операционные системы должны уметь распознавать хотя бы один тип файлов - их собственные исполняемые файлы.
Специальные файлы - это файлы, ассоциированные с устройствами ввода-вывода, которые позволяют пользователю выполнять операции ввода-вывода, используя обычные команды записи в файл или чтения из файла. Эти команды обрабатываются вначале программами файловой системы, а затем на некотором этапе выполнения запроса преобразуются ОС в команды управления соответствующим устройством. Специальные файлы, так же как и устройства ввода-вывода, делятся на блок-ориентированные и байт-ориентированные.
Каталог - это, с одной стороны, группа файлов, объединенных пользователем исходя из некоторых соображений (например, файлы, содержащие программы игр, или файлы, составляющие один программный пакет), а с другой стороны - это файл, содержащий системную информацию о группе файлов, его составляющих. В каталоге содержится список файлов, входящих в него, и устанавливается соответствие между файлами и их характеристиками (атрибутами).
В разных файловых системах могут использоваться в качестве атрибутов разные характеристики, например:
информация о разрешенном доступе,
пароль для доступа к файлу,
владелец файла,
создатель файла,
признак "только для чтения",
признак "скрытый файл",
признак "системный файл",
признак "архивный файл",
признак "двоичный/символьный",
признак "временный" (удалить после завершения процесса),
признак блокировки,
Том - это первичная структура данных файловой системы 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, прилагается к системе.
Операционная система является сердцевиной сетевого программного обеспечения, она создает среду для выполнения приложений и во многом определяет, какими полезными для пользователя свойствами эти приложения будут обладать. В связи с этим рассмотрим требования, которым должна удовлетворять современная ОС.
Очевидно, что главным требованием, предъявляемым к операционной системе, является способность выполнения основных функций: эффективного управления ресурсами и обеспечения удобного интерфейса для пользователя и прикладных программ. Современная ОС, как правило, должна реализовывать мультипрограммную обработку, виртуальную память, свопинг, поддерживать многооконный интерфейс, а также выполнять многие другие, совершенно необходимые функции. Кроме этих функциональных требований к операционным системам предъявляются не менее важные рыночные требования. К этим требованиям относятся:
Расширяемость. Код должен быть написан таким образом, чтобы можно было легко внести дополнения и изменения, если это потребуется, и не нарушить целостность системы.
Переносимость. Код должен легко переноситься с процессора одного типа на процессор другого типа и с аппаратной платформы (которая включает наряду с типом процессора и способ организации всей аппаратуры компьютера) одного типа на аппаратную платформу другого типа.
Надежность и отказоустойчивость. Система должна быть защищена как от внутренних, так и от внешних ошибок, сбоев и отказов. Ее действия должны быть всегда предсказуемыми, а приложения не должны быть в состоянии наносить вред ОС.
Совместимость. ОС должна иметь средства для выполнения прикладных программ, написанных для других операционных систем. Кроме того, пользовательский интерфейс должен быть совместим с существующими системами и стандартами.
Безопасность. ОС должна обладать средствами защиты ресурсов одних пользователей от других.
Производительность. Система должна обладать настолько хорошим быстродействием и временем реакции, насколько это позволяет аппаратная платформа.
Рассмотрим более подробно некоторые из этих требований.
Следующий важный период развития вычислительных машин относится к 1965-1980 годам. В это время в технической базе произошел переход от отдельных полупроводниковых элементов типа транзисторов к интегральным микросхемам, что дало гораздо большие возможности новому, третьему поколению компьютеров.
Для этого периода характерно также создание семейств программно-совместимых машин. Первым семейством программно-совместимых машин, построенных на интегральных микросхемах, явилась серия машин IBM/360. Построенное в начале 60-х годов это семейство значительно превосходило машины второго поколения по критерию цена/произ-водительность. Вскоре идея программно-совместимых машин стала общепризнанной.
Программная совместимость требовала и совместимости операционных систем. Такие операционные системы должны были бы работать и на больших, и на малых вычислительных системах, с большим и с малым количеством разнообразной периферии, в коммерческой области и в области научных исследований. Операционные системы, построенные с намерением удовлетворить всем этим противоречивым требованиям, оказались чрезвычайно сложными "монстрами". Они состояли из многих миллионов ассемблерных строк, написанных тысячами программистов, и содержали тысячи ошибок, вызывающих нескончаемый поток исправлений. В каждой новой версии операционной системы исправлялись одни ошибки и вносились другие.
Однако, несмотря на необозримые размеры и множество проблем, OS/360 и другие ей подобные операционные системы машин третьего поколения действительно удовлетворяли большинству требований потребителей. Важнейшим достижением ОС данного поколения явилась реализация мультипрограммирования. Мультипрограммирование - это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько программ. Пока одна программа выполняет операцию ввода-вывода, процессор не простаивает, как это происходило при последовательном выполнении программ (однопрограммный режим), а выполняет другую программу (многопрограммный режим). При этом каждая программа загружается в свой участок оперативной памяти, называемый разделом.
Другое нововведение - спулинг (spooling). Спулинг в то время определялся как способ организации вычислительного процесса, в соответствии с которым задания считывались с перфокарт на диск в том темпе, в котором они появлялись в помещении вычислительного центра, а затем, когда очередное задание завершалось, новое задание с диска загружалось в освободившийся раздел.
Наряду с мультипрограммной реализацией систем пакетной обработки появился новый тип ОС - системы разделения времени. Вариант мультипрограммирования, применяемый в системах разделения времени, нацелен на создание для каждого отдельного пользователя иллюзии единоличного использования вычислительной машины.
Приведенный выше пример поможет нам проиллюстрировать еще одну проблему синхронизации - взаимные блокировки, называемые также дедлоками (deadlocks), клинчами (clinch) или тупиками. Если переставить местами операции P(e) и P(b) в программе "писателе", то при некотором стечении обстоятельств эти два процесса могут взаимно заблокировать друг друга. Действительно, пусть "писатель" первым войдет в критическую секцию и обнаружит отсутствие свободных буферов; он начнет ждать, когда "читатель" возьмет очередную запись из буфера, но "читатель" не сможет этого сделать, так как для этого необходимо войти в критическую секцию, вход в которую заблокирован процессом "писателем".
Рассмотрим еще один пример тупика. Пусть двум процессам, выполняющимся в режиме мультипрограммирования, для выполнения их работы нужно два ресурса, например, принтер и диск. На рисунке 2.6,а показаны фрагменты соответствующих программ. И пусть после того, как процесс А занял принтер (установил блокирующую переменную), он был прерван. Управление получил процесс В, который сначала занял диск, но при выполнении следующей команды был заблокирован, так как принтер оказался уже занятым процессом А. Управление снова получил процесс А, который в соответствии со своей программой сделал попытку занять диск и был заблокирован: диск уже распределен процессу В. В таком положении процессы А и В могут находиться сколь угодно долго.
В зависимости от соотношения скоростей процессов, они могут либо совершенно независимо использовать разделяемые ресурсы (г), либо образовывать очереди к разделяемым ресурсам (в), либо взаимно блокировать друг друга (б). Тупиковые ситуации надо отличать от простых очередей, хотя и те и другие возникают при совместном использовании ресурсов и внешне выглядят похоже: процесс приостанавливается и ждет освобождения ресурса. Однако очередь - это нормальное явление, неотъемлемый признак высокого коэффициента использования ресурсов при случайном поступлении запросов.
Она возникает тогда, когда ресурс недоступен в данный момент, но через некоторое время он освобождается, и процесс продолжает свое выполнение. Тупик же, что видно из его названия, является в некотором роде неразрешимой ситуацией.
Версии 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 представляет собой полную реализацию наиболее современной версии системы 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) - область памяти, доступная для чтения и записи нескольким процессам.
Ядро Mach имеет мощную, тщательно разработанную и в высшей степени гибкую систему управления памятью, основанную на страничном механизме и обладающую многими редкими свойствами. В частности, в нем машинно-зависимая часть кода отделена от машинно-независимой части чрезвычайно ясным и необычным способом. Это разделение делает управление памятью более мобильным, чем в других системах. Кроме того, система управления памятью тесно взаимодействует с коммуникационной системой.
Одной из основных особенностей системы управления памятью Mach является то, что ее код разбит на три части. Первая часть называется pmap, который работает в ядре и занимается работой с устройством отображения виртуальных адресов в физические (Memory Management Unit, MMU). Эта часть устанавливает значения регистров MMU и аппаратных страничных таблиц, а также перехватывает все страничные прерывания. Эта часть кода зависит от архитектуры MMU и должна быть переписана для каждой новой машины всякий раз, когда Mach на нее переносится. Вторая часть - это машинно-независимый код ядра, и он связан с обработкой страничных сбоев, управляет отображением областей памяти и заменой страниц.
Третья часть кода работает в пользовательском пространстве в качестве процесса, называемого "менеджер памяти" (memory manager) или иногда "внешний менеджер страниц" (external pager). Эта часть имеет дело с логическими аспектами (в отличие от физических) системы управления памятью, в основном, с управлением хранения образов памяти на диске. Например, менеджер памяти отслеживает информацию о том, какие виртуальные страницы используются, какие находятся в оперативной памяти и где они хранятся на диске, когда не находятся в оперативной памяти. Ядро и менеджер памяти взаимодействуют с помощью хорошо определенного протокола, что дает возможность для пользователей ядра Mach писать свои собственные менеджеры памяти. Такое разделение обязанностей позволяет реализовывать страничные системы специльного назначения. При этом ядро становится потенциально меньше и проще, так как значительная часть кода работает в пользовательском пространстве. С другой стороны, это и источник усложнения ядра, так как при этом оно должно защищать себя от ошибок или некорректной работы менеджера памяти. Кроме того, при наличии двух активных частей системы управления памятью возможно возникновение гонок между ними.
Важнейшей частью операционной системы, непосредственно влияющей на функционирование вычислительной машины, является подсистема управления процессами. Процесс (или по-другому, задача) - абстракция, описывающая выполняющуюся программу. Для операционной системы процесс представляет собой единицу работы, заявку на потребление системных ресурсов. Подсистема управления процессами планирует выполнение процессов, то есть распределяет процессорное время между несколькими одновременно существующими в системе процессами, а также занимается созданием и уничтожением процессов, обеспечивает процессы необходимыми системными ресурсами, поддерживает взаимодействие между процессами.
NetWare 4.x обеспечивает широкий набор функций по управлению сложной сетью, позволяющих контролировать доступ к файлам, каталогам, очередям, томам, генерировать разнообразные отчеты о событиях, происходящих в сети. Новая утилита "NetWare Administrator", работающая в среде Windows 3.1 или OS/2 2.x, обеспечивает графический интерфейс для управления сетью. В версии 4.02 эта утилита проще устанавливается и примерно втрое быстрее работает, чем в предыдущих версиях NetWare 4.0x. Появилась также возможность вывода дерева сетевого каталога на печать.
Одной из главных функций ОС является управление всеми устройствами ввода-вывода компьютера. ОС должна передавать устройствам команды, перехватывать прерывания и обрабатывать ошибки; она также должна обеспечивать интерфейс между устройствами и остальной частью системы. В целях развития интерфейс должен быть одинаковым для всех типов устройств (независимость от устройств).
При переходе с 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 потребуется свой шлюз.
Учет используемых аппаратных и программных средств. Система автоматически собирает информацию об обследованных ПК и создает записи в базе данных об аппаратных и программных ресурсах. После этого администратор может быстро выяснить, чем он располагает и где это находится. Например, узнать о том, на каких ПК нужно обновить драйверы принтеров, какие ПК обладают достаточным количеством памяти и дискового пространства и т. п.
Распределение и установка программного обеспечения. После завершения обследования администратор может создать пакеты рассылки программного обеспечения - очень эффективный способ для уменьшения стоимости такой процедуры. SMS также позволяет централизованно устанавливать и администрировать приложения, которые запускаются с файловых серверов, а также дает возможность конечным пользователям запускать такие приложения с любой рабочей станции сети.
Анализ сетевых протоколов. SMS позволяет анализировать сетевые протоколы в целях обнаружения узких мест в сети и управления сетевым трафиком.
Удаленный анализ производительности и возникающих проблем. База данных SMS хранит детальную информацию о конфигурации всех ПК в сети для того, чтобы можно было выполнять удаленный анализ возникающих проблем. Администратор может удаленно управлять мышью, клавиатурой и видеть экран любого ПК, работающего в сети под управлением MS-DOS или Windows.
: переменная S увеличивается на 1 одним неделимым действием; выборка, инкремент и запоминание не могут быть прерваны, и к S нет доступа другим процессам во время выполнения этой операции.
, выпущенная также в 1985 году, стала первой операционной системой для процессора Intel 80286, работающей в защищенном режиме.
, выпущенная в 1986 году, отличалась от предыдущих версий более высокой производительностью и возможностью объединения разнородных на канальном уровне сетей. Полностью используя возможности защищенного режима процессора 80286, Advanced NetWare обеспечила такую производительность сети, которая была недоступна операционным системам, работающим в реальном режиме и ограниченным 640 Кбайтами памяти. Версия 2.0 впервые обеспечила возможность подключения к одному серверу до четырех сетей с различной топологией, таких как Ethernet, ArcNet и Token Ring.
В 1987 году Novell выпустила систему
В 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). В вызове для назначения области можно определить базовый адрес и размер, и область выделяется там, где это указано. В другом случае может быть задан только размер области, а система сама находит подходящий диапазон адресов и возвращает базовый адрес.
Виртуальный адрес является действительным только в том случае, когда он попадает в назначенный диапазон. Попытка использовать адрес из промежутков между назначенными областями вызывает прерывание, которое может быть перехвачено самим процессом, если он этого пожелает.
В начале нашего обсуждения средств управления памятью в Mach мы кратко упомянули о менеджерах памяти пользовательского режима. Теперь рассмотрим их более детально. Каждый объект памяти, который отображается в адресное пространство процесса, должен иметь внешний менеджер памяти, который им управляет. Объекты памяти различных классов управляются различными менеджерами памяти. Каждый из них может реализовывать свою собственную семантику, может решать, где хранить данные страниц, которые не находятся в физической памяти, и следовать своим собственным правилам при решении вопроса о том, что делать с объектами после того, как их отображение в память отменяется.
Для того, чтобы отобразить какой-либо объект в адресное пространство процесса, этот процесс посылает сообщение менеджеру памяти, запрашивая операцию отображения. Для того, чтобы выполнить эту работу, нужны три порта. Первый, порт объекта
На рисунке 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-машине.
Существует два подхода к управлению нитями: статический и динамический. При статическом подходе вопрос, сколько будет нитей, решается уже на стадии написания программы или на стадии компиляции. Каждой нити назначается фиксированный стек. Этот подход простой, но негибкий. Более общим является динамический подход, который позволяет создавать и удалять нити оперативно по ходу выполнения. Системный вызов для создания нити обычно содержится в нити главной программы в виде указателя на процедуру с указанием размера стека, а также других параметров, например, диспетчерского приоритета. Вызов обычно возвращает идентификатор нити, который можно использовать в последующих вызовах, связанных с этой нитью. В этой модели процесс начинается с одной нити, но может создавать их еще, когда необходимо.
Завершаться нити могут одним из двух способов: по своей инициативе, когда завершается работа, и извне. Во многих случаях, например, при конвейерной модели, нити создаются сразу же после старта процесса и никогда не уничтожаются.
Поскольку нити разделяют общую память, они могут (и, как правило, делают это) использовать ее для сохранения данных, которые совместно используются множеством нитей, таких, например, как буфер в системе "производитель-потребитель". Доступ к разделяемым данным обычно программируется с использованием критических секций, предотвращающих попытки сразу нескольких нитей обратиться к одним и тем же данным в одно и то же время. Критическая секция наиболее легко реализуется с использованием семафоров, мониторов и аналогичных конструкций.
Нити могут быть реализованы как в пользовательском пространстве, так и в пространстве ядра. В первом случае нити работают на базе прикладной системы, управляющей всеми операциями с нитями. Первым преимуществом такого способа является то, что можно реализовать нити в операционной системе, которая их не поддерживает. ОС прикладная среда, управляющая нитями, кажется одним процессом. Все вызовы (ПРИОСТАНОВИТЬ, ПРОВЕРИТЬ СЕМАФОР и т.
д.) обрабатываются как вызовы функций этой прикладной среды. Она сохраняет регистры и переключает указатели счетчика команд и стека. В этом случае переключение происходит быстрее, чем с помощью ядра. Такая реализация имеет еще одно преимущество - для каждого процесса можно организовать свою схему планирования. Однако этот подход связан с некоторыми проблемами, одна из которых состоит в следующем. При выполнении блокирующих системных вызовов приостанавливается весь набор нитей, принадлежащих этому процессу. Чтобы избежать этого, можно сделать все системные вызовы неблокирующими, но это требует изменений в ОС, что нежелательно, так как одной из целей реализации нитей в пользовательском пространстве является их работа в существующих операционных системах.
Такой проблемы не существует при реализации нитей в пространстве ядра. Преимущество заключается также и в том, что ядро может при диспетчеризации выбирать нить из другого процесса. Однако хотя механизм управления нитями аналогичен первому случаю, временные затраты на переключение нитей выше, так как тратится время на переключение из режима пользователя в режим ядра.
Novell DOS 7 объединяет в себе средства построения одноранговой локальной сети
С середины 50-х годов начался новый период в развитии вычислительной техники, связанный с появлением новой технической базы - полупроводниковых элементов. Компьютеры второго поколения стали более надежными, теперь они смогли непрерывно работать настолько долго, чтобы на них можно было возложить выполнение действительно практически важных задач. Именно в этот период произошло разделение персонала на программистов и операторов, эксплуатационщиков и разработчиков вычислительных машин.
В эти годы появились первые алгоритмические языки, а следовательно и первые системные программы - компиляторы. Стоимость процессорного времени возросла, что потребовало уменьшения непроизводительных затрат времени между запусками программ. Появились первые системы пакетной обработки, которые просто автоматизировали запуск одной программ за другой и тем самым увеличивали коэффициент загрузки процессора. Системы пакетной обработки явились прообразом современных операционных систем, они стали первыми системными программами, предназначенными для управления вычислительным процессом. В ходе реализации систем пакетной обработки был разработан формализованный язык управления заданиями, с помощью которого программист сообщал системе и оператору, какую работу он хочет выполнить на вычислительной машине. Совокупность нескольких заданий, как правило в виде колоды перфокарт, получила название пакета заданий.
Важнейшим разделяемым ресурсом является процессорное время. Способ распределения процессорного времени между несколькими одновременно существующими в системе процессами (или нитями) во многом определяет специфику ОС. Среди множества существующих вариантов реализации многозадачности можно выделить две группы алгоритмов:
невытесняющая многозадачность (NetWare, Windows 3.x);
вытесняющая многозадачность (Windows NT, OS/2, UNIX).
Основным различием между вытесняющим и невытесняющим вариантами многозадачности является степень централизации механизма планирования процессов. В первом случае механизм планирования процессов целиком сосредоточен в операционной системе, а во втором - распределен между системой и прикладными программами. При невытесняющей многозадачности активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению процесс. При вытесняющей многозадачности решение о переключении процессора с одного процесса на другой принимается операционной системой, а не самим активным процессом.
Существует два основных типа процедур планирования процессов - вытесняющие (preemptive) и невытесняющие (non-preemptive).
Non-preemptive multitasking - невытесняющая многозадачность - это способ планирования процессов, при котором активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление планировщику операционной системы для того, чтобы тот выбрал из очереди другой, готовый к выполнению процесс.
Preemptive multitasking - вытесняющая многозадачность - это такой способ, при котором решение о переключении процессора с выполнения одного процесса на выполнение другого процесса принимается планировщиком операционной системы, а не самой активной задачей.
Понятия preemptive и non-preemptive иногда отождествляются с понятиями приоритетных и бесприоритетных дисциплин, что совершенно неверно, а также с понятиями абсолютных и относительных приоритетов, что неверно отчасти. Вытесняющая и невытесняющая многозадачность - это более широкие понятия, чем типы приоритетности. Приоритеты задач могут как использоваться, так и не использоваться и при вытесняющих, и при невытесняющих способах планирования. Так в случае использования приоритетов дисциплина относительных приоритетов может быть отнесена к классу систем с невытесняющей многозадачностью, а дисциплина абсолютных приоритетов - к классу систем с вытесняющей многозадачностью. А бесприоритетная дисциплина планирования, основанная на выделении равных квантов времени для всех задач, относится к вытесняющим алгоритмам.
Основным различием между preemptive и non-preemptive вариантами многозадачности является степень централизации механизма планирования задач. При вытесняющей многозадачности механизм планирования задач целиком сосредоточен в операционной системе, и программист пишет свое приложение, не заботясь о том, что оно будет выполняться параллельно с другими задачами. При этом операционная система выполняет следующие функции: определяет момент снятия с выполнения активной задачи, запоминает ее контекст, выбирает из очереди готовых задач следующую и запускает ее на выполнение, загружая ее контекст.
- поле разрешения записи в сегмент (при W=1 запись разрешена, при W=0 - запрещена),
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.
Фирмы 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.