Операционная система OS/2
Аналитики, занимающиеся 32-х битными операционными системами для персональных компьютеров, всегда концентрируют свое внимание на битве между Microsoft Windows и IBM OS/2, предполагая, что Microsoft имеет преимущество. Но не все согласны с такой точкой зрения. OS/2 v.2.0 была первой доступной и работающей 32-х битной операционной системой для персональных компьютеров. И она первой начала очередной круг состязаний - версия OS/2 Warp, предназначенная для клиентских машин сетей клиент-сервер и одно-ранговых сетей, появилась на рынке раньше Windows 95, позиционированной аналогичным образом. OS/2 Warp была также первой системой, включившей набор средств поддержки Internet, а также средств объектной ориентации.
Битва Microsoft - IBM на рынке настольных ОС
Когда бета-тестеры получили Chicago, первую публичную версию Windows 95, те, кто уже использовал OS/2, отметили чрезвычайную схожесть двух систем. Например, обе начинают работу с показа красивой заставки, а затем приглашают пользователя к работе за вместительным рабочим столом; обе системы рассматривают иконки и программы как объекты; обе используют правую кнопку мыши для управления поведением объектов; обе используют более 20 дискет для инсталляции. Пользовательский интерфейс обеих систем имеет одинаковый уровень изощренности, требования к аппаратным ресурсам компьютера похожи, и они обе основаны на использовании одинакового набора лежащих в основе системы технологий. Эти технологии включают многозадачность и многонитевость, способность выполнять DOS-программы с помощью виртуальных машин процессоров Intel 80x86, полную 32-х битную организацию.
И это не случайность. С тех пор, как IBM выпустила версию 2.0 OS/2, а Microsoft решила позиционировать Windows NT как корпоративную ОС, стала ясно видна важная брешь в линии операционных систем Microsoft, которую и заполнила IBM. Попытки Microsoft выдвинуть Windows 3.1 на ту же роль наиболее развитой ОС для настольных систем, что и OS/2, имели ограниченный успех. Аналитики считают, что корпорация Microsoft действительно хотела, чтобы Windows NT заняла на рынке то же место, что и OS/2, но OS/2 уже заняла его к тому времени, когда вышла Windows NT.
В результате Microsoft стала нести потери в объемах продаж, и, что более важно, терять твердую почву для своих операционных систем. Когда стало ясно, что Windows NT вряд ли в полной мере станет лидером настольных ОС высшего класса, маркетинговая машина Microsoft стала меньше говорить о возможностях Windows NT и начала говорить о возможностях Windows 95. Ясно, что IBM и OS/2 оказали значительное влияние на стратегию Microsoft в области операционных систем.
IBM, в свою очередь, постоянно создает здоровую конкуренцию для линии Windows. Windows 95 не сравнима с OS/2 2.2. Скорее конкурировать будут Windows 95 и OS/2 Warp 3/0. Warp - это выстрел с дальним прицелом, направленный на вытеснение Windows. И, хотя Warp имеет некоторые исходные преимущества и как система выглядит "лучше", Windows по прежнему является надежным выбором.
Имена операционных систем могут измениться, но равновесие в битве IBM/Microsoft останется тем же. Через два года Microsoft и IBM смогут обмениваться аналогичными выстрелами в сражении Cairo - OS/2 вместо Windows 95 - Warp.
Существуют две причины - фактическая и эмоциональная - которые мешают установлению перемирия между этими двумя компаниями:
* Фактически, IBM была в этой области первой. OS/2 превратилась в работающий продукт со свей версией 2.0 в 1992 году. С этого времени она стала многозадачной, многонитевой системой с удобным объектно-ориентированным интерфейсом. Усилия по развитию OS/2 были неторопливыми и постоянными, и система получала похвалы и поддержку на всем пути своего развития. Однако Windows по прежнему держала наибольшую долю рынка. Преимущества OS/2 были не всесторонними, и, несмотря на усилия технических и маркетинговых специалистов IBM, система не стала вполне совершенной.
В отношении управления системой, с OS/2 работать не проще, чем с Windows. Конфликты с аппаратной и программной совместимостью могут по прежнему вызывать проблемы, и их решение не выглядит универсальным и интуитивным.
* Эмоционально, IBM чувствует себя "преданной" Microsoft, которая сбежала из рядов разработчиков OS/2. Это не совсем справедливо по отношению к Microsoft, так как компания вправе вкладывать свои капиталы с ту сферу деятельности, которая по ее мнению принесет наибольшую прибыль. Хотя Microsoft могла бы вести себя более тактично и продолжать партнерство по OS/2.
Хотя сейчас IBM далеко не та компания, какою она была в те далекие дни, когда она доминировала на рынке персональных компьютеров, ей тоже не хватает такта. Эта компания была первой так долго, что она не умеет выступать на вторых ролях. Первоначальная стратегия игнорирования общественных потребностей и навязывания дорогих, но не всегда обоснованных решений, быстро потерпела неудачу. С появлением клонов персональных компьютеров отпала необходимость платить больше только за марку IBM. Поэтому с момента появления версии OS/2 2.0 IBM изменила свою стратегию. Она стала играть по тем же правилам, по которым играют остальные компании.
OS/2 - постепенные улучшения
Операционная система OS/2 начиналась как совместная разработка IBM и Microsoft (хотя большую часть работы должна была выполнить Microsoft). Изначально она была задумана как замена DOS. Уже тогда было ясно, что DOS с ее ограничениями по памяти и по возможностям файловой системы не может воспользоваться вычислительной мощностью появляющихся компьютеров. OS/2 была хорошо продуманной системой. Она должна была поддерживать вытесняющую многозадачность, виртуальную память, графический пользовательский интерфейс, виртуальную машину для выполнения DOS-приложений. Фактически она выходила за пределы простой многозадачности с ее концепцией, названной многонитевостью.
Первые версии OS/2 не оказали значительного влияния на рынок. Версия OS/2 1.0, выпущенная в 1987 году, содержала большинство технических свойств, необходимых для многозадачной ОС. Однако у нее не было менеджера графического представления (presentation manager, PM), а также отсутствовали драйверы для многих популярных принтеров и других устройств. Версия OS/2 1.1, появившаяся в 1989 году, включала рудиментарную версию PM, которая, наконец, делала возможным использование графических приложений в нескольких окнах. Однако в этой версии PM не хватало многих свойств, которые присущи развитому графическому интерфейсу, кроме того, по прежнему отсутствовали многие драйверы принтеров. Выпущенная в 1990 году версия 1.2 имела улучшенный PM, хотя он и не следовал общепринятым концепциям графического интерфейса. Появились драйверы для большинства принтеров и других периферийных устройств.
Однако дискредитация OS/2 уже произошла. Версия 1.2 не была существенно лучше предыдущих версий и все еще предъявляла значительные требования к аппаратуре. К этому времени многие пользователи решили перейти на новую платформу Windows 3.0 или подождать, пока не появится что-нибудь принципиально лучшее. Продажи OS/2 по-прежнему были вялыми и рынок не интересовался ею. Это объяснялось наличием у OS/2 ряда существенных недостатков:
* Виртуальная машина DOS, которая должна была бы обладать способностью выполнять не модифицированные приложения DOS, с самого начала имела технические изъяны. Эта виртуальная машина была разработана на базе виртуальных возможностей процессора i286, который позволял выделять сегмент памяти в 640 Кб для отдельного DOS-приложения. Однако процессор i286 в этом виртуальном режиме работал слишком медленно, поэтому виртуальная DOS-машина была реализована на основе реального режима процессора. При этом требовался перезапуск процессора для переключения между реальным и защищенным режимами. Хотя эта операция и выполнялась очень быстро и незаметно для пользователя, она была сложной и вносила путаницу.
* Microsoft и IBM не смогли в полной мере реализовать концепцию виртуальной обработки в режиме I8086: в этом режиме DOS-приложения, которые непосредственно читали или писали в аппаратные порты, переставали работать. В связи с этим не могли использоваться и популярные сетевые операционные системы на базе DOS.
* Память в этом режиме использовалась нерационально - если пользователь конфигурировал OS/2 с возможностью DOS-совместимости, то 640 КБ памяти всегда выделялись для этих целей и не могли использоваться для задач OS/2.
* Еще одним недостатком было отсутствие возможности обмена данными между DOS- и OS/2-приложениями.
* В каждый момент времени могло выполняться только одно DOS-приложение, и это приложение не могло использовать расширенную память.
В результате для пользователей OS/2 многие популярные DOS-приложения оказались недоступными, а те, что были доступны, не могли вообще взаимодействовать со средой OS/2. Время показало, что для пользователей это обстоятельство оказалось весьма важным, так как многие отказались от покупки OS/2, оставаясь с проверенной, хотя и не очень совершенной DOS.
OS/2 Warp
Общая характеристика
В конце 1994 года IBM выпустила третью главную версию OS/2, которую назвала OS/2 Warp 3 (warp - основа). Его демонстрации и развернутая рекламная компания напоминали рекламную компанию 1992 года, когда была выпущена OS/2 2.0. Во всяком случае один лозунг был точным повторением: в этой системе есть много преимуществ, которые пользователи и корпорации могут извлечь немедленно из 32-х разрядной операционной среды.
OS/2 Warp имеет хорошо продуманный объектно-ориентированный интерфейс с применением техники drug-and-drop при выполнении операций копирования, удаления, печати, а также некоторых других. Перечни свойств объектов легко доступны в меню, вызываемых щелчком правой клавиши мыши. Имеется специальная панель для размещения часто используемых документов или прикладных программ.
В состав OS/2 Warp входит набор утилит BonusPack, который содержит IBM Works - интегрированный программный пакет начального уровня, и Internet Access Kit - самый полный набор средств для сети Internet из всех средств, поставляемых в составе операционных систем, Web Browser и почта Internet Mail. В публикациях встречаются утверждения, что он более совершенен, чем набор для доступа к Internet, реализованный в Windows 95. В феврале 1995 года IBM начала продавать пакет OS/2 Warp 3 Full Pack, который содержит библиотеки Win-OS/2. Эти библиотеки дают возможность выполнять Windows-программы, не приобретая лицензионных копий Microsoft Windows.
Одним из часто критикуемых недостатков OS/2 Warp является то, что она не поддерживает 32-х битные приложения Windows (точнее, она поддерживает API Win32s, но не поддерживает полный API Windows NT, который называется Win32 и который почти полностью поддерживает Windows 95). Однако в ближайшее время этот недостаток не будет критическим, так как приложений Win32 пока немного, зато с приложениями Win16 у OS/2 Warp проблем нет. IBM говорит, что она может обеспечить поддержку приложений Win32, если этого пожелают пользователи.
В то же время в OS/2 Warp ощущается недостаток сетевых функциональных возможностей. Положение должно измениться, так как летом 1995 года IBM начала продавать следующую версию OS/2 - Warp Connect, которая содержит важнейшие драйверы и утилиты. В число новых средств входят редиректоры для операционных систем NetWare 3.х и 4.1 и OS/2 LAN Server. Версия OS/2 Warp Connect работает с протоколами IPX и NetBIOS, а также с новой реализацией протоколов TCP/IP. Этот новый комплект устанавливает двухточечное соединение по протоколу PPP вместо соединений SLIP, предусмотренных в базовом пакете OS/2 Warp. Этот комплект понизит нагрузку на центральный процессор и обеспечит одновременный доступ к локальной сети и сети Internet.
Кроме того, Warp Connect предоставляет давно ожидаемые в OS/2 средства одно-ранговой сетевой связи. Согласно сообщению фирмы IBM, в эту версию входит большое число собственных драйвером, которые смогут работать более чем с 70% существующих адаптеров Ethernet и более чем с 90% адаптеров Token Ring. То же самое программное обеспечение дает возможность клиенту Warp Connect подключаться в серверу LAN Server 4.0.
Warp Connect содержит также программу Lan Distance фирмы IBM, которая позволит соединяться через связной сервер с любым подключенным к сети устройством. В отличие от Windows 95 ОС Warp Connect не содержит средств, поддерживающих удаленный доступ через коммутируемые телефонные сети. Еще одним нововведением является справочная база данных ASK PSP на компакт-диске с интерфейсом запросов на языке, близком к естественному английскому.
Что касается почтовых услуг, то IBM выбрала для Warp Connect пакет Lotus Notes Express, а не свой собственный Ultimedia Mail/2. Notes Express позволяет соединиться с любым сервером Notes.
Как и другие версии Warp, Warp Connect тоже будет поставляться в двух версиях: одна без Windows-библиотек, другая, подобно Full Pack, с библиотеками Win-OS/2.
Внутренняя организация OS/2 Warp
На рисунке 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. Драйверы виртуальных устройств обеспечивают уровень аппаратной абстракции. Драйверы физических устройств напрямую взаимодействуют с аппаратурой.
Рис. 1. Структура OS/2
На рисунке 2 изображены сетевые средства OS/2 Warp Connect. Они делятся на четыре уровня. Прикладной уровень включает программные интерфейсы приложений операционной системы. Компоненты на уровне файловой системы отвечают за выполнение файловых операций. Транспортный уровень реализует коммуникационные протоколы. Имеется компонента Общая транспортная семантика (Common Transport Semantic), которая позволяет использовать любую файловую систему (а точнее ее редиректор) в сочетании с любым протоколом транспортного уровня.
Рис. 2. Структура сетевых средств OS/2 Warp Connect
Программное обеспечение MAC-уровня включает драйверы сетевых адаптеров и диспетчерский слой в стандарте NDIS 2.01, который позволяет различным сетевым протоколам работать через один адаптерам, и различным адаптерам связываться через общий протокол. Существует модуль преобразования ODI-NDIS, который позволяет использовать модули транспортных протоколов, реализованные в расчете на работу с диспетчерским слоем ODI компании Novell.
Диспетчер инсталлируемой файловой системы (IFS) теоретически позволяет любой прикладной программе работать с любой файловой системой.
Файловая система HPFS
HPFS - сокращенное название высокопроизводительной файловой системы (high performance file system), совместно разработанной в 1989 году корпорациями IBM и Microsoft.
Эта система была разработана, чтобы преодолеть некоторые недостатки FAT, к числу которых относятся:
* ограничения, налагаемые на размер файлов и дискового пространства;
* ограничение длины имени файла;
* фрагментация файлов, приводящая к снижению быстродействия системы и износу оборудования;
* непроизводительные затраты памяти, вызванные большими размерами кластеров;
* подверженность потерям данных.
Проблема непроизводительных потерь дискового пространства связана с тем, что место на диске выделяется целыми блоками - кластерами. Кластер - это единица дискового пространства, которыми оперирует файловая система при выделении места для файла. В среднем половина выделяемого кластера для каждого файла будет затрачиваться в пустую. Это может быть одной из причин нерационального использования памяти диска. Например, при емкости диска 510 Мбайт число размещенных на нем файлов может составить около 1,5 тысяч. В этом случае FAT приведет к потере 6 Мбайт пространства, обусловленной только размером выделяемого блока. Для очень распространенных сейчас дисков емкостью 850 Мбайт ситуация может оказаться еще более критической. На таком диске может разместиться около 2 тысяч файлов, что повлечет за собой потерю 20 Мбайт. Для сетевых дисков емкостью в несколько гигабайт потери достигают астрономических цифр. Чем больше размер раздела жесткого диска, тем больше объем минимальной неделимой области памяти, выделяемой файлу, тем больше потери.
Эти потери можно существенно сократить внедрением более эффективных файловых систем. Простой переход на HPFS, работающую в среде OS/2, позволяет вновь вернуться к первоначальному размеру выделяемого блока - 512 байт, причем для любых размеров диска. Размер вероятного выигрыша для диска емкостью 512 Мбайт, содержащего 8 000 файлов, составит около 30 Мбайт. Этот выигрыш связан с тем, что на каждом файле в среднем теряется не 4096 байт (половина размера кластера в FAT для диска данной емкости), а всего 256 байт.
В OS/2 положение осложняется применяемым методом хранения расширенных атрибутов (extended attributes). В разделе FAT файл, содержащий единственный символ, занял бы целый кластер для размещения собственно файла и еще один кластер для расширенных атрибутов.
Так как расширенные атрибуты почти всегда имеют объем меньше 300 байт, размер теряемого впустую дискового пространства изменяется от примерно половины кластера при использовании малых разделов до львиной доли объема кластер при больших разделах. В сумме на каждом файле теряется примерно кластер.
Переход на HPFS позволит сэкономить дисковое пространство. HPFS распределяет пространство, основываясь на физических 512-байтовых секторах, а не на кластерах, независимо от размера раздела. Система HPFS позволяет уменьшить и непроизводительные потери, так как в ней предусмотрено хранение до 300 байт расширенных атрибутов в F-узле файла, без захвата для этого дополнительного сектора.
Другая проблема связана с фрагментацией файлов, которая наиболее характерна для емких дисков с большим числом файлов. Фрагментация существенно сказывается на времени доступа к файлу. Другой негативный эффект фрагментации - повышенный износ диска. О серьезности этой проблемы говорит обилие утилит для дефрагментации дисков, использующих FAT.
Файловая система HPFS обеспечивает гораздо более низкий уровень фрагментации. Хотя избавиться полностью от нее не удается, снижение производительности, возникающее по этой причине, почти незаметно для пользователя.
Первые 16 секторов раздела HPFS составляют загрузочный блок. Эта область содержит метку диска и код начальной загрузки системы. Сектор 16, известный под названием суперблок, содержит много общей информации о файловой системе в целом: размер раздела, указатель на корневой каталог, счетчик элементов каталогов, номер версии HPFS, дату последней проверки и исправления раздела при помощи команды CHKDSK, а также дату последнего выполнения процедуры дефрагментации раздела. Он также содержит указатели на список испорченных блоков на диске, таблицу дефектных секторов и список доступных секторов.
Сектор 17 носит название SpareBlock (запасной блок). Он содержит указатель на список секторов, которые можно использовать для "горячего" исправления ошибок, счетчик доступных секторов для "горячего" исправления ошибок, указатель на резерв свободных блоков, применяемых для управления деревьями каталогов, и информацию о языковых наборах символов. Система HPFS использует информацию о языковых наборах, чтобы дать возможность пересылать файлы, составленные на разных языках, даже в том случае, когда имена файлов содержат уникальные для какого-либо языка символы. SpareBlock также содержит так называемый "грязный" флаг. Этот новый флаг сообщает операционной системе о том, было ли завершение предыдущего сеанса работы нормальным, либо произошло в результате сбоя электропитания, либо файлы не были закрыты должным образом по какой-то другой причине. Если этот флаг обнаружен во время начальной загрузки, то операционная система автоматически запускает утилиту CHKDSK, пытаясь обнаружить и исправить все ошибки, внесенные в файловую систему из-за неправильного выключения системы.
Рис. 3. Прием увеличения доступного непрерывного пространства
Во время форматирования раздела HPFS делит его на полосы по 8 Мбайт каждая. Каждая полоса - ее можно представить себе как виртуальный "мини-диск" - имеет отдельную таблицу объемом 2 Кбайт, в которой указывается, какие секторы полосы доступны, а какие заняты. Чтобы максимально увеличить протяженность непрерывного пространства для размещения файлов, таблицы попеременно располагаются в начале и в конце полос (рисунок 3). Этот метод позволяет файлам размером до 16 Мбайт (минус 4 Кбайта, отводимые для размещения таблицы) храниться в одной непрерывной области.
Затем файловая система HPFS оценивает размер каталога и резервирует необходимое пространство в полосе, расположенной ближе всего к середине диска. Сразу же после форматирования объем диска в HPFS кажется меньше, чем в FAT, так как заранее резервируется место для каталогов в центре диска. Место резервируется в середине диска для того, чтобы физические головки, считывающие данные, никогда не проходили более половины ширины диска.
Тот факт, что все пространство заранее распределено, также позволяет HPFS использовать специально оптимизированное программное обеспечение для более быстрой и эффективной работы с каталогами. Сравните это с системой FAT, где головкам требуется пройти весь путь к началу диска и прочитать таблицу размещения файлов, затем найти кластер, вновь пройти к началу диска, чтобы определить в FAT местонахождения следующего кластера, и так далее. Эта процедура становится еще более неудобной по мере нарастания фрагментации. Поэтому ясно, что размещение каталогов в середине диска повышает производительность системы. Вместе с тем, такое предварительное распределение не накладывает ограничений на число файлов, которые могут быть размещены на жестком диске. В редких случаях, когда системе HPFS потребуется больше пространства, чем изначально было отведено под каталоги, она может выделить дополнительное пространство из любой доступной области диска.
Число файлов в каждом блоке каталога - переменная величина, зависящая от длины имен файлов, которые содержатся в нем. Имена файлов в HPFS могут иметь длину до 254 символов, они сортируются в порядке, определяемом последовательностью символов в текущей кодовой странице системы.
Скорость работы увеличивается также благодаря способу хранения элементов каталогов. Система FAT последовательно просматривает каждый элемент каталога, чтобы отыскать нужный файл. Поэтому в самом худшем случае приходится перебирать все файлы в каталоге, прежде, чем найдется нужный. Но HPFS использует для хранения элементов каталогов структуру данных, называемую В-деревом. Каждый элемент каталога начинается с числа, представляющего длину элемента, которая изменяется в зависимости от длины имени файла. Затем следуют время и дата создания файла, его размер и атрибуты (только для чтения, архивный, скрытый и системный), а также указатель на F-узел файла. Каждый файл (и каталог) имеет F-узел - структуру данных, занимающую один сектор и содержащую принципиально важную информацию о файле.
F-узел содержит указатель на начало файла, первые 15 символов имени файла, дополнительные временные маркеры последней записи и последнего доступа, журнал, хранящий информацию о предыдущих обращениях к файлу, структуру распределения, описывающую размещение файла на диске, и первые 300 байт расширенных атрибутов файла. (Расширенные атрибуты редко занимают более 300 байт, что фактически означает, что HPFS для получения этой информации приходится читать на один сектор меньше, чем FAT.) Программы LAN Server и LAN Manager фирмы IBM также сохраняют в F-узле информацию об управлении пользовательским доступом (Access Control). Заметьте, что F-узлы хранятся в смежных с представляемыми ими файлами секторах, поэтому, когда файл открывается, то четыре автоматически считываемых в кэш сектора содержат F-узел и три первых сектора файла.
Структура размещения HPFS имеет дополнительные преимущества по сравнению с FAT благодаря техническому приему, называемому кодированием по длине выполнения (Run Length Encoding, RLE). Вместо того, чтобы определять в таблице каждый используемый сектор, HPFS сохраняет указатель на первый сектор и число последовательно расположенных используемых секторов. Каждая область дискового пространства, описываемая парой (сектор, длина), называется экстентом. Хотя HPFS и сводит фрагментацию к минимуму, файлы все же могут быть в некоторой степени фрагментированными. В таких ситуациях пары, описывающие экстенты, добавляются к F-узлу файла. Один F-узел может хранить до 8 экстентов, обеспечивая достаточное пространство для большинства файлов.
А если все же потребуется еще большее пространство, то HPFS изменяет структуру таким образом, что F-узел становится корнем В+-дерева секторов размещения. В+-дерево является вариантом бинарного В-дерева. Созданное как структура для более быстрого обнаружения данных по сравнению с методом последовательного перебора, бинарное дерево состоит из ветвей, каждая из которых представляет выбор одного из двух возможных продолжений. Короткое дерево территориальных телефонных кодов может выглядеть так, как показано на рисунке 4,а. Здесь левая ветвь соответствует числам с меньшими значениями, чем значение в точке разветвления, а правая - с большими. Пусть выполняется поиск, например, кода 513. Вначале анализируется код в вершине дерева, поскольку 513 больше 212, то дальнейший поиск осуществляется по правой ветви. Так как 513 больше 407, то вновь поиск идет по правой ветви, где и находится нужный элемент данных. Для того, чтобы найти данные с помощью этого метода, потребовалось выполнить только два сравнения, в то время как для последовательного перебора могло бы потребоваться пять сравнений.
Рис. 4. Бинарные древовидные структуры
Эффективность бинарных деревьев зависит от последовательности, в которой в них добавляются новые элементы данных. Если, например, добавить код 617, то он будет следовать за кодом 513, а если добавить еще один код 714, то он последует за кодом 617. Поэтому, если элементы добавляются в порядке возрастания, то результирующее дерево становится все более похожим на последовательную структуру (рис. 4,б).
Структура В-дерева была разработана в целях предотвращения этой проблемы. Методы управления В-деревьями обеспечивают сбалансированность дерева. Структуру на рисунке 4 (б) лучше реорганизовать так, чтобы она приняла вид, показанный на рисунке 4 (в). Это делает дерево более эффективным, но приводит к дополнительным затратам, так как его балансировка выполняется всякий раз при добавлении или удалении элемента, либо при изменении значения элемента.
Возвращаясь к методу описания физической структуры файла, основанному на экстентах, следует учесть, что многие современные контроллеры дисков могут читать за одно обращение сразу несколько секторов. Применяемая в HPFS схема значительно повышает шансы использовать эту возможность, при этом происходит еще большее уменьшение числа требуемых операций взаимодействия между программой, файловой системой, драйвером дискового устройства и физическим диском.
HPFS имеет и другие оптимизирующие функции. Так при открытии или создании файла интеллектуальный алгоритм выделяет наиболее подходящую полосу. Программный интерфейс, используемый для создания файла, позволяет программисту сообщить операционной системе предполагаемый размер файла. С помощью этой информации HPFS может заранее выбрать для размещения файла полосу, имеющую непрерывную область наибольшего размера. Именно поэтому HPFS наиболее эффективно работает в больших разделах - больше число полос предоставляет большие возможности выбора.
Предположим, что многонитевая операционная система одновременно создает четыре новых файла на диске, использующем FAT. Так как для каждого файла нужен новый сектор, то он занимает ближайший доступный сектор в таблице размещения файлов. Это приводит к значительной фрагментации, так как кластеры между файлами распределяются вперемежку. HPFS выделила бы каждому из четырех файлов отдельную полосу, чтобы их содержимое оставалось непрерывным.
Как уже упоминалось, при открытии файла F-узел и первые три сектора считываются и помещаются в кэш. Если открываемый файл - исполняемый или если по данным журнала доступа к файлам в F-узле видно, что файл после открытия часто читается целиком, то многие секторы будут предварительно автоматически прочитаны и помещены в кэш.
Операции записи в кэш осуществляются особым образом, который называется "ленивой" записью. Когда программа посылает команду записи, HPFS помещает данные в кэш и немедленно сообщает программе, что операция выполнена, и только потом в фоновом режиме данные перемещаются из оперативной памяти на устройство. Это исключает длительную задержку, сопровождающую действительную операцию записи данных на устройство ввода-вывода. Однако при этом существует риск нарушения целостности данных. Например, уже после того, как программа получила от ОС сообщение об успешном завершении операции ввода-вывода, при попытке записать данные из кэша на диск драйвер этого устройства может сообщить об ошибке обращения к диску. В таком случае весьма полезным является список блоков "горячего" исправления.
Если попытка записи на диск заканчивается неудачно, то HPFS отыскивает в SpareBlock блок, который можно использовать для "горячего" исправления. Данные записываются в область "горячего" исправления, а таблицы неисправных блоков обновляются, указывая испорченный сектор и блок. HPFS будет автоматически перенаправлять запросы чтения по новому адресу. Во время очередного выполнения утилиты CHKDSK файл будет скопирован в новое место, где он может храниться в непрерывной области. При обращении к нему нет необходимости переходить к блоку "горячего" исправления и обратно. Блок будет освобожден для использования в случае возникновения другой подобной проблемы. Таким образом, проблема решается автоматически без участи пользователя.
Для повышения эффективности система HPFS также предоставляет многоуровневые кэши. Например, она сохраняет в кэше подкаталоги, а также полное составное имя, записав в памяти контрольную сумму, однозначно определяющую путь к файлу. Поэтому при обращении к файлу, расположенному в глубоко вложенном каталоге, скорее всего будет возможен быстрый доступ сразу в нужный каталог без поиска по дереву каталогов.
HPFS обладает повышенной отказоустойчивостью по сравнению с FAT. Если на диске с FAT оказалась стертой таблица распределения файлов, то скорее всего окажутся потерянными все данные, которые находятся вне корневого каталога. В системе HPFS вместо таблицы размещения файлов применяется битовый массив, который содержит флаг, помечающий используемые секторы. Если область битового массива будет разрушена, пользователь этого не заметит, даже если это случится во время работы системы. F-узел файла также содержит информацию о размещении каждого файла. Поэтому область битового массива может быть восстановлена после поиска этой информации в F-узлах. Пользователь не увидит даже предупреждения - поиск выполняется автоматически. Этот процесс может быть запущен и с помощью утилиты CHKDSK, которая сравнивает битовый массив с информацией для файла о принадлежащих ему секторах. Если при чтении битового массива обнаруживается ошибка, то создается новый битовый массив.
В системе FAT при порче каталогов теряются указатели на начало цепочки кластеров каждого файла. Можно соединить отдельные кластеры в файл, но многое придется делать в ручную. Так как утилиты, подобные CHKDSK, не знают имени файлов, то для того, чтобы восстановить их старые имена, придется загружать файлы в текстовый редактор и пытаться определить, что они из себя представляют.
При работе с HPFS в случае потери каталога у каждого файла из этого каталога теряется лишь дата последней операции записи в файл и иных изменений, дата создания и длинное имя файла (символы, следующие за первыми пятнадцатью). Элемент каталога - это всего лишь указатель на F-узел. В F-узле хранятся первые 15 символов имени файла (плюс информация о том, имелись ли в имени файла другие символы, кроме первых 15) и прочая информация, нужная для доступа к файлу. Утилиты восстановления могут впоследствии найти в F- узле сведения о том или ином файле. Эта избыточность, обеспечиваемая каталогом и F-узлами, значительно увеличивает шансы на восстановление данных. CHKDSK в настоящее время - единственная утилита восстановления, поставляемая с OS/2, которая, к сожалению, пока не использует всю имеющуюся информацию.
HPFS не налагает ограничений на максимальный размер файла, но OS/2 в настоящее время устанавливает предел в 2 Гбайта на один файл. Цель HPFS - доведение размера раздела до 2 Тбайт, но сегодня имеется ограничение в 64 Гбайта, поскольку некоторые части системы HPFS до сих пор остаются 16-разрядными.
1