Сейчас это может показаться кому-то странным, но Windows системы существовали не всегда. Ещё не так давно доминирование продукта Microsoft было не настолько очевидным, а на рынке операционных систем имелся один весьма и весьма перспективный продукт компании IBM под названием OS/2.
Краткая информация.
OS/2 — операционная система фирмы IBM. Особой популярностью в качестве домашней ОС никогда не пользовалась, оставаясь в тени Windows. OS/2 представляет собой самостоятельную линию развития операционных систем, отличаясь от Windows NT существенно меньшей требовательностью к ресурсам компьютера, а от Linux/Unix – принципиальной разнице в подходе к разработке и большей схожестью графического интерфейса пользователя с Windows.
История.
1981. Microsoft покупает 86-DOS у компании Seattle Computer Products. Удовлетворение запросов IBM к операционной системе для PC привело к некоторым изменениям после чего она и выпущена под торговой маркой MS-DOS.
1984. Появляется процессор Intel 80286. В IBM принимается решение что операционная система DOS морально устарела и совместно с Microsoft начинает разработку OS/2.
Декабрь 1987. Появилась OS/2 1.0 (кодовое название CP/DOS). Эта версия не имела графической оболочки (работала только в текстовом режиме) и имела достаточные улучшения относительно DOS, например, там была расширена поддержка оперативной памяти. Выводить информацию на экран могла только одна программа, хотя другие программы могли выполняться в фоновом режиме.
Ноябрь 1988. OS/2 1.0 Extended Edition и OS/2 1.1 Standard Edition. Версия OS/2 1.1 SE (кодовое название Trimaran) обладает графической оболочкой Presentation Manager. Требования к оперативной памяти — минимум 3, а лучше 6 Мегабайт. Версия под названием OS/2 1.10 Extended Edition (OS/2 1.10 EE) появившаяся позднее и стоящая 795 долларов включала так же Database Manager и Communications Manager.
Октябрь 1989. OS/2 1.20 SE и EE (кодовое название Sloop). Впервые предложена улучшенная файловая система HPFS. Появилось средство двойной загрузки Dual Boot, а в расширенной версии 1.2 — мощный язык REXX. Этот год является переломным моментом в истории OS/2 – альянс начинает разваливаться (в основном из-за “подковерных игр” менеджеров Microsoft). Microsoft, обеспокоенная завоеванием рынка операционных систем, берет на себя разработку следующей, полностью 32-х разрядной OS/2 3.0. IBM концентрируется на разработке OS/2 2.0. Это, по сути, «развод» — разрабатываемая фирмой Microsoft OS/2 3.0, даже не сохраняет своего названия и демонстрируется на выставке ComDex'91 под именем Windows NT — первая Windows с вытесняющей многозадачностью.
Декабрь 1990. OS/2 1.3 (кодовое название Cutter) — версия, работающая на процессоре 80286 и последняя, выходящая в двух вариантах стандартной и расширенной редакции (Язык REXX присутствует уже в обеих редакциях). Из новшеств — поддержка масштабируемых шрифтов Adobe Type Manager. Эта версия также в ряду последних, продаваемых фирмой Microsoft. Все новые изменения внесены в подавляющем большинстве программистами IBM, система претерпела существенную переработку и ощутимо улучшилась ее производительность.
Апрель 1992. OS/2 2.0 (кодовое название Cruiser). Первая 32-х разрядная версия OS/2. Минимальные требования – процессор 80386SX, 4 Мб оперативной памяти. Поддержка SAA (System Application Architecture) — унифицированной архитектуры прикладных программ. OS/2 2.0 – первая версия, официально поддерживаемая не только на компьютерах IBM, но и на компьютерах других фирм. Она претерпела большие реконструкции после разрыва партнерских отношений с Microsoft по разработке. Появился удобный объектноориентированный интерфейс WorkPlaceShell («рабочий стол», рабочее место) базирующийся на архитектуре SOM (System Object Model), появилось гибкое средство загрузки Boot Manager, серьезно усовершенствована поддержка DOS и Windows приложений (Windows приложения запускаются с использованием Win-OS/2), а также 32-разрядный программный интерфейс. Появилась и возможность использования более 16Мб оперативной памяти. Отдельно выходят обновления для средств мультимедиа.
Май 1993. OS/2 2.1 (кодовое название Borg). Добавлена поддержка приложений Windows 3.1 (до этого поддерживалась Windows 3.0). В поставку включены средства мультимедиа и значительно обновлен список поддерживаемых аппаратных устройств. Требования к оперативной памяти — минимум 8 Мбайт.
Ноябрь 1993. OS/2 for Windows (кодовое название Ferengi). Отсутствует Win-OS/2 – вместо нее используется уже ранее установленная пользователем Windows 3.1, обновлены драйвера.
Февраль 1994. OS/2 2.11. В основным исправлены различные ошибки. Также существует отдельным набором исправлений FixPack XR 06200 для OS/2 2.1.
Июль 1994. OS/2 2.11 SMP. В этой версии была добавлена поддержка многопроцессорных (до 16 процессоров) систем.
Октябрь 1994. OS/2 Warp 3.0 (кодовое название Warp). Изменения коснулись лишь улучшения производительности системы, понижения требования к оперативной памяти до 4 Мбайт. Расширен спектр поддерживаемых аппаратных устройств. В GUI появился новый эелемент — LaunchPad (Панель инструментов, «стартовая площадка») — эффективное и гибкое средство, отлично вписавшееся в объектноориентированную модель интерфейса. С OS/2 Warp 3.0 поставляется бесплатный пакет «BonusPak», включающий:
• средства ревизии аппаратного обеспечения,
• расширенные средства просмотра мультимедиа, обработки движущегося видео, полнофункциональную работу с факсом (при наличии факс-модема),
• достаточно мощный пакет офисных приложений (включая текстовый процессор, электронные таблицы, базу данных, построения графиков) и персонального органайзера,
• средство проведения конференций в сетях,
• доступ к сетям CompuServe и Internet.
Май 1995. OS/2 Warp Connect. В базовую систему включена полная поддержка сетевой функциональности, поддержка одноранговых сетей.
Сентябрь 1996. OS/2 Warp 4.0 (кодовое название Merlin). В этой версии включено полное управление голосом, средства голосового ввода текста, встроенные механизмы Java, OpenDoc, средства работы в глобальной сети Internet и другие передовые технологии, разработанные корпорацией IBM. Сильно изменен дизайн системы и более удачно (относительно предыдущих версий) проработана сетевая подсистема.
1999 год. OS/2 WarpServer for e-Business (кодовое название Aurora) — сокращенно OS/2 WSeB. Внешне OS/2 осталась практически без изменений, однако внутренние переработки носили весомый характер. Появилась поддержка журналируемой файловой системы JFS, взятой из AIX (IBM версия UNIX), сняты ограничения на объем виртуальной памяти, появилась мощная программа для управления томами под названием LVM (Logic Volume Manager).
Весной 2000-го года американская компания Serenity Systems объявляет о том, что ей достигнуто партнерское соглашение с IBM о выпуске новой клиентской версии OS/2. Правда, эта клиентская версия полностью меняет свое название — новый клиент называется eComStation (сокращенно eCS). Официально продажи eCS 1.0 начались в июле 2001 года.
По сути, это новая модификация OS/2, в которой изменен интерфейс за счет включения в базовую систему приложения Styler/2 а также процесс инсталляции. Добавлено новое средство распределенной инсталляции ПО под названием WiseMachine.
OS/2 1.0 – Начало.
Эволюция OS/2 началась очень давно. Наиболее важным моментом предыстории OS/2 следует считать появление IBM Personal Computer или просто IBM PC (название отлично демонстрирует полное отсутствие изобретательности IBM в деле присвоения наименований выпускаемым продуктам). Создатели IBM PC к сожалению допустили громадную ошибку недооценив популярность своего продукта и соответственно его влияния на развитие индустрии. О том насколько восторженно было воспринято появление новой платформы свидетельствует хотя бы тот факт, что, при начальных планах продать 250 тысяч PC за пять лет, фирма IBM продала большее количество систем ещё до официального выпуска продукта на рынок.
Что же касается программного обеспечения то IBM решила нанять стороннего производителя для написания операционной системы для своего PC. К сожалению описание полудетективной истории о том как была выбрана фирма Microsoft и операционная система DOS выходят за рамки рассмотрения OS/2. MS(PC)-DOS как и сам PC была весьма открытой системой. Интерфейсы DOS и BIOS были хорошо документированы и сторонние производители могли легко использовать и расширять их – вот почему DOS и по сей день используется в некоторых задачах.
Вместе с тем DOS и BIOS имели один очень большой недостаток. Они отнюдь не были “звездной командой” и что еще хуже – не использовали аппаратную часть PC на полную мощность. Это означало что многие программы для полного использования аппаратных возможностей обращались к устройствам напрямую, минуя DOS.
Рассвет IBM PC.
Но невзирая на все свои недостатки в 1980 году IBM PC стал популярным инструментом. Аппаратный и программный рынки росли с невиданной скоростью. Казалось бы все было прекрасно — но пользователи PC были недовольны. Основыне причины тому были следущие:
Различные программы либо никак не взаимодействовали друг с другом, либо взаимодействие лежало на примитивном уровне.
Пользователь не мог делать несколько задач одновременно. Как некое подобие многозадачности были придуманы резидентные программы.
Логическим итогом всего хаоса проблем было то, что окружение DOS было нестабильным. Не было никакой защиты ни памяти, ни других ресурсов и любой процесс мог делать что угодно с любым куском памяти или манипулировать с оборудованием – элементарный рецепт катастрофы.
Архитектура DOS имела серьезные ограничения при работе с памятью. “640Kb будет достаточно для каждого” — выражение Билла Гейтса в 1981 году. Возможно это и было правдой в 1981, но никак не в 1984. Естественно, как только нехватка памяти стала очевидной, были придуманы различные способы обойти “проблему 640”, но все они никак не могли считаться решением.
Некоторые из существовавших проблем могли быть решены программно с помощью лучше спроектированной операционной системы. Но другие требовали аппаратной поддержки для того чтоб решение было эффективным или в принципе реализуемым. И эта поддержка была реализована в 1984 году под названием IBM AT (Advanced Technology). AT дествительно сильно продвинулась по сравнению со своими предшественниками – PC и XT. И помимо огромной массы различных усовершенствований самым заметным (и важным) было применение нового центрального процессора – Intel 80286. Хотя 80286 был 16-ти разрядным как и его прародители однако он имел одну очень важную особенность: защищенный режим работы (protected mode). 8086 имел только один режим который позже назовут real mode (видимо в связи с тем что в отличии от защищенного режима все адреса памяти соответствовали физическим адресам). После инициализации 286 работал в реальном режиме практически полностью совместимом с 8086 отличаясь лишь большей скоростью и расширенным набором инструкций. В этом режиме 286 мог как и 8086 адресовать (обращаться к) 1Мб памяти (на самом деле 1Мб + 64Кб – но в данном случае это неактуально). В защищенном режиме 286-й мог адресовать 16Мб памяти. Это было очень много учитывая что PC с 16Мб памяти стали стандартом де-факто лишь более чем 10 лет спустя. Но еще большим плюсом было то что защищенный режим был действительно защищенным. Это означало что доступ к памяти не был “свободным для всех” — вместо этого существовало 4 уровня (или кольца) защиты и менее привелигерованный процесс не мог нанести повреждения блокам памяти принадлежащим более привелигированным компонентам. Таким образом пользовательские программы не могли намеренно или случайно перезаписать к примеру код операционной системы. Дополнительно приложения были защищены друг от друга. Точно так же некоторые инструкции процессора были теперь ограничены и могли быть выполнены только кодом с достаточными правами – такими как ядро операционной системы или драйвер устройства. При попытке нарушить защиту возникала исключительная ситуация перехватываемая операционной системой которая обычно прекращала работу “провинившегося” приложения. Все проверки защиты выполнялись на аппаратном уровне с минимальными накладными расходами для операционной системы.
Как IBM так и Microsoft полностью осознавали проблемы вызываемые работой DOS в реальном режиме и работали над их решением. Двумя наиболее заметными продуктами которые в итоге появились стали IBM TopView и Microsoft Windows. TopView была текстовой многозадачной оболочкой для DOS и в сущности идейным прародителем позднейшей намного более успешной оболочки DesqView производства компании Quarterdeck. Microsoft Windows являлась графическим многозадачным окружением работавшим поверх DOS. Впервые анонсированная в 1983 версия 1.0 появилась в 1985. Она была более чем плохой и вполне заслуженно не приобрела сколько-нибудь широкой популярности. Это была попытка Microsoft сделать PC более похожим на компьютеры Macintosh фирмы Apple работавшими под управлением операционной системы MacOS с весьма развитым графическим интерфейсом пользователя. Версия Windows 2.0 вышла в 1987 и была немного лучше (и очень походила внешним видом на OS/2 1.1).
Взросление.
В это же время Microsoft работала над полностью новой операционной системой рассчитаной заменить DOS. В январе 1983-го года началась разработка новой многозадачной MS-DOS системы. Название проекта изменялось несчетное количество раз. В августе 1985 IBM присоединяется к проекту и фирмы подписывают соглашение о совместной разработке дающее обеим компаниям право на продажу конечного продукта. Немного погодя проект перименовывается в CP/DOS – от Control Program/DOS. Но, даже это был не финал процесса выбора имени еще нерожденного ребенка. Незадолго до выпуска продукт переименовывается в OS/2 – видимо для соответствия новой линейке персональных компьютеров IBM под названием PS/2 (Personal System/2).
Интересно то, что OS/2 1.0 не были реализованы очень многие планируемые особенности и самым заметным было отсутствие графического интерфейса пользователя Presentation Manager (кодовое имя Winthorn).
И все же OS/2 1.0 являлась радикальным рывком в сторону от DOS и имела множество особенностей и возможностей, которые DOS никогда не смогла бы иметь и которые были реализованы в других операционных системах намного позже.
• Вытесняющая многозадачность (preemptive multitasking).
• Многопоточность (multithreading).
• Средства взаимодействия между процессами (Inter Process Communication – IPC) такие как разделяемая память (shared memory), каналы (pipes), семафоры (semaphores) и очереди (queues).
• Поддержка виртуальной памяти (virtual memory, swapping) — теоретически до 1Гб виртуальной памяти.
• Полностью защищенный режим работы.
• Динамическое подключение библиотек (dynamic linking, DLLs).
• Поддержка до 16Мб оперативной памяти.
Одной из самых неприятных помех для разработчиков было то что они столкнулись с необходимостью поддержки DOS. Ни одна из проблем не являлась непреодолимой, но их комбинация была убийственной. IBM и Microsoft расплачивались за непродуманные решения принятые при разработке DOS в 1981 году. К тому же огромная популярность DOS произвела эффект бумеранга – разработчики вынуждены были поддерживать DOS приложения в OS/2 чтобы иметь хоть какие-то шансы на завоевание рынка.
В конце-концов разработчики OS/2 нашли решение как исполнять DOS в защищенном режиме хотя в процессе поиска решения и столкнулись с огромным количеством проблем. Окончательный выход выглядел следующим образом: имелась одна-единственная полноэкранная сессия DOS которая не могла выполняться в фоновом режиме (с другой стороны приложения OS/2 работали в фоне при активном сеансе DOS). Реализация подобного подхода требовала частого переключения между защищенным и реальным режимами (при активной DOS задаче). Это в свою очередь повлекло за собой огромное количество усилий по сохранению производительности на приемлимом уровне. Одним из примеров дополнительных ухищрений были драйвера устройств самой OS/2 – они должны были поддерживать работу как в защищенном так и в реальном режиме для уменьшения количества переключений.
Код DOS применяемый в OS/2 базировался на коде MS-DOS/PC-DOS, но с многочисленными модификациями. Так, к примеру, код обеспечивавший работу с файловой системой работал только в защищенном режиме. Иными словами при обращении к файлу вся операционная система переключалась в защищенный режим. Впрочем впоследствии такой подход оказался большим плюсом – когда были релизованы инсталлируемые файловые системы оказалось что DOS сессия OS/2 не имеет никаких проблем с доступом к (например) файловой системе HPFS.
Весь же защищенный код был написан “с нуля” со всеми теми приятными особенностями которые были описаны ранее. Ядро и системные библиотеки в основном были написаны на ассемблере по следующим двум причинам:
• Производительность – OS/2 должна была работать на IBM AT с 6Мгц процессором.
• Ограничения по памяти – OS/2 должна была работать при наличии только 1Мб ОЗУ.
В новой операционной системе было особенно не на что посмотреть – интерфейс было исключительно текстовым (обещанный Presentation Manager был все еще в стадии разработки) и внешний вид весьма походил на DOS. Но после нажатия Ctrl+ESC появлялся Program Selector – утилита позволявшая запускать новые задачи и переключаться между существующими. Теоретически существовало 16 сессий, но поскольку сама OS/2 занимала часть из них пользователь имел доступ к 12 сессиям.
Рабочее пространство пользователя OS/2 1.0
С точки зрения пользователя OS/2 1.0 имела несколько существенных недостатков. Некоторые были исправлены в более поздних версиях серии 1.x, на исправление других понадобилось куда больше времени:
• Максимальный размер раздела 32Мб. Хотя возможно в 1987 году это было и не критично. OS/2 1.1 превысила это ограничение (хотя и базировалась на FAT), а OS/2 1.2 поставлялась уже с HPFS.
• Отсутствовала поддержка двойной загрузки (dual boot) или менеджера загрузки (Boot Manager). Dual Boot появился в версии 1.1, Boot Manager был реализован в версии 2.0
• Не было возможности обойти обработку файла CONFIG.SYS. Это было напастью всех версий серии 1.x. В сочетании с отсутствием Boot Manager-а это означало что если система не могла загрузиться (например, некорректный драйвер), то единственным шансом спасти ситауацию (и данные) была загрузочная дискета. Окончательно проблема была решена только в OS/2 Warp.
• Полное отсутствие механизма замены находящихся в использовании динамических библиотек (DLL). Это сделало установку исправлений системных DLL (таких как драйвера Presentation Manager) более чем затрундительным занятием. В OS/2 2.x ситуация разрешилась с помощью недокументированых вызовов API.
На рынке операционных систем OS/2 пребывала в состоянии безнадежной битвы за широкое распространение. Ее признанию мешало несколько факторов:
• OS/2 считалась требовательной к ресурсам (рекомендовалась AT с 2Мб ОЗУ хотя для работы было достаточно одного мегабайта).
• Совместимость с DOS на самом деле была далеко не на выском уровне. С другой стороны само наличие поддержки DOS было маленьким чудом поскольку препятствий этому было неисчислимое множество.
• Непомерно высокие цены. Возможно, маркетологи IBM и Microsoft имели какие-то свои особые соображения, но продажа набора разработчика (SDK – software development kit) за тысячи долларов отнюдь не помогала росту популярности операционной системы (первая версия Microsoft SDK for OS/2 вышедшая в апреле 1987 стоила три тысячи долларов).
• Ложные представления о новом продукте. Возможно самый большой ложный миф заключался в том, что OS/2 могла работать только на оборудовании IBM. Дела обстояли абсолютно иначе — даже версии OS/2 продаваемые самой IBM поддерживали оборудование сторонних производителей.
Резюмируя можно сказать что OS/2 1.0 не достигла абсолютного успеха (иначе сегодня большинство компьютеров работало бы под управлением OS/2), но и не стала оглушительным провалом. OS/2 внесла большое количество новых (и по большей части хороших) концепций в мир PC. Также OS/2 1.x выстроила солидный фундамент для OS/2 2.x которая в свою очередь была большим шагом в истории PC. Большинство концепций впервые появившихся в OS/2 1.x доказали свою обоснованность и не претерпели существенных изменений в последующих релизах. Программисты IBM и Microsoft без сомнения не заслуживают ничего, кроме уважения за проделанную работу.
OS/2 1.1 – Ранние годы.
Следующим релизом OS/2 стала вресия 1.1. Единственной причиной, по которой версию пронумеровали не как 2.0, вероятно было то, что графический интерфейс пользователя (GUI – Graphical User Interface) был обещан в версии 1.0, но не был закончен вовремя. Как забавный факт следует отметить, что Windows 1.0 разрабатывалась как Interface Manager и приобрела новое имя благодаря менеджерам игравших с именами не взирая на протесты программистов.
Presentation Manager имел кодовое имя Winthorn и практически полностью был написан в отделении IBM Hursley Labs. Программирование для PM было весьма схоже с программированием под Windows, однако, имелись и отличия:
• Прежде всего самое заметное было в различии координатных систем. В то время как координаты 0,0 в Windows были привязаны к верхнему левому углу экрана (что логично для знающего, как работает аппаратная реализация графики на архитектуре PC) в PM координаты 0,0 были привязаны к нижнему левому углу экрана (что логично для того, кто знает как работает координатная система в математике или физике).
• В Windows все графические операции передавались в так называемому Device Context. PM также использовал DC, но дополнительно имел еще один уровень абстракции называвшийся Presentation Space, что предоставляло большую гибкость.
• OS/2 имела гораздо более мощные функции рисования в своем графическом программном интерфейсе (Graphics Programming Interface, GPI) — наследие мейнфреймов. Некоторые из концепций GPI позднее были перенесены в Windows NT (но не в Windows 95).
• Общая программная модель в OS/2 была намного проще и не выглядела как набор “быстрых и грязных исправлений” (quick and dirty hack) что справедливо по отношению к программной модели Windows.
Помимо появления GUI другие изменения включали полную реализацию именованных каналов, которой не было в OS/2 1.0. Также была добавлена поддержка “больших” томов FAT (BigFAT). Теоретически поддерживались тома размеров до 2Гб, хотя практический лимит был несколько ниже.
После запуска OS/2 1.1 встречала пользователя следующим экраном:
Долгожданный GUI.
Достаточно странным фактом было то, что OS/2 1.1 не имела нормального текстового редактора с GUI интерфейсом – даже такого, как notepad в Windows. Вместо него было текстовое приложение E.exe, запускаемое из командной строки.
В любом случае, OS/2 1.1 была технически очень интересной и занимательной программой. Она обладала намного большими возможностями чем любая операционная система для персональных компьютеров в то время. Windows и MacOS даже в перспективе не имели того, что было в OS/2 – ни вытесняющей многозадачности, ни многопотоковости, ни виртуальной памяти.
Естественно, что системе были присущи и недостатки. Хотя и поддерживалось большинство тогдашних стандартов для вывода графики (CGA, EGA, VGA) но поддержка других была весьма слабая, если вообще существовала. Поддержка принтеров была чисто номинальная – несколько принтеров и плоттеров производства IBM и все.
Под OS/2 существовали различные приложения – в том числе такие как Microsoft Word, Lotus 1-2-3 и QuattroPro. Однако все они были текстовыми за исключением Microsoft Excel 2.2.
OS/2 1.2 – Развитие.
В конце 1989 Microsoft и IBM выпускают версию OS/2 1.2 – очень важное событие во всей истории OS/2 поскольку именно в версии 1.2 были реализованы практически все возможности обещаные в OS/2 еще до ее появления. В OS/2 1.2 разработчики наконец отказались от файловой системы FAT и реализовали инсталлируемые файловые системы (Installable File System, IFS) и высокопроизводительную файловую систему HPFS (High Perfomance File System).
HPFS была разработана “с нуля” Гордоном Литвином (Gordon Letwin) — ведущим разработчиком OS/2 в Microsoft. Новая файловая система весьма превосходила FAT, а также снимала множество ограничений:
• Отсутствовал печально известный лимит “8.3” на имена файлов – 8 символов на имя и 3 на расширение. Имена файлов могли быть длиной до 255 символов и допускали значительно больший диапазон допустимых к использованию символов – в частности пробел.
• Поддержка расширенных аттрибутов (Extended Attributes, EA). Каждый файл или директория могли иметь до 64Кб EA связанных с ним – там могла храниться любая информация – иконки, описания, информация для программы-каталогизатора и так далее.
• Поддержка больших дисков. FAT поддерживала разделы до 2Гб размером. HPFS поддерживала тома до 64Гб и была ограничена на то время лишь драйверами жестких дисков.
• Устойчивость к фрагментации. В то время как разделы FAT требовали регулярной дефрагментации для предотвращения иногда ощутимых потерь в производительности, HPFS пыталась использовать для файлов непрерывные фрагменты, сохраняя фрагментацию на минимальном уровне.
• Уменьшение потерь дискового пространства. Наибольший FAT диск в 2Гб размером использовал для хранения данных элементы размером 64Кб, чем вызывались большие потери дискового места (иногда до 50%). HPFS использовала сектора размером 512 байт таким образом резко уменьшая потери.
• Высокая отказоустойчивость. Если таблица FAT на дисковом разделе разрушалась в результате инцидента вся остальная информация на диске превращалась в гору бесполезного мусора поскольку вся информация о размещении файлов была сконцентрирована в FAT. HPFS дублировала часть информации и хранила структуру диска связно в обеих направлениях (от каталога к подкаталогу или файлу и наоборот). В результате, повреждения одной области не оказывали никакого влияния на весь остальной раздел. К примеру, не смотря на повреждение сектора с директорией – все файлы в ней оставались доступны.
Существовало две версии HPFS — “чистая” HPFS и HPFS386. Последняя, используемая в Microsoft LAN Manager (и IBM LAN Server) была более производительной, допускала значительно увеличенные размеры кэша и имела несколько расширений необходимых для серверов – к примеру встроенную систему разграничения доступа ( Access Control List, ACL) и систему ограничения директорий. В общем судьба HPFS оказалась весьма успешной – она практически в неизменном виде перешла в OS/2 2.0, и с некоторыми вариациями была использована в Windows NT под именем NTFS. Подобная история произошла с файловой системой UFS операционной среды SunOS 4.x. После революционного перехода на полностью новую ветку unix фирма Sun, имея богатый положительный опыт, без больших изменений оставила UFS в своей новой ОС. Это наглядный пример того, что удачные решения предшественников остаются в силе.
OS/2 GUI также получил новый внешний вид, весьма схожий с вышедшей через несколько месяцев Windows 3.0
Единообразие интерфейса OS/2 & Win3.0
Наиболее значимым различием между OS/2 1.2 и Windows 3.0 было то, что Windows не была операционной системой как таковой и исполнялась поверх MS-DOS (и даже могла быть запущена в DOS сессии OS/2). Также Windows содержала больше различных приложений (по большей части бесполезных, ну может быть за исключением Solitaire). OS/2 была более бизнес-ориентированной и при сравнении имела несколько спартанской вид. Отчасти это послужило тому, что Windows получила большее распространение среди конечных пользователей.
OS/2 1.3 – последняя из 16-битных ОС.
После исторического разрыва совместной разработки OS/2, вызванного нежеланием Microsoft делить прибыль от продаж оперционной системы с IBM, основной процесс по модернизации OS/2 происходил в IBM (хотя Microsoft и полностью сконцентрировалась на Windows некоторые вынужденные изменения в систему все же вносились). Версия 1.3 была практически идентична 1.2 по предоставляемым возможностям, но включала многочисленные улучшения производительности и удобстве использования.
Наконец во всех редакциях OS/2 присутствовал язык программирования REXX разработанный Майком Коулишоу (Mike Cowlishow) из IBM UK.
Язык изначально создавался для достижения четырех главных целей:
• легкой понимаемости (читаемости) написанных на нем программ, что облегчает работу программистам, пользователям и сопровождающему персоналу
• поддержка быстрого, эффективного и аккуратного программирования за счет обеспечения максимально естественной формы представления данных и управляющих структур языка
• обеспечения надежной и эффективной реализации языка на разнообразных платформах
• высокой применимости языка в системном и прикладном ПО
И все эти задачи были успешно решены. Таким образом операционная система получила мощный и гибкий инструмент, сравнимый с различными языками написания скриптов в UNIX подобных системах. Это несомненно являлось очень большим преимуществом, особенно в сравнении с более чем скромным набором возможностей которые предлагались при написании пакетных файлов в DOS и ранних версиях OS/2.
OS/2 2.0 – 32-х битная революция.
Пока в 1988 году IBM и Microsoft усердно трудились над OS/2 1.2 в IBM началась работа по разработке кардинально переработанной операционной системы. Итак, хотя версию 1.3 IBM совершенствовала исключительно своими силами, в тоже время под руководством ведущего разработчика Майкла Когана (Michael S. Kogan) уже полным ходом шли работы над версией 2.0. В марте 1992 операционная система была полностью готова и выпущена на рынок под названием OS/2 2.0 GA (General Availability – публично доступная). Приставка GA появилась не случайно. В это время шли яростные “словесные войны” между IBM и Microsoft и в одной из перепалок вице-президент Microsoft Стив Балмер пообещал публично съесть флоппи-диск если IBM умудрится выпустить OS/2 2.0 до конца 1991 года. Поскольку зрелище обещало быть достаточно интересным в ноябре 1991 была выпущена ограниченным тиражом OS/2 2.0 LA (Limited Availability – ограниченно доступная). К сожалению, господин Балмер не сдержал своего слова и OS/2 2.0 LA пришлось использовать как простую beta версию, каковой она в сущности и являлась.
Самым большим плюсом в OS/2 2.0 была сама система. Переход на 32-х разрядную архитектуру снял множество ограничений существовавших в DOS и OS/2 1.x – в первую очередь по работе с памятью. Вместе с тем система не была “полностью” 32-х разрядной – многие части оставались 16-ти разрядными – в первую очередь по соображениям совместимости и экономии времени. Для ускорения разработки, к примеру, драйвера графической подсистемы (драйвера видеокарт и принтеров для Presentation Manager) в OS/2 2.0 были 16-ти разрядными и были заменены 32-х битными версиями только в OS/2 2.1. Требованиями совместимости диктовалось использование 16-ти разрядных драйверов физических устройств (Physical Device Driver, PDD) совместимых с OS/2 1.3. Аналогичным образом многие фрагменты ядра были 16-ти битными для обеспечения поддержки приложений написанных для OS/2 1.x. Основные же элементы системы были полностью новыми и 32-х разрядными – к примеру поддержка множества виртуальных DOS машин (Multuply Virtual DOS Machine, MVDM) и менеджер памяти с поддержкой пейджинга. Более того основная часть кода была написана на C, а не на ассемблере как в OS/2 1.x.
Вторым существенным моментом стал новый интерфейс пользователя под названием Workplace Shell (или WPS для краткости) являвшийся радикальным уходом от концепций заложенных в GUI OS/1.x и Windows. Новый интерфейс был объектно-ориентированным и в нем все стало объектом – диск, принтер, программа и так далее. Манипуляции с объектами проводились с помощью drag-n-drop – перемещение, копирование, печать и уничтожение. В WPS широко использовалась правая кнопка мыши – для открытия контекстных меню и выполнения операций по перетаскиванию объектов.
Workplace Shell OS/2 2.0
Для оперционной системы OS/2 2.0 была зарегистрирована торговая марка “Интегрирующая платформа” (The Integrating Platform). Это название напрямую намекало на уникальную возможность OS/2 2.0 исполнять существующие DOS, Windows и OS/2 1.x приложения одновременно с новыми 32-х разрядными родными приложениями. В отличии от OS/2 1.x в версии 2.0 поддержка DOS была превосходной. Система полностью использовала появившийся в 386 и последующих процессорах виртуальный 8086 режим (Virtual 8086 mode). Злые языки компьютерного мира одно время утверждали, что этот режим был реализован в 386-м процессоре шокированными инженерами Intel – слухи о мучениях при программировании поддержки в OS/2 1.x действительно распространились весьма широко и облегчение страданий программистов на аппаратном уровне было поистине обычным состраданием. Кроме того, что пользователь теперь мог запускать не только несколько полноэкранных и оконных сессий DOS появилась возможность создавать “специальные” DOS сессии в которых использовалась не встроенная поддержка DOS, а предоставлялась возможность запустить DOS 4.0, DOS 5.0, DR-DOS и так далее.
Поддержка Windows приложений логическим образом вытекала из поддержки DOS. Полноэкранная Win-OS/2 сессия просто исполняла Windows 3.0 в рамках виртуальной DOS машины. Оконные сессии Win-OS/2 требовали более нетривиального подхода в связи с тем, что им было необходимо взаимодействовать с PM/WPS приложениями. Выход из ситуации был реализован написанием специальной версии экранного драйвера для Win-OS/2. Такой подход, хотя и обеспечил хорошую производительность, но имел существенный недостаток – это сделало процесс написания драйверов видокарт для OS/2 намного более сложным и дорогим занятием и было одной из причин малого количества драйверов для OS/2. Производителю приходилось помимо создания видеодрайвера для OS/2 дополнительно предоставлять специфическую OS/2 версию драйвера для Windows. Более логичным было бы написание “транслирующего” драйвера преобразовывавшего вызовы функций Win-OS/2 в вызовы PM – тогда от производителя требовалось бы написание только OS/2 версии видеодрайвера.
На первых порах OS/2 2.0 столкнулась с той же проблемой что и OS/2 1.x до нее – недостатком родных приложений. Система прекрасно справлялась с запуском DOS, Windows и OS/2 1.x приложений, но на первых порах ощущалась нехватка родных 32 разрядных программ.
OS/2 2.1, 2.11, 2.11 SMP – Надежная платформа, эпоха зрелости.
Выпуск версии OS/2 2.1 в мае 1993 года явился следствием эволюционного развития версии 2.0. Внешний вид не претерпел существенных изменений, разработчики продолжали трудиться над “внутренностями” системы. Из видимых конечному пользователю изменений стоит отметить смену версии Win-OS/2 с 3.0 на 3.1 и появление нового компонента под названием Multimedia Presentation Manager/2 (MMPM/2) добавившего в графический интерфейс пользователя различные мультимедийные возможности – звуковые схемы, воспроизведение мультимедийных файлов и тому подобное.
В ноябре 1993 выходит специальная версия OS/2 for Windows не содержащая кода Win-OS/2 а использующая уже установленную на компьютере копию Windows 3.x. Таким образом снижалась цена конечного продукта (IBM платила лицензионные отчисления Microsoft за использование кода Windows в Win-OS/2). Вместе с тем эта версия продемонстрировала ситуацию на рынке. Используя свое монопольное положение Microsoft с помощью манипуляций в сфере ценовой политики держала производителей клонов PC под жестким контролем, запрещая им предустанавливать на продаваемые компьютеры операционные системы отличные от DOS/Windows собственного производства. Позже такая политика была признана незаконной, но OS/2 это уже не помогло. Выпустив OS/2 for Windows фирма IBM пыталась разрешить проблему без нарушения OEM соглашений производителей компьютеров с Microsoft.
Несмотря на жесткий прессинг со стороны Microsoft времена OS/2 2.1 и 2.11 были отмечены ростом количества приложений написанных специально для OS/2. IBM достигла соглашения с несколькими крупными производителями программного обеспечения о разработке OS/2 версий их приложений. В число таких компаний входили Borland, Lotus, Novell и тогда еще самостоятельная WordPerfect. IBM в некоторых случаях даже субсидировала отдельные разработки. В то же время Microsoft проявляла не меньшую активность, однако не заключая договора или оплачивая разработку, а напротив шантажируя разработчиков ПО угрозами закрыть доступ к бета версиям и информации о Windows, если они будут разрабатывать свои продукты под отличные от Windows платформы.
OS/2 Warp. Золотая эра.
В октябре 1994 выходит OS/2 Warp – самая популярная и самая распространенная версия OS/2. Внутренне система незначительно отличалась от OS/2 2.11 за исключением расширенной поддержки оборудования и исправлением ошибок – хороший пример того, что грамотно спроектированный и продуманный продукт не нуждается в лихорадочном переписывании многих элементов кода. Наиболее серьезные изменения касались исключительно улучшению простоты использования конечным пользователем.
Развитие GUI интерфейса без отрыва от удобства использования.
Новые изменения и улучшения включали в себя:
• OS/2 Warp поддерживала новый улучшенный формат исп
Краткая информация.
OS/2 — операционная система фирмы IBM. Особой популярностью в качестве домашней ОС никогда не пользовалась, оставаясь в тени Windows. OS/2 представляет собой самостоятельную линию развития операционных систем, отличаясь от Windows NT существенно меньшей требовательностью к ресурсам компьютера, а от Linux/Unix – принципиальной разнице в подходе к разработке и большей схожестью графического интерфейса пользователя с Windows.
История.
1981. Microsoft покупает 86-DOS у компании Seattle Computer Products. Удовлетворение запросов IBM к операционной системе для PC привело к некоторым изменениям после чего она и выпущена под торговой маркой MS-DOS.
1984. Появляется процессор Intel 80286. В IBM принимается решение что операционная система DOS морально устарела и совместно с Microsoft начинает разработку OS/2.
Декабрь 1987. Появилась OS/2 1.0 (кодовое название CP/DOS). Эта версия не имела графической оболочки (работала только в текстовом режиме) и имела достаточные улучшения относительно DOS, например, там была расширена поддержка оперативной памяти. Выводить информацию на экран могла только одна программа, хотя другие программы могли выполняться в фоновом режиме.
Ноябрь 1988. OS/2 1.0 Extended Edition и OS/2 1.1 Standard Edition. Версия OS/2 1.1 SE (кодовое название Trimaran) обладает графической оболочкой Presentation Manager. Требования к оперативной памяти — минимум 3, а лучше 6 Мегабайт. Версия под названием OS/2 1.10 Extended Edition (OS/2 1.10 EE) появившаяся позднее и стоящая 795 долларов включала так же Database Manager и Communications Manager.
Октябрь 1989. OS/2 1.20 SE и EE (кодовое название Sloop). Впервые предложена улучшенная файловая система HPFS. Появилось средство двойной загрузки Dual Boot, а в расширенной версии 1.2 — мощный язык REXX. Этот год является переломным моментом в истории OS/2 – альянс начинает разваливаться (в основном из-за “подковерных игр” менеджеров Microsoft). Microsoft, обеспокоенная завоеванием рынка операционных систем, берет на себя разработку следующей, полностью 32-х разрядной OS/2 3.0. IBM концентрируется на разработке OS/2 2.0. Это, по сути, «развод» — разрабатываемая фирмой Microsoft OS/2 3.0, даже не сохраняет своего названия и демонстрируется на выставке ComDex'91 под именем Windows NT — первая Windows с вытесняющей многозадачностью.
Декабрь 1990. OS/2 1.3 (кодовое название Cutter) — версия, работающая на процессоре 80286 и последняя, выходящая в двух вариантах стандартной и расширенной редакции (Язык REXX присутствует уже в обеих редакциях). Из новшеств — поддержка масштабируемых шрифтов Adobe Type Manager. Эта версия также в ряду последних, продаваемых фирмой Microsoft. Все новые изменения внесены в подавляющем большинстве программистами IBM, система претерпела существенную переработку и ощутимо улучшилась ее производительность.
Апрель 1992. OS/2 2.0 (кодовое название Cruiser). Первая 32-х разрядная версия OS/2. Минимальные требования – процессор 80386SX, 4 Мб оперативной памяти. Поддержка SAA (System Application Architecture) — унифицированной архитектуры прикладных программ. OS/2 2.0 – первая версия, официально поддерживаемая не только на компьютерах IBM, но и на компьютерах других фирм. Она претерпела большие реконструкции после разрыва партнерских отношений с Microsoft по разработке. Появился удобный объектноориентированный интерфейс WorkPlaceShell («рабочий стол», рабочее место) базирующийся на архитектуре SOM (System Object Model), появилось гибкое средство загрузки Boot Manager, серьезно усовершенствована поддержка DOS и Windows приложений (Windows приложения запускаются с использованием Win-OS/2), а также 32-разрядный программный интерфейс. Появилась и возможность использования более 16Мб оперативной памяти. Отдельно выходят обновления для средств мультимедиа.
Май 1993. OS/2 2.1 (кодовое название Borg). Добавлена поддержка приложений Windows 3.1 (до этого поддерживалась Windows 3.0). В поставку включены средства мультимедиа и значительно обновлен список поддерживаемых аппаратных устройств. Требования к оперативной памяти — минимум 8 Мбайт.
Ноябрь 1993. OS/2 for Windows (кодовое название Ferengi). Отсутствует Win-OS/2 – вместо нее используется уже ранее установленная пользователем Windows 3.1, обновлены драйвера.
Февраль 1994. OS/2 2.11. В основным исправлены различные ошибки. Также существует отдельным набором исправлений FixPack XR 06200 для OS/2 2.1.
Июль 1994. OS/2 2.11 SMP. В этой версии была добавлена поддержка многопроцессорных (до 16 процессоров) систем.
Октябрь 1994. OS/2 Warp 3.0 (кодовое название Warp). Изменения коснулись лишь улучшения производительности системы, понижения требования к оперативной памяти до 4 Мбайт. Расширен спектр поддерживаемых аппаратных устройств. В GUI появился новый эелемент — LaunchPad (Панель инструментов, «стартовая площадка») — эффективное и гибкое средство, отлично вписавшееся в объектноориентированную модель интерфейса. С OS/2 Warp 3.0 поставляется бесплатный пакет «BonusPak», включающий:
• средства ревизии аппаратного обеспечения,
• расширенные средства просмотра мультимедиа, обработки движущегося видео, полнофункциональную работу с факсом (при наличии факс-модема),
• достаточно мощный пакет офисных приложений (включая текстовый процессор, электронные таблицы, базу данных, построения графиков) и персонального органайзера,
• средство проведения конференций в сетях,
• доступ к сетям CompuServe и Internet.
Май 1995. OS/2 Warp Connect. В базовую систему включена полная поддержка сетевой функциональности, поддержка одноранговых сетей.
Сентябрь 1996. OS/2 Warp 4.0 (кодовое название Merlin). В этой версии включено полное управление голосом, средства голосового ввода текста, встроенные механизмы Java, OpenDoc, средства работы в глобальной сети Internet и другие передовые технологии, разработанные корпорацией IBM. Сильно изменен дизайн системы и более удачно (относительно предыдущих версий) проработана сетевая подсистема.
1999 год. OS/2 WarpServer for e-Business (кодовое название Aurora) — сокращенно OS/2 WSeB. Внешне OS/2 осталась практически без изменений, однако внутренние переработки носили весомый характер. Появилась поддержка журналируемой файловой системы JFS, взятой из AIX (IBM версия UNIX), сняты ограничения на объем виртуальной памяти, появилась мощная программа для управления томами под названием LVM (Logic Volume Manager).
Весной 2000-го года американская компания Serenity Systems объявляет о том, что ей достигнуто партнерское соглашение с IBM о выпуске новой клиентской версии OS/2. Правда, эта клиентская версия полностью меняет свое название — новый клиент называется eComStation (сокращенно eCS). Официально продажи eCS 1.0 начались в июле 2001 года.
По сути, это новая модификация OS/2, в которой изменен интерфейс за счет включения в базовую систему приложения Styler/2 а также процесс инсталляции. Добавлено новое средство распределенной инсталляции ПО под названием WiseMachine.
OS/2 1.0 – Начало.
Эволюция OS/2 началась очень давно. Наиболее важным моментом предыстории OS/2 следует считать появление IBM Personal Computer или просто IBM PC (название отлично демонстрирует полное отсутствие изобретательности IBM в деле присвоения наименований выпускаемым продуктам). Создатели IBM PC к сожалению допустили громадную ошибку недооценив популярность своего продукта и соответственно его влияния на развитие индустрии. О том насколько восторженно было воспринято появление новой платформы свидетельствует хотя бы тот факт, что, при начальных планах продать 250 тысяч PC за пять лет, фирма IBM продала большее количество систем ещё до официального выпуска продукта на рынок.
Что же касается программного обеспечения то IBM решила нанять стороннего производителя для написания операционной системы для своего PC. К сожалению описание полудетективной истории о том как была выбрана фирма Microsoft и операционная система DOS выходят за рамки рассмотрения OS/2. MS(PC)-DOS как и сам PC была весьма открытой системой. Интерфейсы DOS и BIOS были хорошо документированы и сторонние производители могли легко использовать и расширять их – вот почему DOS и по сей день используется в некоторых задачах.
Вместе с тем DOS и BIOS имели один очень большой недостаток. Они отнюдь не были “звездной командой” и что еще хуже – не использовали аппаратную часть PC на полную мощность. Это означало что многие программы для полного использования аппаратных возможностей обращались к устройствам напрямую, минуя DOS.
Рассвет IBM PC.
Но невзирая на все свои недостатки в 1980 году IBM PC стал популярным инструментом. Аппаратный и программный рынки росли с невиданной скоростью. Казалось бы все было прекрасно — но пользователи PC были недовольны. Основыне причины тому были следущие:
Различные программы либо никак не взаимодействовали друг с другом, либо взаимодействие лежало на примитивном уровне.
Пользователь не мог делать несколько задач одновременно. Как некое подобие многозадачности были придуманы резидентные программы.
Логическим итогом всего хаоса проблем было то, что окружение DOS было нестабильным. Не было никакой защиты ни памяти, ни других ресурсов и любой процесс мог делать что угодно с любым куском памяти или манипулировать с оборудованием – элементарный рецепт катастрофы.
Архитектура DOS имела серьезные ограничения при работе с памятью. “640Kb будет достаточно для каждого” — выражение Билла Гейтса в 1981 году. Возможно это и было правдой в 1981, но никак не в 1984. Естественно, как только нехватка памяти стала очевидной, были придуманы различные способы обойти “проблему 640”, но все они никак не могли считаться решением.
Некоторые из существовавших проблем могли быть решены программно с помощью лучше спроектированной операционной системы. Но другие требовали аппаратной поддержки для того чтоб решение было эффективным или в принципе реализуемым. И эта поддержка была реализована в 1984 году под названием IBM AT (Advanced Technology). AT дествительно сильно продвинулась по сравнению со своими предшественниками – PC и XT. И помимо огромной массы различных усовершенствований самым заметным (и важным) было применение нового центрального процессора – Intel 80286. Хотя 80286 был 16-ти разрядным как и его прародители однако он имел одну очень важную особенность: защищенный режим работы (protected mode). 8086 имел только один режим который позже назовут real mode (видимо в связи с тем что в отличии от защищенного режима все адреса памяти соответствовали физическим адресам). После инициализации 286 работал в реальном режиме практически полностью совместимом с 8086 отличаясь лишь большей скоростью и расширенным набором инструкций. В этом режиме 286 мог как и 8086 адресовать (обращаться к) 1Мб памяти (на самом деле 1Мб + 64Кб – но в данном случае это неактуально). В защищенном режиме 286-й мог адресовать 16Мб памяти. Это было очень много учитывая что PC с 16Мб памяти стали стандартом де-факто лишь более чем 10 лет спустя. Но еще большим плюсом было то что защищенный режим был действительно защищенным. Это означало что доступ к памяти не был “свободным для всех” — вместо этого существовало 4 уровня (или кольца) защиты и менее привелигерованный процесс не мог нанести повреждения блокам памяти принадлежащим более привелигированным компонентам. Таким образом пользовательские программы не могли намеренно или случайно перезаписать к примеру код операционной системы. Дополнительно приложения были защищены друг от друга. Точно так же некоторые инструкции процессора были теперь ограничены и могли быть выполнены только кодом с достаточными правами – такими как ядро операционной системы или драйвер устройства. При попытке нарушить защиту возникала исключительная ситуация перехватываемая операционной системой которая обычно прекращала работу “провинившегося” приложения. Все проверки защиты выполнялись на аппаратном уровне с минимальными накладными расходами для операционной системы.
Как IBM так и Microsoft полностью осознавали проблемы вызываемые работой DOS в реальном режиме и работали над их решением. Двумя наиболее заметными продуктами которые в итоге появились стали IBM TopView и Microsoft Windows. TopView была текстовой многозадачной оболочкой для DOS и в сущности идейным прародителем позднейшей намного более успешной оболочки DesqView производства компании Quarterdeck. Microsoft Windows являлась графическим многозадачным окружением работавшим поверх DOS. Впервые анонсированная в 1983 версия 1.0 появилась в 1985. Она была более чем плохой и вполне заслуженно не приобрела сколько-нибудь широкой популярности. Это была попытка Microsoft сделать PC более похожим на компьютеры Macintosh фирмы Apple работавшими под управлением операционной системы MacOS с весьма развитым графическим интерфейсом пользователя. Версия Windows 2.0 вышла в 1987 и была немного лучше (и очень походила внешним видом на OS/2 1.1).
Взросление.
В это же время Microsoft работала над полностью новой операционной системой рассчитаной заменить DOS. В январе 1983-го года началась разработка новой многозадачной MS-DOS системы. Название проекта изменялось несчетное количество раз. В августе 1985 IBM присоединяется к проекту и фирмы подписывают соглашение о совместной разработке дающее обеим компаниям право на продажу конечного продукта. Немного погодя проект перименовывается в CP/DOS – от Control Program/DOS. Но, даже это был не финал процесса выбора имени еще нерожденного ребенка. Незадолго до выпуска продукт переименовывается в OS/2 – видимо для соответствия новой линейке персональных компьютеров IBM под названием PS/2 (Personal System/2).
Интересно то, что OS/2 1.0 не были реализованы очень многие планируемые особенности и самым заметным было отсутствие графического интерфейса пользователя Presentation Manager (кодовое имя Winthorn).
И все же OS/2 1.0 являлась радикальным рывком в сторону от DOS и имела множество особенностей и возможностей, которые DOS никогда не смогла бы иметь и которые были реализованы в других операционных системах намного позже.
• Вытесняющая многозадачность (preemptive multitasking).
• Многопоточность (multithreading).
• Средства взаимодействия между процессами (Inter Process Communication – IPC) такие как разделяемая память (shared memory), каналы (pipes), семафоры (semaphores) и очереди (queues).
• Поддержка виртуальной памяти (virtual memory, swapping) — теоретически до 1Гб виртуальной памяти.
• Полностью защищенный режим работы.
• Динамическое подключение библиотек (dynamic linking, DLLs).
• Поддержка до 16Мб оперативной памяти.
Одной из самых неприятных помех для разработчиков было то что они столкнулись с необходимостью поддержки DOS. Ни одна из проблем не являлась непреодолимой, но их комбинация была убийственной. IBM и Microsoft расплачивались за непродуманные решения принятые при разработке DOS в 1981 году. К тому же огромная популярность DOS произвела эффект бумеранга – разработчики вынуждены были поддерживать DOS приложения в OS/2 чтобы иметь хоть какие-то шансы на завоевание рынка.
В конце-концов разработчики OS/2 нашли решение как исполнять DOS в защищенном режиме хотя в процессе поиска решения и столкнулись с огромным количеством проблем. Окончательный выход выглядел следующим образом: имелась одна-единственная полноэкранная сессия DOS которая не могла выполняться в фоновом режиме (с другой стороны приложения OS/2 работали в фоне при активном сеансе DOS). Реализация подобного подхода требовала частого переключения между защищенным и реальным режимами (при активной DOS задаче). Это в свою очередь повлекло за собой огромное количество усилий по сохранению производительности на приемлимом уровне. Одним из примеров дополнительных ухищрений были драйвера устройств самой OS/2 – они должны были поддерживать работу как в защищенном так и в реальном режиме для уменьшения количества переключений.
Код DOS применяемый в OS/2 базировался на коде MS-DOS/PC-DOS, но с многочисленными модификациями. Так, к примеру, код обеспечивавший работу с файловой системой работал только в защищенном режиме. Иными словами при обращении к файлу вся операционная система переключалась в защищенный режим. Впрочем впоследствии такой подход оказался большим плюсом – когда были релизованы инсталлируемые файловые системы оказалось что DOS сессия OS/2 не имеет никаких проблем с доступом к (например) файловой системе HPFS.
Весь же защищенный код был написан “с нуля” со всеми теми приятными особенностями которые были описаны ранее. Ядро и системные библиотеки в основном были написаны на ассемблере по следующим двум причинам:
• Производительность – OS/2 должна была работать на IBM AT с 6Мгц процессором.
• Ограничения по памяти – OS/2 должна была работать при наличии только 1Мб ОЗУ.
В новой операционной системе было особенно не на что посмотреть – интерфейс было исключительно текстовым (обещанный Presentation Manager был все еще в стадии разработки) и внешний вид весьма походил на DOS. Но после нажатия Ctrl+ESC появлялся Program Selector – утилита позволявшая запускать новые задачи и переключаться между существующими. Теоретически существовало 16 сессий, но поскольку сама OS/2 занимала часть из них пользователь имел доступ к 12 сессиям.
Рабочее пространство пользователя OS/2 1.0
С точки зрения пользователя OS/2 1.0 имела несколько существенных недостатков. Некоторые были исправлены в более поздних версиях серии 1.x, на исправление других понадобилось куда больше времени:
• Максимальный размер раздела 32Мб. Хотя возможно в 1987 году это было и не критично. OS/2 1.1 превысила это ограничение (хотя и базировалась на FAT), а OS/2 1.2 поставлялась уже с HPFS.
• Отсутствовала поддержка двойной загрузки (dual boot) или менеджера загрузки (Boot Manager). Dual Boot появился в версии 1.1, Boot Manager был реализован в версии 2.0
• Не было возможности обойти обработку файла CONFIG.SYS. Это было напастью всех версий серии 1.x. В сочетании с отсутствием Boot Manager-а это означало что если система не могла загрузиться (например, некорректный драйвер), то единственным шансом спасти ситауацию (и данные) была загрузочная дискета. Окончательно проблема была решена только в OS/2 Warp.
• Полное отсутствие механизма замены находящихся в использовании динамических библиотек (DLL). Это сделало установку исправлений системных DLL (таких как драйвера Presentation Manager) более чем затрундительным занятием. В OS/2 2.x ситуация разрешилась с помощью недокументированых вызовов API.
На рынке операционных систем OS/2 пребывала в состоянии безнадежной битвы за широкое распространение. Ее признанию мешало несколько факторов:
• OS/2 считалась требовательной к ресурсам (рекомендовалась AT с 2Мб ОЗУ хотя для работы было достаточно одного мегабайта).
• Совместимость с DOS на самом деле была далеко не на выском уровне. С другой стороны само наличие поддержки DOS было маленьким чудом поскольку препятствий этому было неисчислимое множество.
• Непомерно высокие цены. Возможно, маркетологи IBM и Microsoft имели какие-то свои особые соображения, но продажа набора разработчика (SDK – software development kit) за тысячи долларов отнюдь не помогала росту популярности операционной системы (первая версия Microsoft SDK for OS/2 вышедшая в апреле 1987 стоила три тысячи долларов).
• Ложные представления о новом продукте. Возможно самый большой ложный миф заключался в том, что OS/2 могла работать только на оборудовании IBM. Дела обстояли абсолютно иначе — даже версии OS/2 продаваемые самой IBM поддерживали оборудование сторонних производителей.
Резюмируя можно сказать что OS/2 1.0 не достигла абсолютного успеха (иначе сегодня большинство компьютеров работало бы под управлением OS/2), но и не стала оглушительным провалом. OS/2 внесла большое количество новых (и по большей части хороших) концепций в мир PC. Также OS/2 1.x выстроила солидный фундамент для OS/2 2.x которая в свою очередь была большим шагом в истории PC. Большинство концепций впервые появившихся в OS/2 1.x доказали свою обоснованность и не претерпели существенных изменений в последующих релизах. Программисты IBM и Microsoft без сомнения не заслуживают ничего, кроме уважения за проделанную работу.
OS/2 1.1 – Ранние годы.
Следующим релизом OS/2 стала вресия 1.1. Единственной причиной, по которой версию пронумеровали не как 2.0, вероятно было то, что графический интерфейс пользователя (GUI – Graphical User Interface) был обещан в версии 1.0, но не был закончен вовремя. Как забавный факт следует отметить, что Windows 1.0 разрабатывалась как Interface Manager и приобрела новое имя благодаря менеджерам игравших с именами не взирая на протесты программистов.
Presentation Manager имел кодовое имя Winthorn и практически полностью был написан в отделении IBM Hursley Labs. Программирование для PM было весьма схоже с программированием под Windows, однако, имелись и отличия:
• Прежде всего самое заметное было в различии координатных систем. В то время как координаты 0,0 в Windows были привязаны к верхнему левому углу экрана (что логично для знающего, как работает аппаратная реализация графики на архитектуре PC) в PM координаты 0,0 были привязаны к нижнему левому углу экрана (что логично для того, кто знает как работает координатная система в математике или физике).
• В Windows все графические операции передавались в так называемому Device Context. PM также использовал DC, но дополнительно имел еще один уровень абстракции называвшийся Presentation Space, что предоставляло большую гибкость.
• OS/2 имела гораздо более мощные функции рисования в своем графическом программном интерфейсе (Graphics Programming Interface, GPI) — наследие мейнфреймов. Некоторые из концепций GPI позднее были перенесены в Windows NT (но не в Windows 95).
• Общая программная модель в OS/2 была намного проще и не выглядела как набор “быстрых и грязных исправлений” (quick and dirty hack) что справедливо по отношению к программной модели Windows.
Помимо появления GUI другие изменения включали полную реализацию именованных каналов, которой не было в OS/2 1.0. Также была добавлена поддержка “больших” томов FAT (BigFAT). Теоретически поддерживались тома размеров до 2Гб, хотя практический лимит был несколько ниже.
После запуска OS/2 1.1 встречала пользователя следующим экраном:
Долгожданный GUI.
Достаточно странным фактом было то, что OS/2 1.1 не имела нормального текстового редактора с GUI интерфейсом – даже такого, как notepad в Windows. Вместо него было текстовое приложение E.exe, запускаемое из командной строки.
В любом случае, OS/2 1.1 была технически очень интересной и занимательной программой. Она обладала намного большими возможностями чем любая операционная система для персональных компьютеров в то время. Windows и MacOS даже в перспективе не имели того, что было в OS/2 – ни вытесняющей многозадачности, ни многопотоковости, ни виртуальной памяти.
Естественно, что системе были присущи и недостатки. Хотя и поддерживалось большинство тогдашних стандартов для вывода графики (CGA, EGA, VGA) но поддержка других была весьма слабая, если вообще существовала. Поддержка принтеров была чисто номинальная – несколько принтеров и плоттеров производства IBM и все.
Под OS/2 существовали различные приложения – в том числе такие как Microsoft Word, Lotus 1-2-3 и QuattroPro. Однако все они были текстовыми за исключением Microsoft Excel 2.2.
OS/2 1.2 – Развитие.
В конце 1989 Microsoft и IBM выпускают версию OS/2 1.2 – очень важное событие во всей истории OS/2 поскольку именно в версии 1.2 были реализованы практически все возможности обещаные в OS/2 еще до ее появления. В OS/2 1.2 разработчики наконец отказались от файловой системы FAT и реализовали инсталлируемые файловые системы (Installable File System, IFS) и высокопроизводительную файловую систему HPFS (High Perfomance File System).
HPFS была разработана “с нуля” Гордоном Литвином (Gordon Letwin) — ведущим разработчиком OS/2 в Microsoft. Новая файловая система весьма превосходила FAT, а также снимала множество ограничений:
• Отсутствовал печально известный лимит “8.3” на имена файлов – 8 символов на имя и 3 на расширение. Имена файлов могли быть длиной до 255 символов и допускали значительно больший диапазон допустимых к использованию символов – в частности пробел.
• Поддержка расширенных аттрибутов (Extended Attributes, EA). Каждый файл или директория могли иметь до 64Кб EA связанных с ним – там могла храниться любая информация – иконки, описания, информация для программы-каталогизатора и так далее.
• Поддержка больших дисков. FAT поддерживала разделы до 2Гб размером. HPFS поддерживала тома до 64Гб и была ограничена на то время лишь драйверами жестких дисков.
• Устойчивость к фрагментации. В то время как разделы FAT требовали регулярной дефрагментации для предотвращения иногда ощутимых потерь в производительности, HPFS пыталась использовать для файлов непрерывные фрагменты, сохраняя фрагментацию на минимальном уровне.
• Уменьшение потерь дискового пространства. Наибольший FAT диск в 2Гб размером использовал для хранения данных элементы размером 64Кб, чем вызывались большие потери дискового места (иногда до 50%). HPFS использовала сектора размером 512 байт таким образом резко уменьшая потери.
• Высокая отказоустойчивость. Если таблица FAT на дисковом разделе разрушалась в результате инцидента вся остальная информация на диске превращалась в гору бесполезного мусора поскольку вся информация о размещении файлов была сконцентрирована в FAT. HPFS дублировала часть информации и хранила структуру диска связно в обеих направлениях (от каталога к подкаталогу или файлу и наоборот). В результате, повреждения одной области не оказывали никакого влияния на весь остальной раздел. К примеру, не смотря на повреждение сектора с директорией – все файлы в ней оставались доступны.
Существовало две версии HPFS — “чистая” HPFS и HPFS386. Последняя, используемая в Microsoft LAN Manager (и IBM LAN Server) была более производительной, допускала значительно увеличенные размеры кэша и имела несколько расширений необходимых для серверов – к примеру встроенную систему разграничения доступа ( Access Control List, ACL) и систему ограничения директорий. В общем судьба HPFS оказалась весьма успешной – она практически в неизменном виде перешла в OS/2 2.0, и с некоторыми вариациями была использована в Windows NT под именем NTFS. Подобная история произошла с файловой системой UFS операционной среды SunOS 4.x. После революционного перехода на полностью новую ветку unix фирма Sun, имея богатый положительный опыт, без больших изменений оставила UFS в своей новой ОС. Это наглядный пример того, что удачные решения предшественников остаются в силе.
OS/2 GUI также получил новый внешний вид, весьма схожий с вышедшей через несколько месяцев Windows 3.0
Единообразие интерфейса OS/2 & Win3.0
Наиболее значимым различием между OS/2 1.2 и Windows 3.0 было то, что Windows не была операционной системой как таковой и исполнялась поверх MS-DOS (и даже могла быть запущена в DOS сессии OS/2). Также Windows содержала больше различных приложений (по большей части бесполезных, ну может быть за исключением Solitaire). OS/2 была более бизнес-ориентированной и при сравнении имела несколько спартанской вид. Отчасти это послужило тому, что Windows получила большее распространение среди конечных пользователей.
OS/2 1.3 – последняя из 16-битных ОС.
После исторического разрыва совместной разработки OS/2, вызванного нежеланием Microsoft делить прибыль от продаж оперционной системы с IBM, основной процесс по модернизации OS/2 происходил в IBM (хотя Microsoft и полностью сконцентрировалась на Windows некоторые вынужденные изменения в систему все же вносились). Версия 1.3 была практически идентична 1.2 по предоставляемым возможностям, но включала многочисленные улучшения производительности и удобстве использования.
Наконец во всех редакциях OS/2 присутствовал язык программирования REXX разработанный Майком Коулишоу (Mike Cowlishow) из IBM UK.
Язык изначально создавался для достижения четырех главных целей:
• легкой понимаемости (читаемости) написанных на нем программ, что облегчает работу программистам, пользователям и сопровождающему персоналу
• поддержка быстрого, эффективного и аккуратного программирования за счет обеспечения максимально естественной формы представления данных и управляющих структур языка
• обеспечения надежной и эффективной реализации языка на разнообразных платформах
• высокой применимости языка в системном и прикладном ПО
И все эти задачи были успешно решены. Таким образом операционная система получила мощный и гибкий инструмент, сравнимый с различными языками написания скриптов в UNIX подобных системах. Это несомненно являлось очень большим преимуществом, особенно в сравнении с более чем скромным набором возможностей которые предлагались при написании пакетных файлов в DOS и ранних версиях OS/2.
OS/2 2.0 – 32-х битная революция.
Пока в 1988 году IBM и Microsoft усердно трудились над OS/2 1.2 в IBM началась работа по разработке кардинально переработанной операционной системы. Итак, хотя версию 1.3 IBM совершенствовала исключительно своими силами, в тоже время под руководством ведущего разработчика Майкла Когана (Michael S. Kogan) уже полным ходом шли работы над версией 2.0. В марте 1992 операционная система была полностью готова и выпущена на рынок под названием OS/2 2.0 GA (General Availability – публично доступная). Приставка GA появилась не случайно. В это время шли яростные “словесные войны” между IBM и Microsoft и в одной из перепалок вице-президент Microsoft Стив Балмер пообещал публично съесть флоппи-диск если IBM умудрится выпустить OS/2 2.0 до конца 1991 года. Поскольку зрелище обещало быть достаточно интересным в ноябре 1991 была выпущена ограниченным тиражом OS/2 2.0 LA (Limited Availability – ограниченно доступная). К сожалению, господин Балмер не сдержал своего слова и OS/2 2.0 LA пришлось использовать как простую beta версию, каковой она в сущности и являлась.
Самым большим плюсом в OS/2 2.0 была сама система. Переход на 32-х разрядную архитектуру снял множество ограничений существовавших в DOS и OS/2 1.x – в первую очередь по работе с памятью. Вместе с тем система не была “полностью” 32-х разрядной – многие части оставались 16-ти разрядными – в первую очередь по соображениям совместимости и экономии времени. Для ускорения разработки, к примеру, драйвера графической подсистемы (драйвера видеокарт и принтеров для Presentation Manager) в OS/2 2.0 были 16-ти разрядными и были заменены 32-х битными версиями только в OS/2 2.1. Требованиями совместимости диктовалось использование 16-ти разрядных драйверов физических устройств (Physical Device Driver, PDD) совместимых с OS/2 1.3. Аналогичным образом многие фрагменты ядра были 16-ти битными для обеспечения поддержки приложений написанных для OS/2 1.x. Основные же элементы системы были полностью новыми и 32-х разрядными – к примеру поддержка множества виртуальных DOS машин (Multuply Virtual DOS Machine, MVDM) и менеджер памяти с поддержкой пейджинга. Более того основная часть кода была написана на C, а не на ассемблере как в OS/2 1.x.
Вторым существенным моментом стал новый интерфейс пользователя под названием Workplace Shell (или WPS для краткости) являвшийся радикальным уходом от концепций заложенных в GUI OS/1.x и Windows. Новый интерфейс был объектно-ориентированным и в нем все стало объектом – диск, принтер, программа и так далее. Манипуляции с объектами проводились с помощью drag-n-drop – перемещение, копирование, печать и уничтожение. В WPS широко использовалась правая кнопка мыши – для открытия контекстных меню и выполнения операций по перетаскиванию объектов.
Workplace Shell OS/2 2.0
Для оперционной системы OS/2 2.0 была зарегистрирована торговая марка “Интегрирующая платформа” (The Integrating Platform). Это название напрямую намекало на уникальную возможность OS/2 2.0 исполнять существующие DOS, Windows и OS/2 1.x приложения одновременно с новыми 32-х разрядными родными приложениями. В отличии от OS/2 1.x в версии 2.0 поддержка DOS была превосходной. Система полностью использовала появившийся в 386 и последующих процессорах виртуальный 8086 режим (Virtual 8086 mode). Злые языки компьютерного мира одно время утверждали, что этот режим был реализован в 386-м процессоре шокированными инженерами Intel – слухи о мучениях при программировании поддержки в OS/2 1.x действительно распространились весьма широко и облегчение страданий программистов на аппаратном уровне было поистине обычным состраданием. Кроме того, что пользователь теперь мог запускать не только несколько полноэкранных и оконных сессий DOS появилась возможность создавать “специальные” DOS сессии в которых использовалась не встроенная поддержка DOS, а предоставлялась возможность запустить DOS 4.0, DOS 5.0, DR-DOS и так далее.
Поддержка Windows приложений логическим образом вытекала из поддержки DOS. Полноэкранная Win-OS/2 сессия просто исполняла Windows 3.0 в рамках виртуальной DOS машины. Оконные сессии Win-OS/2 требовали более нетривиального подхода в связи с тем, что им было необходимо взаимодействовать с PM/WPS приложениями. Выход из ситуации был реализован написанием специальной версии экранного драйвера для Win-OS/2. Такой подход, хотя и обеспечил хорошую производительность, но имел существенный недостаток – это сделало процесс написания драйверов видокарт для OS/2 намного более сложным и дорогим занятием и было одной из причин малого количества драйверов для OS/2. Производителю приходилось помимо создания видеодрайвера для OS/2 дополнительно предоставлять специфическую OS/2 версию драйвера для Windows. Более логичным было бы написание “транслирующего” драйвера преобразовывавшего вызовы функций Win-OS/2 в вызовы PM – тогда от производителя требовалось бы написание только OS/2 версии видеодрайвера.
На первых порах OS/2 2.0 столкнулась с той же проблемой что и OS/2 1.x до нее – недостатком родных приложений. Система прекрасно справлялась с запуском DOS, Windows и OS/2 1.x приложений, но на первых порах ощущалась нехватка родных 32 разрядных программ.
OS/2 2.1, 2.11, 2.11 SMP – Надежная платформа, эпоха зрелости.
Выпуск версии OS/2 2.1 в мае 1993 года явился следствием эволюционного развития версии 2.0. Внешний вид не претерпел существенных изменений, разработчики продолжали трудиться над “внутренностями” системы. Из видимых конечному пользователю изменений стоит отметить смену версии Win-OS/2 с 3.0 на 3.1 и появление нового компонента под названием Multimedia Presentation Manager/2 (MMPM/2) добавившего в графический интерфейс пользователя различные мультимедийные возможности – звуковые схемы, воспроизведение мультимедийных файлов и тому подобное.
В ноябре 1993 выходит специальная версия OS/2 for Windows не содержащая кода Win-OS/2 а использующая уже установленную на компьютере копию Windows 3.x. Таким образом снижалась цена конечного продукта (IBM платила лицензионные отчисления Microsoft за использование кода Windows в Win-OS/2). Вместе с тем эта версия продемонстрировала ситуацию на рынке. Используя свое монопольное положение Microsoft с помощью манипуляций в сфере ценовой политики держала производителей клонов PC под жестким контролем, запрещая им предустанавливать на продаваемые компьютеры операционные системы отличные от DOS/Windows собственного производства. Позже такая политика была признана незаконной, но OS/2 это уже не помогло. Выпустив OS/2 for Windows фирма IBM пыталась разрешить проблему без нарушения OEM соглашений производителей компьютеров с Microsoft.
Несмотря на жесткий прессинг со стороны Microsoft времена OS/2 2.1 и 2.11 были отмечены ростом количества приложений написанных специально для OS/2. IBM достигла соглашения с несколькими крупными производителями программного обеспечения о разработке OS/2 версий их приложений. В число таких компаний входили Borland, Lotus, Novell и тогда еще самостоятельная WordPerfect. IBM в некоторых случаях даже субсидировала отдельные разработки. В то же время Microsoft проявляла не меньшую активность, однако не заключая договора или оплачивая разработку, а напротив шантажируя разработчиков ПО угрозами закрыть доступ к бета версиям и информации о Windows, если они будут разрабатывать свои продукты под отличные от Windows платформы.
OS/2 Warp. Золотая эра.
В октябре 1994 выходит OS/2 Warp – самая популярная и самая распространенная версия OS/2. Внутренне система незначительно отличалась от OS/2 2.11 за исключением расширенной поддержки оборудования и исправлением ошибок – хороший пример того, что грамотно спроектированный и продуманный продукт не нуждается в лихорадочном переписывании многих элементов кода. Наиболее серьезные изменения касались исключительно улучшению простоты использования конечным пользователем.
Развитие GUI интерфейса без отрыва от удобства использования.
Новые изменения и улучшения включали в себя:
• OS/2 Warp поддерживала новый улучшенный формат исп