Индекс
НазадОглавлениеВперед

Глава 4. Операционная система OS/2

4.1. История и архитектура

Первая версия OS/2 появилась в 1987 г. и являлась совместной разработкой фирм IBM и Microsoft. В ходе работы над следующими версиями фирма Microsoft, во-первых, сочла завышенными требования IBM к надежности, во-вторых, решила делать ставку на свой продукт Windows и прекратила свое участие в проекте.

Первая версия OS/2 предназначалась для компьютеров на базе процессора Intel 80286 с его 16-разрядным словом и сегментной моделью виртуальной памяти. В последующих версиях и релизах поэтапно вводились: новая файловая система, графический интерфейс, сегментно-страничная модель памяти, 32-разрядность. Однако, все релизы первой и второй версий OS/2 [6] предъявляли требования к ресурсам, превышающие средний уровень имеющихся в то время ПЭВМ, поэтому эти версии были несколько "тяжеловесны". Этот недостаток был устранен в версии 3 - OS/2 Warp (1995 г.), в которой все свойства ОС были оптимизированы в компактном ядре. Эта версия стала выходить как клиентской, так и в серверной редакции (в последнюю был включен продукт IBM LAN Server).

Архитектура OS/2 Warp [20] показана на рисунке 4.1.


Рисунок 4.1 Архитектура OS/2 Warp

При значительном сходстве с архитектурой Windows 9x архитектура OS/2 Warp обладает рядом существенных отличий от нее.

Системная виртуальная машина OS/2 обеспечивает выполнение приложений OS/2 - 16- и 32-разрядных. Отдельная виртуальная машина создается для эмуляции среды Windows 3.x, в этой среде 16-разрядные приложения Windows выполняются в общем адресном пространстве, в режиме невытесняющей многозадачности - как и в Windows 9x. Однако, можно запускать приложения Windows и в отдельных адресных пространствах, тогда они выполняются в режиме вытесняющей многозадачности вместе с другими приложениями Windows, OS/2 и MS DOS. Приложения MS DOS выполняются каждое в среде собственной виртуальной машины MS DOS. Отдельной частью ядра OS/2 является ядро VDM (виртуальной машины MS DOS), которое обеспечивает эмуляцию функций MS DOS (в отличие от Windows 9x здесь нет кода ОС MS DOS), эмуляцию процессора Intel 8086 и диспетчеризацию виртуальных машин MS DOS.

Графическая оболочка Workplace Shell является отдельным приложением, запускаемым опционно, OS/2 может функционировать и без графической оболочки, в режиме командной строки.

4.2. Многозадачность

С самого начала OS/2 являлась многозадачной системой с вытесняющей многозадачностью. Многозадачность в этой системе имеет три уровня: сеанс, процесс, нить.

Сеанс - это окно на экране. Сеанс может быть запущен в полноэкранном или оконном режиме. Каждый сеанс имеет собственную виртуальную консоль, включающую в себя логические эквиваленты монитора, клавиатуры и мыши; командный прцессор (CMD.COM в сеансах OS/2 или COMMAND.COM в сеансах MS DOS); начальный командный файл (OS2ININ.CMD в сеансах OS/2 или AUTOEXEC.BAT в сеансах MS DOS). Сеанс предоставляет пользователю самостоятельную рабочую среду (MS DOS, Windows 3.x или OS/2). Когда сеанс выдвигается на передний план, соответствующая сеансу виртуальная консоль становится эквивалентной физической консоли. API OS/2 позволяет порождать новые сеансы и управлять из родительского сеанса состоянием сеанса дочернего.

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

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

С самого начала OS/2 проектировалась как система с вытесняющей многозадачностью. Участки нереентерабельного кода в ядре системы минимизированы, а MS DOS и Windows также эмулируются ядром, поэтому OS/2 в состоянии обеспечить более оперативное переключение процессов, чем Windows 95. OS/2 управляет процессами в режиме квантования времени, размер кванта является параметром, задаваемым при загрузке системы. При освобождении процессора или по истечении кванта активным назначается процесс с наивысшим приоритетом. В системе имеются следующие 4 класса приоритетов процессов (в порядке убывания приоритетности):

Внутри каждого класса приоритет процесса перевычисляется динамически (имеется еще по 32 градации приоритета в каждом классе) по таким правилам:

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

Ранние версии OS/2 были ориентированы на сегментную модель виртуальной памяти. OS/2 Warp обеспечивает для процесса плоскую модель памяти, хотя поддерживает также и API старой, сегментной модели. Структура виртуального адресного пространства процесса OS/2 показана на рисунке 4.2.


