В OS/2 уютно не только своим


Статья опубликована в журнале Hard'n'Soft, номер 2 за 1998 год. Здесь публикуется с любезного разрешения Максима Кожеченкова (коммерческого директора журнала)


В OS/2 уютно не только своим
Алексей Васильев

Работа 16-битных приложений DOS и Windows под управлением OS/2 является предметом множества слухов. Согласно одним под управлением OS/2 могут работать практически все приложения DOS и Windows 3.x, и делают все они чуть ли не в 10 раз быстрее, чем в "родной" среде. По другим, напротив, в OS/2 можно запускать лишь отдельные приложения, и работают они там, как правило, хуже. Попробуем беспристрастно разобраться с этой проблемой.

История вопроса

Так уж получилось, что OS/2, несмотря на всю свою прогрессивность, никогда не могла похвастаться большим количеством приложений для себя. Поэтому для нее всегда был актуален вопрос поддержки приложений DOS и Windows.
Эффективная поддержка 16-битных приложений DOS и Windows началась с выходом OS/2 версии 2.0, которая была 32-битной. Работа 16-битной машины DOS имитировалась на более мощной 32-битной машине, поэтому приложения DOS выполнялись так же быстро, как и в "родной" среде, иногда еще быстрее. Так как версия 2.0 разрабатывалась уже для процессора 80386, оказалось возможным обеспечить приложениям DOS многозадачный режим работы. На момент выхода в свет OS/2 2.0 (1991 год) уже большую популярность завоевала оболочка Windows 3.0, поэтому для успешного продвижения на рынке поддержка ею приложений Windows стала просто необходимостью, что и было сделано. Приложения Windows в OS/2 пока еще выполнялись заметно медленнее, чем в "родной" среде, но важным ее преимуществом стала возможность организации для приложений Windows так называемой вытесняющей многозадачности. Для Windows 3.x была принята кооперативная многозадачность, при которой центральный процессор занимается приложением после того, как другое приложение закончит работу и подаст специальный сигнал. При вытесняющей же многозадачности центральный процессор поочередно занимается приложениями, на каждое приложение отводится определенный фиксированный промежуток времени, а переключением задач управляет операционная система. Все эти преимущества OS/2 2.0 позволили IBM рекламировать ее как "лучше Windows, чем сама Windows" и "лучше DOS, чем сама DOS".
Выход OS/2 версии 3.0, получившей название Warp, стал дальнейшим шагом в улучшении совместимости OS/2 с DOS и Windows. Если в OS/2 2.0 команды Windows преобразовывались в команды OS/2, что замедляло их выполнение, то в версии 3.0 поддержка Windows была встроена в саму операционную систему, благодаря чему быстродействие повышалось. Теперь большинство приложений Windows выполнялось так же быстро, как и в "родной" среде. Значительно улучшилась поддержка приложений DOS: операционная система научилась распознавать и корректно интерпретировать широкий круг непосредственных обращений к устройствам компьютера. Имитация Windows соответствовала уровню версии 3.1, а MS DOS ─ версии 6.22. К аппаратному обеспечению Warp предъявляла довольно скромные требования, не намного превосходящие предъявляемые Windows, что давало возможность заменять Windows на OS/2 при небольшой модернизации. Далее последовал выход OS/2 Warp 4.0., которая была несовместима с готовившейся в это время к выходу Windows 95. Новая версия OS/2 имеет некоторые, не слишком значительные, улучшения в поддержке приложений DOS и Windows, но устанавливать ее только ради этого не имеет смысла из-за относительно высоких требований к аппаратному обеспечению. Все то, что относится к совместимости OS/2 Warp 3.0 с DOS и Windows 3.x, справедливо и для следующей за ней версии.

Виртуальная машина DOS

