Просматривая отрицательные рецензии на Windows 95, вы почерпнете мало полезных сведений. Но и читая официальные документы корпорации Microsoft, посвященные Windows 95, в том числе фирменную документацию, вы будете обескуражены словами "принципиально новая версия Windows", "полностью 32-разрядная операционная система", "система защищенного режима, не содержащая и не использующая код MS-DOS", а также множеством оговорок относительно того, где именно в Windows 95 встречаются 16-разрядный код, реальный режим и MS-DOS.

Вся беда в том, что вышеприведенные заявления фирма Microsoft сделала еще в 1993 году, когда объявила о проекте новой версии Windows. С тех пор изменилось многое  -  кроме официальной точки зрения. И теперь все технические писатели, работающие в корпорации Microsoft, вынуждены считаться с ней, по мере возможности пытаясь объяснить, что все-таки Microsoft имела в виду.

Меня удивляет упорное отрицание корпорацией очевидного факта: Windows 95 основана на том, что уже 15 лет именуется MS-DOS. Оттого, что MS-DOS в приказном порядке теперь считается подсистемой Windows 95, разумеется, в реальной жизни ничего не изменилось. Существует ядро реального режима, которое после включения компьютера целиком загружается из одного модуля  -  IO.SYS.

Если в корневом каталоге имеется файл CONFIG.SYS, то его команды выполняются при инициализации IO.SYS. Если существует также и AUTOEXEC.BAT, то он выполняется командным процессором COMMAND.COM (если не указан альтернативный интерпретатор команд). А дальше происходит следующее: если в AUTOEXEC.BAT нет команды "WIN", но в файле MSDOS.SYS, который на самом деле является текстовым файлом в стиле INI-файлов, есть команда "BootGUI=l" (в секции [Options]), то графическая оболочка защищенного режима загружается как бы по умолчанию, будто так и надо. Стоит заменить значение "BootGUI" на 0 - и процесс загрузки станет заканчиваться появлением всеми любимого приглашения "С:>". По команде "VER" вы, естественно, получите сообщение "Windows 95", но любые утилиты, включая Microsoft Diagnostics, идентифицируют активную операционную систему как "MS-DOS 7".

Cхема распределения многозадачности в ядре Windows

Кстати, если в той же секции [Options] имеется параметр "BootMulti=l", то, нажав F4 в начале загрузки Windows 95, можно будет загрузить прежнюю версию MS-DOS. Очень "демократичная" возможность, но, прямо скажем, лишняя. Ведь "MS-DOS 7", будь она трижды подсистемой Windows 95, адресует 640 Кб памяти в реальном режиме процессора и имеет в своем комплекте (в каталогах Windows 95 и его подкаталоге COMMAND) все необходимые драйверы, TSR и утилиты, а главное  -  прекрасно работает со всеми программами, которые вы раньше запускали под MS-DOS, включая...Windows 3.1.

Microsoft постаралась создать иллюзию того, что нормальным режимом работы Windows 95 является работа в графической оболочке, которая всегда находится где-то под рукой, в памяти компьютера. Даже покинуть оболочку можно, только инициировав перезагрузку или отключение системы или же перейдя в "режим MS-DOS" с возможностью возврата в графическую оболочку по команде "EXIT". Но на самом деле в "режиме MS-DOS" в памяти остается только загрузчик Windows 95, а не сама Windows 95. Команда "EXIT" полностью загружает графическую оболочку с диска. Если, работая в "режиме MS-DOS", вы загрузили какие-либо резидентные программы, то системе придется произвести полный рестарт компьютера.

Забавнее всего выглядит то, как в Windows 95 реализована возможность запуска приложений MS-DOS с собственными AUTOEXEC.BAT и CONFIG.SYS. Для этого, разумеется, необходим переход в "режим MS-DOS", а выполнение уникального CONFIG.SYS достигается опять-таки полной перезагрузкой компьютера. Microsoft не пишет об этом в документации, предназначенной для общего пользования, не учитывая того, что у пользователей есть глаза.

И еще одна деталь, на которую стоит обратить внимание, для того чтобы непосредственно перейти к пониманию организации системы. Согласно документации Microsoft система Windows 95 обеспечивает:

полную поддержку разделения доступа к файлам (вместо резидентной программы SHARE.EXE);

полную поддержку разнообразных звуковых плат, дисководов CD-ROM и других мультимедиа-устройств, не требуя при этом установки MS-DOS-драйверов;

поддержку файловой системы дисков CD-ROM (вместо MSCDEX.EXE);