Рисунок 4.2 Адресное пространство процесса OS/2

Качественно структура адресного пространства процесса - такая же, как и в Windows 95. В последних релизах OS/2 Warp Server for e-business граница частного адресного пространства процесса может быть поднята до 3 Гбайт. Плоская модель памяти обеспечивается теми же средствами, что и в Windows 95: единственный сегмент для процесса и использование каталога страниц. Однако, в OS/2 на одни и те же таблицы страниц второго уровня указывают только элементы страничных каталогов, относящихся к адресному пространству выше 3 Гбайт. Поэтому объекты, совместно используемые несколькими процессами, имеют разные виртуальные адреса для разных процессов.

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

4.4. Устройства и файловая система

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

Подобно Windows 95, OS/2 обеспечивает инсталлируруемые файловые системы. Только файловая система FAT-16 поддерживается ядром ОС. Сетевая файловая система и CDFS поддерживаются через механизм инсталлируемой файловой системы. Основная же инсталлируемая файловая система OS/2 - HPFS.

HPFS - Hight Performance File System (высокопроизводительная файловая система) - разработана совместно фирмами IBM и Microsoft в период их совместной работы над OS/2 версии 1.2. HPFS была призвана прежде всего заменить FAT MS DOS и отличается от последней высокой эффективностью в управлении жесткими дисками большого объема и поддержкой длинных (до 255 символов имен файлов). Структура тома в HPFS показана на рисунке 13.10.а. Начальная часть диска (16 блоков) резервируется под блок загрузки и загрузочную информацию, суперблок, запасной блок (копию суперблока) и т.д. Корневой каталог HPFS расположен в логической середине диска, чтобы минимизировать перемещение головок. Эти системные структуры используются для загрузки ОС, поддержки работы файловой системы и восстановления. Распределяемое дисковое пространство разбивается на, так называемые, полосы размером по 8 Мбайт каждая. Каждой полосе соответствует битовая карта размером 2 Кбайт. Один элемент битовой карты соответствует одному 512-байтному блоку (сектору) полосы и отражает его состояние (занят/свободен). Битовые карты поочередно размещаются в начале и в конце каждой полосы, таким образом, две смежные полосы образуют непрерывный участок дискового пространства размером около 16 Мбайт. Файловая система планирует размещение новых файлов на диске по возможности в непрерывном участке дискового пространства. Кроме того, за концом нового файла оставляется свободный участок "на вырост", что дает файлу возможность в будущем расширяться, не теряя непрерывности в размещении.


а). структура тома HPFS


б). элемент каталога HPFS

Рисунок 4.3 Файловая система HPFS

Организация файлов и каталогов в HPFS включает в себя две структуры, показанные на рисунке 4.3.б: элемент каталога (DIRBLK) и дескриптор файла или каталога (Fnode). В суперблоке содержится указатель на дескриптор корневого каталога. Каталог состоит из элементов каталога, которые организованы в сбалансированное двоичное дерево, упорядоченное для поиска по имени файла/каталога. В элементе каталога содержится указатель на дескриптор файла/каталога. Основное содержание дескриптора - план размещения файла. Как отмечалось выше, файловая система стремится разместить весь файл в одном экстенте, но не гарантирует такого размещения. Файлы, характеризующиеся значительной изменчивостью, могут занимать большое число экстентов. Элемент плана размещения состоит из начального адреса экстента и его длины. Описания 8 экстентов могут быть размещены непосредственно в дескрипторе. Если же файл состоит из большего числа экстентов, план его размещения структурируется в B-дерево с корневым узлом в дескрипторе.

Для повышения производительности HPFS использует кеширование данных при записи на диск и отложенную запись

Новая версия этой файловой системы - HPFS386 оптимизирована для работы с новыми поколениями процессоров Intel/Pentium и большими дисковыми системами. Она отличается тем, что значительная часть драйвера файловой системы работает на уровне защиты 0. В ней значительно увеличены размеры кешей, сняты некоторые ограничения, повышена надежность (поддерживается технология RAID-1). HPFS386 интегрируется с IBM LAN Server и обеспечивает хранение списков контроля доступа в файловой системе.

4.5. Средства взаимодействия

OS/2 обладает полным набором средств взаимодействия процессов, описанным нами в главе 9 части 1.