Для выполнения приложений DOS и Windows 3.x в OS/2 есть так называемая виртуальная машина DOS. Очень упрощенно ее можно представить как программу, имитирующую работу 16-битной операционной системы в 32-битной среде. Необходимость в такой программе связана с тем, что OS/2 является полностью 32-битной операционной системой. Напротив, в Windows 95 поддержка 16-битных приложений DOS и Windows 3.x обеспечивается наличием в ней фрагментов 16-битного кода, что понижает надежность работы этих приложений. Кстати, аналогично OS/2 организуется поддержка приложений DOS и в полностью 32-битной операционной системе Windows NT. Параметры виртуального компьютера DOS можно менять в широких пределах, щелкнув по значку DOS-приложения правой клавишей мыши, вызвав тем самым записную книжку Settings ("Параметры"). Для каждого приложения DOS и Windows параметры виртуальной машины могут быть написаны отдельно, они хранятся в участках логических дисков, отведенных для хранения расширенных атрибутов (из Norton Commander эти участки видны, как скрытые системные файлы Ea data.sf), мало того, для некоторых широко известных приложений DOS оптимальные параметры виртуальной машины устанавливаются автоматически. При вызове приложения DOS под него создается своя виртуальная машина, для которой выделяется определенный участок оперативной памяти. Если одновременно работают несколько приложений DOS, то оперативной памяти может не хватить, и тогда начнется активное использование подкачки на жесткий диск, что резко снижает быстродействие. Для разрешения такой ситуации нужно четко определить, сколько памяти требуется для каждого приложения, и, исходя из этого, ограничить размер памяти, используемой каждой виртуальной машиной.
Так как Windows 3.x фактически является графической оболочкой DOS, то приложения Windows выполняются в OS/2 на базе виртуальной машины DOS, но есть некоторые отличия. Так как в Windows 3.x принята кооперативная многозадачность, то несколько приложений могут выполняться на одной виртуальной машине. Этот режим устанавливается по умолчанию, но он может быть изменен на режим Separate session ("Отдельный сеанс"), когда для каждого приложения Windows создается своя виртуальная машина. Кстати, наличие этого режима выгодно отличает OS/2 от Windows 95, где приложения предыдущих версий Windows могут выполняться только в режиме кооперативной многозадачности. Режим Separate session отличается высокой надежностью, так как сбой в работе одного приложения не может заблокировать выполнение другого, но имеет высокий расход памяти, поэтому его целесообразно применять на компьютерах с оперативной памятью 16 Мбайт и выше. Наконец, есть режим быстрой загрузки, при котором заранее создается виртуальная машина и загружаются главные элементы Windows в оперативную память. При этом приложения Windows начинают выполняться практически сразу после запуска без задержки на загрузку элементов Windows, но за это удовольствие приходится расплачиваться уменьшением оперативной памяти, доступной приложениям OS/2, и, как следствие, снижением их быстродействия.
Параметрами виртуальной машины DOS можно управлять более гибко, чем параметрами обычной DOS. Изменение параметров DOS, как правило, требует редактирования файла CONFIG.SYS и последующей перезагрузки компьютера. В памяти виртуального компьютера не должно быть некоторых драйверов, присутствие которых в первом мегабайте памяти при работе с обычной DOS является обязательным. Поэтому объем базовой памяти в виртуальной машине DOS может достигать 720 Кбайт против традиционного предела 640 Кбайт. Другим преимуществом виртуальной машины DOS является возможность эффективного контроля доступа приложения к устройствам компьютера. Операции, которые могут нарушить устойчивое функционирование системы, блокируются, что почти не оставляет программам вирусов под DOS возможностей для различных пакостей.

Полноэкранный и оконный режимы работы

Как и "родной" приложения, большинство программ для DOS и Windows 3.x могут работать в оконном режиме. Именно такой режим устанавливается по умолчанию. Однако есть ряд приложений, главным образом связанных с выводом графической информации, требующих для своей работы вывода информации на весь экран. Для этих приложений есть так называемый полноэкранный режим, при котором экран выглядит так же, как и при работе с DOS или Windows 3.x.
Применять оконный режим очень удобно для приложений DOS, выводящих текстовую информацию. Можно менять размеры окна, тип и размеры шрифта, добиваясь наименьшего утомления зрения. В DOS довольно трудно обеспечить частоту мерцания экрана больше, чем 60 Гц, но при выполнении приложений DOS в среде OS/2 в оконном режиме эта частота определяется уже лишь возможностями монитора и видеокарты, что также позволяет снизить утомляемость. При выполнении приложений DOS в полноэкранном режиме на одних видеокартах сохраняется высокая частота мерцания экрана, на других ─ происходит переключение на 60 Гц. Однако далеко не для всех приложений DOS оконный режим возможен, даже простая графика для монитора VGA не всегда работает в нем. Есть и приложения, в которых картинки рисуются символами, и эти картинки при работе в оконном режиме могут быть искажены.
Приложения для Windows 3.x обычно работают в оконном режиме нормально. Исключение составляют мультимедиа-программы и графические редакторы. Так, например, при работе графического редактора Photo Finish в оконном режиме палитра обрабатываемого изображения искажается до неузнаваемости, при полноэкранном же режиме таких проблем не наблюдается. Кстати, большинство приложений Windows 3.x становятся гораздо удобнее, если их развернуть на весь экран.