кэширование дисков (вместо SMART-Drive);

работу с мышью не только в графической среде, но и с MS-DOS-программами, заменяя драйвер мыши для MS-DOS;

динамическое сжатие данных (вместо DRVSPACE.BIN, DBLSPACE.BIN);

полную поддержку работы станции в локальных сетях MS-NET и Novell NetWare, причем не надо загружать никаких резидентных программ.

Все это очень здорово, а главное, все это  -  чистая правда. Раньше для того чтобы использовать под Windows 3.1 дополнительную и расширенную память, мышь в MS-DOS-сессии, дисковод CD-ROM и кэширование диска, вам приходилось загружать соответствующие MS-DOS-драйверы. Теперь при старте графической оболочки все необходимые драйверы будут загружены автоматически и соответствующие ресурсы станут доступны без затрат памяти MS-DOS. Замечу, кстати, что некоторые компоненты новой файловой системы (которая теперь позволяет работать с длинными, до 255 символов, именами файлов и при этом полностью совместима с FAT) были использованы еще в Windows for Workgroups: драйвер устанавливаемых файловых систем, 32-разрядный драйвер FAT, 32-разрядное кэширование жесткого диска. Все эти черты получили дальнейшее развитие в Windows 95. Кроме того, появились 32-разрядный драйвер CD-ROM, более мощная подсистема блокового ввода-вывода и другие возможности.

Но без графической оболочки всего этого добра как не было, так и не будет, и для работы в "режиме MS-DOS" соответствующие драйверы придется загрузить. Это лишний раз подтверждает, что графическая оболочка Windows 95  - это одно, а ядро реального режима MS-DOS  -  это, как и в старые добрые времена Windows 3.0, совсем другое.

Еще одна, совсем мелкая, деталь  -  чтобы упомянутые факты не слишком бросались в глаза, при выходе в "режим MS-DOS" выполняется пакетный файл DOSSTART.BAT, находящийся в каталоге Windows 95. По умолчанию в него включаются команды загрузки MS-DOS-драйверов устройств, например мыши, или расширение драйвера CD-ROM (MSCDEX.EXE), которых в противном случае "хватятся" пользователи. Вы не поверите, но DOSSTART.BAT не документирован даже в Windows 95 Resource Kit!

Почему Microsoft продолжает настаивать на том, что в Windows 95 нет MS-DOS, а есть "режим MS-DOS"? Мне это напоминает гипотезу Птолемея, который объяснял "петляние" планет но небу сложной системой эпициклов. А ведь насколько все становится проще, если предположить (хотя бы предположить!) факт вращения Земли и планет вокруг Солнца... Кстати, наиболее трезвомыслящим астрономам XVI века приходилось делать расчеты, руководствуясь теорией Коперника и при этом официально признавая теорию Птолемея.

А ведь нет ничего зазорного в загрузке Windows 95 из-под MS-DOS. Ничто лучше этой ОС не поддержит MS-DOS-приложения, именно в этой среде лучше всего чувствуют себя те 16-разрядные драйверы устройств, которые все-таки приходится загружать (например, драйверы сканеров). Пользователь сможет применять как новые, так и старые, испытанные методы работы с системой. Так скажите ему правду!

Теперь перейдем к ядру графической оболочки Windows 95. Так же, как и ядро Windows З.х, оно имеет трехуровневую структуру Kernel - User - GDI. "По-хорошему" все эти модули должны бы быть 32-разрядными, но в действительности полностью 32-разрядной сделана только самая низкоуровневая часть ядра Windows 95  -  Kernel. Вполне понятно, что Microsoft обязана была выполнить в 32-разрядном коде такие базовые вещи, как функции ввода-вывода, управления памятью и процессами, поддержка сетевой и файловой систем.

Что касается двух других модулей ядра, то расчеты показали, что полностью 32-разрядные User и GDI вместе потребуют для работы более 1 Мб памяти (во всяком случае именно эту цифру приводит Адриан Кинг в книге "Inside Windows 95"). Кроме того, эти модули должны быть частично 16-разрядными, поскольку к ним постоянно обращаются не только новые, но и старые прикладные программы Windows, использующие функции 16-разрядного API.

Рассказывая все это, я не открываю никакой Америки  -  эти данные, равно как и приводимая ниже схема распределения 32- и 16-разрядного кодов в ядре Windows 95, содержатся в наиболее серьезных источниках, таких как Windows 95 Resource Kit (а вот, например, в спецвыпуске Microsoft Magazine, посвященном Windows 95, о 16-разрядности нет вообще ни слова).

