Операционные системы Windows 9x создавались для работы только на IBM-совместимых персональных компьютерах. Они не являются переносимыми и на других платформах (на процессорах, не совместимых с архитектурой ia32) не работают. Как и для всего остального программного обеспечения от Microsoft, исходные коды операционных систем закрыты, поэтому подробного описания ее архитектуры практически нет; имеются только многочисленные публикации о том, как следует использовать эти системы.
Операционные системы семейства Windows 9x предназначены, главным образом, для домашнего, а не корпоративного применения. Уже многие годы они являются самыми распространенными в мире. Хотя они допускают возможность работы с компьютером нескольких пользователей (естественно, по очереди, поскольку системы являются однотерминальными), в них не поддерживается механизм учетных записей, как в остальных 32-разрядных операционных системах. Каждый пользователь может иметь свое собственное рабочее окружение, то есть свои вид рабочего стола (desktop), состав панели задач (taskbar) и меню Пуск (Start), параметры настройки используемых программ и многое другое. Это собственное рабо-
' SE означает «Second Edition» — вторая редакция.
2 Эта система вышла осенью 2000 года.
3 Слово «millennium» как раз и означает канун тысячелетия.
366_______________________________ Глава 11. Операционные системы Windows
чее окружение называется профилем (profile), и при включении такой возможности в системном каталоге образуется вложенный каталог1 с именем Profiles, в котором и размещаются профили пользователей. Независимо от того, имеет каждый пользователь свой профиль или не имеет, он должен зарегистрироваться, если система сконфигурирована для работы в вычислительной сети. Для выполнения процедуры аутентификации используются файлы с расширением pwl, к которым, к сожалению, имеется свободный доступ, в результате узнать пароль того или иного пользователя не составляет большой проблемы для злоумышленника.
Для облегчения работы с компьютером все эти системы поддерживают механизм автоматического обнаружения подключенных к нему устройств (так называемый механизм Plug and Play — «включай и работай»). Эту задачу выполняет специальный модуль — диспетчер конфигурации (Configuration Manager). Он гарантирует, что каждое устройство, входящее в состав персонального компьютера, сможет использовать линии IRQ (Interrupt Request — запрос на прерывание), адреса портов ввода-вывода, каналы прямого доступа к памяти и прочие ресурсы без конфликтов с другими устройствами. Кроме того, диспетчер конфигурации отслеживает текущие изменения в конфигурации компьютера. Поскольку операционные системы Windows 9x получили самое широкое распространение, все выпускаемое периферийное оборудование имеет необходимые драйверы, причем достаточно правильно написанные и успешно работающие. Поэтому серьезные проблемы на сегодняшний день с этим механизмом мало кто испытывает. Динамическое конфигурирование аппаратно-программной среды значительно упрощает использование операционной системы и позволяет без лишних операций ручной настройки работать на компьютере пользователям, не являющимся специалистами в вычислительной технике.
С точки зрения базовой архитектуры операционные системы семейства Windows 9x являются 32-разрядными и мультизадачными (многопоточными) системами с вытесняющей многозадачностью. Ядра у всех этих операционных систем построены по макроядерной архитектуре. Ядро состоит из трех основных компонентов: Kernel, User и GDI. Модуль Kernel обеспечивает основную функциональность операционной системы, в том числе: планирование процессов; поддержку потоков выполнения; синхронизацию объектов; работу с файлами, отображаемыми на память; управление памятью; файловый ввод-вывод; обработку исключений; работу консолей; взаимодействие 32-разрядного и 16-разрядного кода с преобразованием 16-разрядного формата кода и данных в 32-разрядный (и наоборот) посредством механизма шлюзования; некоторые другие функции. Компонент User управляет вводом с клавиатуры и координатных устройств (типа мыши) и выводом через пользовательский интерфейс. Когда то или иное устройство ввода генерирует прерывания, обработчик прерываний, используя модель асинхронного ввода, преобразует их в сообщения и посылает потоку необработанного ввода, который распределяет их по соответствующим очередям сообщений. Наконец, компонент ядра, называемый GDI (Graphical Device Interface — графический интерфейс устрой-
' Вместо термина каталог (directory) в системах с графическим интерфейсом гораздо чаще использу-ют термин папка (folder).
Операционные системы Windows 9x______________________________________ 367
ства), представляет собой графическую подсистему, которая отвечает за прорисовку графических примитивов, операции с растровыми изображениями и взаимодействие с аппаратно-независимыми графическими драйверами. GDI управляет выводом на экран, принтеры и другие устройства.
Все операционные системы Windows 9x централизованно хранят всю системную информацию об аппаратных средствах, установленном системном и прикладном программном обеспечении и его настройке, в том числе и индивидуальных параметрах каждого пользователя. Такая централизованная информационная база данных называется реестром (registry). Реестр избавляет от необходимости иметь дело с множеством INI-файлов, как это было в системах Windows 3.x. Физически содержимое реестра определяется файлами system.dat и user.dat, которые располагаются в каталоге с файлами операционной системы. В режиме, когда каждый пользователь имеет собственный профиль, определяющий персональную настройку его рабочего окружения, в состав реестра включается еще файл user.dat того пользователя, который в этот момент работает на компьютере. Файлы с именем user.dat располагаются в профилях пользователей и определяют права пользователей в операционной системе.
В операционных системах Windows 9x для работы с периферийными устройствами используется архитектура универсальный драйвер—мини-драйвер. Она позволяет упростить разработку драйверов для создателей нового оборудования. Операционные системы Windows 9x сами предоставляют базовые услуги для различных классов аппаратных устройств. Для этого существуют универсальные драйверы, которые включают большую часть кода, необходимого конкретному классу устройств для взаимодействия с компонентами операционной системы. Поэтому изготовителям оборудования необходимо написать относительно небольшой код минидрайвера, который должен содержать какие-либо дополнительные функции, нужные для управления конкретным устройством и учитывающие именно его специфику. Во многих случаях универсальные драйверы реализуют практически все функции, которые необходимы для управления операциями ввода-вывода при обмене данными с периферийным устройством, и иметь дополнительный мини-драйвер не требуется.
Помимо этих драйверов, которые относятся к драйверам низкого уровня и непосредственно завязаны на аппаратуру, в Windows 9x используются драйверы виртуальных устройств. Эти драйверы предназначены для управления системными ресурсами, причем они позволяют разделять ресурс между несколькими процессами. Аббревиатура VxD (Virtual Device — виртуально устройство), которую мы можем встретить при детальном знакомстве с этими операционными системами, означает, что речь идет именно о драйверах виртуальных устройств. Вместо средней буквы х в названии драйвера виртуального устройства может стоять, например, латинская буква Р, которая означает, что речь идет о драйвере принтера. Если же название виртуального драйвера — VDD, то мы имеем дело с драйвером дисплея.
Драйверы VxD поддерживают все основные устройства персонального компьютера, включая контроллеры на системной плате, контроллеры дисковых устройств, таймер, видеоконтроллеры, коммуникационные порты (параллельный и последовательный), принтеры, клавиатуры и многие другие. Они обеспечивают динами-
368 Глава 11. Операционные системы Windows
ческую поддержку драйверов устройств, а виртуальное устройство отслеживает состояние соответствующего реального аппаратного устройства для любого процесса, которое им используется. Поскольку системы Windows 9x обеспечивают мультизадачный режим, передача устройства от одного процесса другому происходит очень часто. Каждое выполняемое приложение или системный процесс может прервать работу с устройством другого приложения. Поскольку такое вмешательство в принципе могло бы вызвать полный крах процессов управления вводом-выводом, драйвер виртуального устройства проверяет и соответственно изменяет состояние устройства для любого приложения и/или системного процесса ввода-вывода. При этом, естественно, гарантируется, что устройство будет корректно функционировать с каждым из процессов, запрашивающим ту или иную операцию ввода-вывода па этом устройстве. Некоторые драйверы виртуальных устройств предназначены для управления программными компонентами операционной системы; они содержат код, который эмулирует определенные программные средства или отслеживает, чтобы выполняющиеся процессы использовали только свои данные. Во всех операционных системах Windows 9x в память загружаются только те драйверы виртуальных устройств, которые необходимы в данный момент. Это позволяет экономить оперативную память компьютера.
Одним из драйверов виртуальных устройств является системный драйвер, управляющий файловой системой защищенного режима и драйверами блочных устройств. Это супервизор ввода-вывода (Input/Output Supervisor, IOS). Он принимает запросы от файловых систем и загружает драйверы, обеспечивающие доступ к локальным дискам и дисковым устройствам.
Драйверы файловых систем являются компонентами кода с нулевым уровнем привилегий. Они поддерживают следующие файловые системы:
- VFAT (Virtual FAT) — файловые операции на дисковых устройствах и взаимо действие с подсистемой блочного ввода-вывода;
- CDFS — работа с компакт-дисками;
- UDF (Universal Disk Format) — соответствует спецификациям, принятым организацией Optical Storage Technology Association, и предназначена для доступа к дискам DVD-ROM и CD-ROM (эта файловая система не поддерживается в Windows 95);
- сетевые редиректоры для обеспечения связи с серверами компаний Microsoft и Novell (Netware).
Все эти файловые системы управляются диспетчером устанавливаемых файловых систем (IFS). Помимо перечисленных в операционную систему можно установить и иные файловые системы. Например, при работе с Windows 98 мы можем установить драйвер для доступа к дискам NTFS. Правда, реализация этого драйвера такова, что он игнорирует все расширенные атрибуты. В результате не работают разрешения NTFS для ограничения на доступ к файлам, которые и составляют одно из основных достоинств этой файловой системы.
По умолчанию системы Windows 98 и Windows ME позволяют работать с файловой системой FAT12 (для работы с дискетами), FAT16 и FAT32. Последняя является основной для этих операционных систем.
Операционные системы Windows 9x______________________________________ 369
Операционные системы Windows являются сетевыми. В дистрибутивы входит все необходимое системное сетевое программное обеспечение, которое легко и быстро устанавливается и конфигурируется. Используется программный интерфейс NetBIOS и технология SMB (Server Message Blocks). Системы главным образом предназначены для работы в составе рабочих групп, то есть для построения одноранговых вычислительных сетей, хотя операционные системы Windows 95 и Windows 98 допускают работу в составе домена в сетях клиент-сервер. Для этого они имеют все необходимые программные модули и интерфейсные экранные формы. Однако, поскольку в случае их использования в корпоративных сетях существенным образом начинает страдать информационная безопасность, делать это не рекомендуется.