Работа с жестким диском

В однозадачной операционной системе DOS ввод-вывод на жесткий диск может значительно затормозить выполнение приложения. Для ускорения процесса создана утилита SMARTDRV, осуществляющая операции чтения и записи через кэш ─ специально выделенную область оперативной памяти компьютера. Но в условиях DOS кэширование не может быть столь же эффективно, как в OS/2. В последней запись файла на диск осуществляется первоначально в кэш, что происходит очень быстро, программа продолжает выполняться, а запись из кэша на диск выполняется уже как отдельная задача.
Запуск Benchmark-теста из программы Chekit для DOS как в "родной" среде, так и в виртуальной машине DOS показывает увеличение скорости доступа к необходимой информации на жестком диске за счет эффективного кэширования в 3 раза для WD Caviar 22100. Практически же для приложений, активно работающих с диском, выигрыш в быстродействии может достигать 5 раз! Интересно, что наиболее заметен этот выигрыш в столь, казалось бы, медленно работающих программах, как текстовые редакторы. В таких текстовых редакторах, как MultiEdit и Word for Windows периодически происходит автоматическое создание резервных копий документа. И если при работе в DOS и Windows эта операция надоедает пользователю, то в OS/2 она происходит так быстро, что подчас ее трудно заметить.

Вычисления

Если брать чисто вычислительные процессы, то OS/2 выигрыша в быстродействии выполнения приложений DOS и Windows 3.x либо не дает, либо дает незначительный. Выполнение теста Benchmark из Chekit для DOS в зависимости от настройки виртуальной машины DOS показывает для процессора 486DX2 изменение производительности на +/- 10% относительно результата в MS DOS. Тест Benchmark из одного из наиболее мощных математических пакетов MATLAB 4.0 for Windows показывает снижение производительности по сравнению с "родной" средой, но не более, чем на 10%.
Вообще говоря, отрегулировав под данную конфигурацию компьютера и специфику данной задачи виртуальную машину DOS, опытный пользователь может несколько повысить скорость вычислений. Приемы такой регулировки подробно описаны в книге Брюса Холберга "OS/2 Warp без проблем" (М.: Бином, 1997). Правда, максимум, что можно получить ─ это 20% прироста скорости вычислений по сравнению с MS DOS (сказанное относится лишь к программам, носящим преимущественно вычислительный характер, операции работы с диском, как уже упоминалось ранее, в OS/2 работают быстрее). Так что решайте, что вам больше нравится: возиться с настройками или ждать результатов вычислений. Более весомый выигрыш в быстродействии может наблюдаться для программ, использующих память свыше 1 Мбайт. Дело в том, что в 16-битной операционной системе DOS можно напрямую адресоваться к первому мегабайту памяти, а выше нужен специальный драйвер, работа которого отнимает некоторые ресурсы у компьютера. В 32-битной OS/2 Warp можно обратиться к любой ячейке памяти в пределах 4 Гбайт напрямую, поэтому операции работы с расширенной памятью выполняются гораздо быстрее.

Легкий жанр

