47464 (608267), страница 3
Текст из файла (страница 3)
Плоская модель памяти
NetWare работает в защищенном режиме CPU (protected mode), используя все преимущества процессоров, связанные с 32-разрядной адресацией памяти.
В защищенном режиме память адресуется непрерывным диапазоном адресов. Эта так называемая "плоская" (flat) модель памяти делает управление памятью более удобным и гибким. В этом случае нет необходимости переключать сегменты памяти, так как вся память состоит из одного сегмента. При работе в "реальном" режиме CPU отдельная операция по выделению памяти ограничена размером 64 К, так как 64 К - это максимальный размер сегмента. Работа в 32-разрядном режиме значительно повышает скорость выполнения всех компонентов и модулей ОС.
Нити и невытесняющая многозадачность
Другим преимуществом защищенного режима является возможность выполнять несколько программ одновременно. Часто это называют многозадачностью (multitasking). В NetWare реализован механизм "нитей" (thread), который позволяет использовать все преимущества расщепления одного процесса на несколько параллельно выполняемых нитей. NetWare обеспечивает удобные средства для реализации многонитевых процессов.
Существует несколько вариантов реализации алгоритма диспетчирования нитей. NetWare использует метод невытесняющей многозадачности (nonpreemptive multitasking). Это означает, что обычно невозможно прерывание приложений и их нитей другими приложениями и нитями. Иногда этот метод называют "окружением хороших парней", так как ожидается, что приложения будут вести себя вежливо по отношению к системным ресурсам. Фактически, если приложение не отдает периодически управление CPU, чтобы дать возможность другим приложениям выполняться, то будет работать только это приложение. Следовательно, при работе в таком режиме очень важно понимать последствия захвата CPU и быть "хорошим парнем" среди равных. Главным же преимуществом невытесняющей многозадачности является более быстрое переключение с нити на нить по сравнению с вытесняющей многозадачностью (preemptive multitasking), когда нить процесса прерывается в неожиданный и часто неудобный для нее момент времени, и ОС приходится сохранять гораздо больше информации о прерванном состоянии нити, чем в случае, когда нить сама отдает управление ОС.
Из-за того, что NetWare использует режим невытесняющей многозадачности, она не очень заботится о управлении поведением нитей, которые выполняются. NetWare хранит информацию о том, какая нить выполняется, с каким приоритетом и как долго это происходит, но навязывает нитям свои ограничения только в экстремальных ситуациях. Обычно NetWare считает, что все нити справедливо разделяют процессор, достаточно часто отдавая ему управление. Это позволяет NetWare самой работать более эффективно.
Кэширование диска
Вся оперативная память, оставшаяся после загрузки ОС и дополнительных модулей, используется для кэширования диска, что, файлам при соответствующих размерах оперативной памяти, естественно, существенно повышает скорость обращения к дисковым.
Элеваторный поиск
В ОС NetWare предусмотрен отдельный процесс чтения с диска, который считывает данные с жестких дисков сервера и размещает их в кэш-буферах. Этот процесс сортирует поступающие запросы на чтение и располагает их в порядке приоритетов, в зависимости от текущего положения головок дисковода. Такой метод обслуживания запросов, называемый элеваторным поиском (elevator seeking), оптимизирует перемещение головок и в результате позволяет значительно увеличить пропускную способность дисковой подсистемы при большой интенсивности запросов.
Параллельный поиск
Если на сервере имеется несколько дисковых каналов, то NetWare может параллельно осуществлять поиск данных на нескольких дисках (по одному диску на канал). Это существенно повышает производительность.
Способы обеспечения открытости и расширяемости
Все сетевые сервисы, утилиты сервера или работающие на сервере приложения выполнены в NetWare в виде загружаемых модулей - NetWare Loadable Modules, NLMs, которые могут динамически загружаться и выгружаться в любое время без остановки сервера. Структура ОС NetWare приведена на рисунке 4.
Рис 4. Структура ОС NetWare
Ядро системы, называемое System Executive, выполняет базовые задачи ОС по управлению памятью, планированию и диспетчированию нитей, управлению файловой системой, также поддерживает программную шину для интерфейса NLM'ов. Каждый NLM выполняет либо функции операционной системы (драйвер диска или сетевого адаптера, утилита пространства имен, файловый сервер или модуль почтового сервиса), либо является пользовательским модулем, реализующим дополнительный сетевой сервис - например, сервис SQL-сервера или сервера печати. Для ядра системы все модули NLM равноправны, поэтому расширение или сужение функций системы осуществляется путем добавления или выгрузки соответствующего NLM'а.
Novell обеспечивает расширяемость системы NetWare за счет предоставления программистам набора инструментальных средств и строго описанных интерфейсов API для разработки собственных NLM-приложений, использующих все возможности 32-разрядного окружения. В настоящее время существует большое количество программных систем третьих фирм, реализованных в виде NLM-приложений, для серверов NetWare - серверы баз данных, коммуникационные серверы и т.п.
Открытость ОС NetWare обеспечивается поддержкой ею наиболее популярных стеков протоколов в строгом соответствии с существующими стандартами. NetWare поддерживает такие популярные сетевые протоколы, как IPX/SPX, TCP/IP, Apple Talk, и средства их мультиплексирования, такие как STREAMS и TLI. Стандарт ODI позволяет независимым разработчикам сетевых адаптеров легко включать свои NLM-драйверы в состав серверной ОС NetWare. Кроме того, фирма Novell разработала для NetWare большое количество программных средств - шлюзов к другим широко распространенным сетям, таким, как сети Internet и SNA.
4.3 Способы обеспечения надежности
В системах NetWare предусмотрен ряд функций, обеспечивающих надежность системы и целостность данных. Ниже перечислены функции, которые обеспечивают защиту всех частей сервера: от устройств хранения данных до критичных файлов прикладных программ. Наличие таких функций позволяет NetWare обеспечить очень высокий уровень надежности сети.
Средства обеспечения надежности SFT I:
Проверка чтением после записи. После записи на диск каждый блок данных немедленно считывается в память для проверки читаемости. Первоначальное содержание блока не стирается до окончания проверки. Если данные не читаются, они записываются в другой блок диска, а первый блок помечается как дефектный.
Дублирование каталогов. NetWare хранит копию структуры корневого каталога. Если портится основная структура, то начинает использоваться резервная.
Дублирование таблицы размещения файлов FAT. NetWare хранит копию FAT и использует ее при порче основной таблицы FAT.
Оперативное исправление 1 (Hot Fix 1). Запись или перезапись данных из дефектных блоков в специальную резервную область диска.
Контроль UPS.
Средства обеспечения надежности SFT II:
Зеркальное отображение дисков, подключенных к одному дисковому контроллеру (Disk Mirroring).
Дуплексирование дисков, подключенных к различным дисковым контроллерам (Disk Duplexing).
Оперативное исправление 2 (Hot Fix 2). Повторное выполнение операции чтения на отраженном диске и запись данных в резервную область.
Система отслеживания транзакций (TTS).
Средства обеспечения надежности SFT III заключаются в полном динамическом зеркальном отображении двух серверов, которые могут находится на значительном удалении друг от друга (при использовании оптоволоконного кабеля для межсерверной связи - до 4 км).
4.4 Защита информации
Средства защиты информации встроены в NetWare на базовых уровнях операционной системы, а не являются надстройкой в виде какого-либо приложения. Поскольку NetWare использует на файл-сервере особую структуру файлов, то пользователи не могут получить доступ к сетевым файлам, даже если они получат физический доступ к файл-серверу.
Операционные системы NetWare содержат механизмы защиты следующих уровней:
защита информации о пользователе;
защита паролем;
защита каталогов;
защита файлов;
межсетевая защита.
В 1983 году фирма Novell ввела в систему концепций локальной сети понятия имени пользователя, пароля и характеристики пользователя (user profile). Характеристика пользователя содержит перечень ресурсов, к которым пользователь имеет доступ, и права, которыми он обладает при работе с этими ресурсами. Администратор сети может ограничить права пользователя по входу в сеть датой, временем и конкретными рабочими станциями. Средства обнаружения нарушений защиты и блокировки действий нарушителя извещают администратора сети о попытках несанкционированного доступа.
В версии NetWare 3.12 пароли хранятся на сервере в зашифрованном виде. Пароль, задаваемый пользователем, передается по кабелю также в зашифрованном виде, что обеспечивает защиту от попыток узнать пароль путем "прослушивания" сети.
В версии NetWare 6.x использована более надежная схема идентификации пользователя при логическом входе в сеть, основанная на использовании технологии защиты RSA public key/private key. При использовании этой технологии пароль и личный ключ пользователя никогда не передаются по кабелям, что полностью исключает возможность узнать чужой пароль. В службу каталогов NDS также введен новый уровень управления доступом, который может быть введен в действие администратором в любой части сети.
С точки зрения защиты ОС NetWare не делает различия между операционными системами рабочих станций. Станции, работающие под управлением DOS, Windows, OS/2, Macintosh и UnixWare, обслуживаются совершенно одинаково, и все функции защиты применяются ко всем операционным системам, которые могут использоваться в сети NetWare.
4.5 Управление процессами
Каждый NLM стартует в ОС NetWare как по крайней мере одна нить (ее можно считать процессом в традиционном понимании этого термина), которая создается неявным образом при запуске функции main() программы, но однонитевые процессы в NetWare являются редким исключением. Функциональные особенности файл-сервера предопределяют большие выгоды при расщеплении процесса обслуживания параллельных запросов к файлам, поступающих одновременно от нескольких пользователей, на несколько нитей. Концепция нитей упрощает программирование этого параллелизма, так как подпроцесс обслуживания одного запроса внутри одной нити программируется как последовательный процесс, то есть процесс, в котором все стадии выполнения протекают в естественной последовательности. Параллелизм же выполнения нескольких запросов реализуется на уровне планировщика операционной системы. NetWare сама запускает много внутренних процессов, таких как процесс обновления кэша или процесс обработки командной строки консоли, которые являются многонитевыми. Все нити одного NLM разделяют общее адресное пространство.
При переключении нитей операционная система использует контекст нити, который является мгновенным снимком рабочей среды нити. В общем случае в контекст нити входят различные переменные, содержание экранов, указатели, счетчики, ссылки, управляющая информация и другие параметры. При переключении с одной нити на другую контекст снимаемой с выполнения нити запоминается ОС, а контекст запускаемой нити восстанавливается. Время переключения во многом зависит от размера контекста, и алгоритм невытесняющей многозадачности работает быстрее вытесняющего алгоритма и из-за того, что в первом случае контекст нити или процесса (в ОС, поддерживающих только концепцию процесса) имеет меньшие размеры.
Рис 5. Соотношение между глобальным, групповым и индивидуальным контекстами нитей в NetWare
В среде NetWare различается три вида контекстов нитей: глобальный контекст, контекст группы нитей и контекст отдельной нити. Эти контексты вложены друг в друга, как это показано на рисунке 5. Соотношение между данными этих контекстов напоминает соотношение глобальных и локальных переменных в программе, написанной на языке C. Глобальный контекст является общим для всех нитей данного NLM'а, и все его переменные видны для всех его нитей. В NetWare можно создавать несколько групп нитей внутри одного NLM-процесса, и эти группы имеют свой групповой контекст. Все нити группы видят переменные контекста своей группы, но не видят переменных контекста другой группы. И, наконец, каждая отдельная нить имеет свой собственный контекст. Содержимое этого контекста доступно только для данной нити.