Прекрасно, а теперь давайте решим, хорошо это или плохо. Возможно, вы порой ловите себя на том, что, взглянув на Program Manager, недовольно бормочете "м-да, на этих 16-разрядных операционках далеко не уедешь...", и готовы подать на Microsoft в суд (это, кстати, тоже модно) за то, что она не полностью загружает процессор вашего компьютера. В этом случае система с наполовину 16-разрядным ядром для вас неприемлема. Впрочем, скорее всего вы и так уже пользуетесь либо OS/2, либо Windows NT и поэтому находитесь выше дискуссий о недостатках Windows 95, массовой операционной системы, с которой будут работать десятки миллионов людей на компьютерах с микропроцессорами 486 и даже 80386 и в среднем восемью мегабайтами оперативной памяти.

Ну а что представляет собой многозадачность Windows 95, которая, в противоположность кооперативной многозадачности Windows 3.1 должна быть основана на разделении времени? Следующая схема цитируется из Introducing Windows 95.

16-разрядные приложения для Windows выполняются в общем пространстве адресов в пределах системной виртуальной машины (ВМ). Варианты, подобные выполнению каждого приложения Winl6 в отдельной виртуальной машине (по типу OS/2) и эмуляции Windows 3.1 в пределах подсистемы Win32 (как это делается в Windows NT), Microsoft отклонила в виду их чрезмерной ресурсоемкости, решив, что подавляющему большинству пользователей вовсе и не нужна вытесняющая многозадачность старых Windows-приложений.

Cтруктура многозначности Windows 95

Для каждого Win32-пpилoжeния и для области адресов приложений Winl6 используются отдельные очереди сообщений. Кроме того, в Windows 95 применены новые методы очистки и восстановления системы в случае ошибок. Таким образом, приложения Winl6 фактически изолированы от остальных процессов. Если ошибка в программе, выполняющейся под Windows 3.1, могла обрушить всю систему, то "сломать" Windows 95 уже не так просто. Что же касается приложений Win32, то они выполняются в режиме "настоящей" многозадачности с разделением времени со всеми вытекающими из этого последствиями.

Значит, во время выполнения любой операции любой прикладной программой под Windows 95 можно вызвать любую другую прикладную программу и работать с ней? Как под OS/2 и Windows NT? Представьте себе, да. Даже во время выполнения таких "великих и ужасных" операций, как форматирование дискеты или копирование файлов на дискету при помощи приложений Explorer или File Manager, вы можете совершенно спокойно работать с текстом в окне Microsoft Word 6.0, как это делал автор, набирая эти строки.

Windows 95 полностью использует адресуемую память 386-х процессоров, при этом прикладные программы могут работать с объемом памяти до 2 Гб. Файл виртуальной памяти Windows 95 имеет динамический размер, ограниченный только объемом жесткого диска и не зависящий от фрагментации. Пользователь не должен сам заботиться о параметрах файла виртуальной памяти, Windows 95 сделает это лучше.

При установке дополнительного устройства, подключаемого на основе plug-and-play, Windows 95 сама заботится о его конфигурировании. Впрочем, достаточно удобно использовать Windows 95 и без аппаратной поддержки plug-and-play  -  система чрезвычайно много знает о том, какие существуют внешние устройства и как их идентифицировать, включая CD-дисководы, звуковые карты, модемы, мыши и многое другое.

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

Значит ли это, что мы наконец получили ту самую "идеальную" операционную систему, которая при относительной нетребовательности к ресурсам позволит делать все, что необходимо? Вот уж нет! Не забывайте, на какой аппаратной платформе и с какими приложениями вы работаете. Правда, имеются разные оценки того, насколько Windows 95 совместима (или несовместима) со старыми MS-DOS- и Windows-приложениями, но лично я не имею подобного отрицательного опыта. Windows 95 вполне благосклонно относится не только ко всем приложениям, которые я обычно использую, но и к старым OEM-драйверам, например драйверам принтера. Неожиданным сюрпризом для меня было, когда под Windows 95 прекрасно заработал Adobe Type Manager 2.5.

В этой статье я привел те сведения о Windows 95, которые считаю наиболее важными именно сейчас, когда система только-только вышла на рынок. Есть официальная точка зрения Microsoft, есть хор скептиков и есть миллионы людей, которым надо работать.

Камилл Ахметов  -  редактор журнала "КомпьютерПресс". С ним можно связаться по E-mail: kamill@cpress.msk.su и телефону: (095) 470-3105.

КАМИЛЛ АХМЕТОВ

Версия для печати