В DOS принята страничная организация памяти, адрес ячейки памяти состоит из номера страницы и положения ячейки на странице. Размер страницы составляет 64 Кбайт, обращение к массиву данных длиной более этого значения осуществляется гораздо медленнее. Размер видеопамяти в режиме VGA составляет 256 Кбайт, то есть 4 страницы. Современные программы обычно требуют в 4─8 раз больший объем видеопамяти, и страничная организация памяти сильно тормозит вывод изображения на дисплей. В OS/2 применяется линейная организация памяти, которая позволяет быстро работать с большими массивами данных, что повышает скорость вывода изображения по сравнению с DOS примерно в 2 раза. Но надо иметь в виду, что скорость обновления изображения на экране для приложений DOS и Windows 3.x в OS/2 принудительно ограничивается, по умолчанию частота обновления составляет 10 раз в секунду, и чтобы почувствовать преимущество использования OS/2, эту частоту следует поднять до 50 раз в секунду. Особенно заметно увеличение скорости вывода на экран при проигрывании видеороликов в формате *.AVI. Кстати, в OS/2 лучше использовать проигрыватель *.AVI-файлов, как это ни парадоксально, предназначенный для Windows, чем входящий в состав OS/2.
Приложения Windows, воспроизводящие звуковые файлы, без проблем работают в среде OS/2. А вот приложения DOS, использующие звуковую карту, к сожалению, далеко не всегда могут нормально работать в OS/2, так как в DOS отсутствуют собственные средства управления звуковой картой. Не лучшим образом работают в OS/2 приложения DOS, выдающие звуки на встроенный динамик системного блока компьютера. Обычно эти звуки трансформируются в нечто ужасное, поэтому в списке параметров виртуальной машины есть и опция отключения динамика. Что же касается приложений Windows, использующих MIDI, то тут могут возникнуть трудности. Так, программа Midisoft Studio 4 при работе в среде OS/2 не может правильно осуществить автоматическую настройку таблицы MIDI, и эту операцию приходится выполнять вручную.
Работа игровых приложений DOS и Windows 3.x в среде OS/2 Warp подчиняется тем же правилам, что и мультимедиа. При создании в OS/2 Warp 3.0 была заложена возможность распознавания и автоматической настройки виртуальной машины для 100 наиболее популярных тогда игр. Но игровые программы так быстро совершенствуются, что сейчас данная возможность вряд ли кому нужна, поэтому настройку виртуальной машины придется делать самостоятельно. Полезно иметь в виду, что подавляющее большинство игр могут нормально работать лишь в полноэкранном режиме. Для многих игр под DOS серьезной проблемой является необходимость около 600 Кбайт свободной базовой памяти. Если в DOS подобная настройка распределения памяти чрезвычано сложна, то в виртуальной машине DOS она выполняется очень просто.

Коварство Win32s

Чтобы стало возможным выполнение 32-битных приложений в среде Windows 3.1 и Windows 3.11, в 1994 году была выпущена библиотека подпрограмм Win32s. Сначала предполагалось, что эта библиотека ─ лишь переходный этап на пути к новой версии Windows, впоследствии получившей название Windows 95. Из этого и исходили создатели OS/2 Warp 3.0, обеспечив в ней поддержку приложений Win32s на уровне версии 1.10. Но с конца 1994 года развитие событий пошло по другому руслу. Выпуск Windows 95 многократно откладывался, а после выхода далеко не все захотели сразу пользоваться ею. По этим причинам Win32s многократно совершенствовалась, на момент написания статьи автору была известна версия 1.30.

Выводы

Выполнение приложений DOS и Windows 3.x в среде OS/2 дает следующие преимущества:
  1. Повышается надежность работы и устойчивость к действию вирусов.
  2. Возможна организация вытесняющей многозадачности.
  3. Программы, часто обращающиеся к жесткому диску, работают гораздо быстрее.
  4. Можно гибко регулировать параметры виртуальной машины DOS.
  5. Вывод изображения на дисплей осуществляется быстрее.
  6. При выполнении в оконном режиме приложений DOS с текстовым выводом информации снижается утомляемость оператора.
  7. Для приложений DOS увеличивается размер базовой памяти.
  8. Печать становится более удобной и надежной.
Но обратной стороной этих преимуществ являются недостатки:
  1. Невозможность поддержки приложений последних версий Win32s.
  2. Проблемы с работой приложений DOS, выводящих звук через звуковую карту или встроенный динамик системного блока.
  3. Трудности в инсталляции приложений, работающих с MIDI.


Если у вас есть какие то комментарии, пожелания или дополнения пишите Euxx.


Новые статьи на нашем сайте:


Комментариев к странице: 0 | Добавить комментарий
Домой | Проект ядро Core/2 | Проект OS/4 Download | Новости | Гостевая книга | Подробно обо всем | Нужные программы | Проекты | OS/2 FAQ | Всячина | За и Против | Металлолом | #OS2Russian | RDM/2 | Весёлые картинки | Наша галерея | Доска объявлений | Карта сайта | ПОИСК | ФОРУМ