В системе имеется 9 типов сигналов (в том числе 3 - пользовательских) с возможностью устанавливать их собственную обработку или игнорировать сигнал (кроме сигнала KILL).

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

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

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

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

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

4.6. Другие свойства OS/2

Хотя OS/2 в настоящее время позиционируется на рынке как серверная ОС, ее ядро продолжает оставаться однопользовательским, то есть, на уровне ядра OS/2 пользователей не различает. Защита в ядре относится прежде всего к защите ресурсов процессов, которая обеспечивается надежной изоляцией адресных пространств процессов друг от друга. Контроль доступа обеспечивается промежуточным программным обеспечением (IBM LAN Server и др.), поставляемым "в одной коробке" с OS/2.

Графический интерфейс OS/2 во многом напоминает интерфейс Windows 95. Это объясняется тем, что разработчики обеих систем брали за образец интерфейс MacOS. Однако IBM разрабатывала интерфейс OS/2 в непосредственном сотрудничестве с фирмой Apple, поэтому он не только внешне подобен образцу, но и полностью воплощает его объектно-ориентированные свойства. Workplace Shell (рабочий стол) и Warp Center (панель быстрого доступа, подобная линейке программ в Windows 9x) являются приложениями, запускаемыми по выбору.

OS/2 может также работать и в режиме командной строки. Набор команд OS/2 является расширением набора команд MS DOS. Наиболее интересной из этого расширения нам представляется команда CALL, которая позволяет запустить программу без ожидания ее завершения. Именно команда CALL создает возможность запускать несколько процессов в одном сеансе OS/2. OS/2 имеет богатейшие возможности для командных файлов, которые обеспечиваются языком REXX, являющимся неотъемлемой частью ОС. Команды и программы, выполняемые в интерпретаторе REXX, имеют возможность обмениваться сигналами и данными, используя перенаправление ввода-вывода или интерфейс очередей.

В первые два года своего существования OS/2 Warp, а затем и ее версия 4 - Merlin - конкурировала на рынке персональных ОС с Windows 95. Так, OS/2 Merlin стала первой ОС со встроенной поддержкой мультимедиа, голосового ввода и Java-платформой. Несмотря на то, что по объективным показателям OS/2, по крайней мере, не уступала своему конкуренту, она потерпела поражение, предже всего - из-за отсутствия должной рекламы. В 1998 г. фирма IBM решила, что рынок персональных систем не входит в сферу ее стратегических интересов, и позиционировала OS/2 как серверную систему. В таком качестве OS/2 приобрела значительное число корпоративных пользователей, особенно в Европе. Версия 5 OS/2 - Aurora, расширенная прежде всего поддержкой SMP-архитектуры и файловой системой JFS, заимствованной из ОС AIX (см. главу 7), появилась в 1999 г. Долгое время она существовала только в серверном варианте, и только в 2001 г. появилась клиентская редакция этой версии. Хотя OS/2 продолжает эксплуатироваться и развиваться, в настоящее время фирма IBM исключила из своих стратегических интересов любые ОС для платформы Intel/Pentium (а возможно - и саму эту платформу) и не занимается продвижением OS/2 на рынке. Поскольку стратегия разработки приложений IBM в последнее время диктует ориентацию на платформенную независимость, IBM предлагает использовать OS/2 прежде всего как платформу для разработчиков Java-приложений с последующим переносом результатов на другие платформы. Предложение вполне разумное, так как OS/2 является, во-первых, чрезвычайно устойчивой, а во-вторых, виртуальная машина Java от IBM для OS/2 является одной из самых эффективных (если не самой эффективной) из всех существующих.

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

Контрольные вопросы

  1. Как изменялась модель памяти OS/2 в ходе ее эволюции?
  2. Каковы уровни многозадачности в OS/2?
  3. Встроена ли MS DOS в OS/2?
  4. Каким из способов, описанных в главе 9 части I, реализованы в OS/2 Warp общие области памяти? Сопоставьте это с их реализацией в Windows 9x.
  5. В чем преимущества файловой системы HPFS по сравнению с FAT-16? по сравнению с FAT-32?
  6. Чем принципиально отличается Workplace Shell OS/2 Warp Desktop Windows 9x?
  7. OS/2 Warp позиционируется на рынке как серверная ОС. Почему же мы считаем возможным рассматривать ее как персональную ОС?
  8. Считаете ли Вы, что как персональная ОС OS/2 Warp лучше, чем Windows 9x? Если да, то почему, по-Вашему, она проиграла в конкурентной борьбе?

НазадОглавлениеВперед
Индекс