Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Операционная система Windows 95 для программиста

© Александр Фролов, Григорий Фролов
Том 22, М.: Диалог-МИФИ, 1993, 271 стр.

[Назад] [Содеожание] [Дальше]

1.1. Хорошие новости

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

Адресация памяти

В операционных системах Microsoft Windows 95 и Microsoft Windows NT для 32-разрядных приложений используется сплошная, несегментированная модель памяти (FLAT-модель ). Основанная на аппаратных особенностях процессоров Intel 80386, 80486 и Pentium, эта модель позволяет адресовать память при помощи 32-разрядного смещения.

Забудьте про сегментные регистры. Их содержимое равно нулю и вам нельзя работать с сегментными регистрами в своих приложениях (даже если вы создаете драйвер устройства).

Забудьте про ключевые слова NEAR и FAR . Сплошная модель памяти похожа на модель памяти TINY , в которой программа адресуется к данным и функциям только при помощи смещения без использования сегментов. Отличие, однако, заключается в том, что размер виртуального адресного пространства в операционных системах Microsoft Windows 95 и Microsoft Windows NT достигает 4 Гбайт.

Сказанное не означает, что любое приложение имеет доступ ко всей памяти. Так как процессор работает в защищенном режиме, адресация памяти выполняется с использованием страничной адресации, глобальной таблицы дескрипторов GDT , а также локальных таблиц дескрипторов LDT . А раз так, то операционная система может ограничить права обычных приложений, "не допуская" их к системной памяти и памяти других приложений (подробное описание схемы адресации памяти в защищенном режиме вы найдете в 6 томе "Библиотеки системного программиста").

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

Теперь о том, как используется виртуальное адресное пространство в операционной системе Microsoft Windows 95 (рис. 1.1).

img00001.gif (4208 bytes)

Рис. 1.1. Распределение виртуального адресного пространства в операционной системе Microsoft Windows 95

Верхний гигабайт адресного пространства зарезервирован для использования операционной системой (неплохой запас, не правда ли?). В этой области располагаются виртуальные драйверы, работающие в нулевом кольце защиты, планировщик виртуальных машин, расширитель DOS (DOS extender ), а также сервер DPMI.

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

Третий гигабайт виртуального адресного пространства (область совместного использования) нужна для создания блоков памяти, доступных одновременно из нескольких приложений. Из этой области выделяется память для 16-разрядных приложений Windows, а также память, полученная от сервера DPMI.

32-разрядные приложения также работают с этой областью. В частности, здесь находятся некоторые системные 32-разрядные DLL-библиотеки (KERNEL32.DLL , USER32.DLL , GDI32.DLL ), из этой области выделяется память для работы с отображаемыми файлами (об отображаемых файлах мы расскажем в разделе "Изменения в файловой системе"). Кроме того, область совместного использования нужна виртуальным драйверам для создания глобальных блоков памяти, доступных в любой момент времени.

Область, которая простирается от границы первых 4 Мбайт до границы 2 Гбайт содержит адресное пространство текущего 32-разрядного процесса (который в данный момент активен). Здесь размещается исполнимый код процесса, его данные и полученные динамически блоки памяти. Защита адресных пространств разных процессов достигается при помощи механизма страничной адресации.

И, наконец, первые четыре мегабайта виртуального адресного пространства зарезервированы для системы. К этой области имеют доступ 16-разрядные приложения Windows и программы DOS, причем текущая виртуальная машина располагается в пределах первого мегабайта. Остальные три мегабайта нужны для загрузки резидентных программ и драйверов DOS (теперь вряд ли вы теперь сможете пожаловаться на то, что для резидентных программ и драйверов выделяется слишком мало памяти). Заметим также, что первые четыре мегабайта виртуального адресного пространства недоступны для 32-разрядных приложений.

Реальная мультизадачность

Приложения Microsoft Windows версии 3.1 работали в режиме невытесняющей ("добровольной") мультизадачности, передавая друг другу управление в момент выборки сообщения из очереди функцией GetMessage . Этот способ не лишен недостатков, так как ошибка в одном из приложений могла привести к краху всей системы.

В среде Microsoft Windows 95 (и, разумеется, Microsoft Windows NT) организована вытесняющая мультизадачность , когда для работы приложениям выделяются кванты времени. Соответствующая подсистема основана на использовании аппаратных прерываний таймера, поэтому она устойчива к ошибкам приложений.

Однако самая приятная новость заключается в том, что теперь приложения могут создавать подзадачи. И эти подзадачи будут работать параллельно с создавшим их приложением и параллельно с другими приложениями.

В вашем распоряжении есть средства синхронизации задач (семафоры ), а также средства обмена данными между задачами и процессами (каналы и совместно используемая память ).

Все это облегчает создание сложных приложений, допускающих мультизадачную обработку.

Изменения в файловой системе

Файловой системе DOS присущи многие недостатки, один из которых - ограничение длины имени файла. В операционной системе Microsoft Windows 95 используется так называемая таблица размещения файлов защищенного режима (Protected-mode FAT или VFAT ), которая позволяет использовать имена файлов длиной до 260 символов (включая двоичный нуль, закрывающий строку имени).

Одно из достоинств таблицы VFAT заключается в том, что она совместима с обычной таблицей FAT . При этом файлы и каталоги, имеющие длинные имена, видны и старым программам, правда, в несколько необычном виде.

Для программ, которые могут воспринимать только короткие имена файлов "в стандарте 8.3" файловая система Microsoft Windows 95 создает альтернативные имена (алиасы). Эти алиасы состоят из первых 6 символов длинного имени, вслед за которыми следует символ "тильда" (~) и число.

Вот, например, как выглядит содержимое каталога Program Files, если его распечатать при помощи команды DIR:

 Volume in drive C is MS-DOS_6   
 Volume Serial Number is 1E76-A1EB
 Directory of C:\Program Files
.              <DIR>    17.08.95  20:15 .
..             <DIR>    17.08.95  20:15 ..
PLUS!          <DIR>    17.08.95  21:47 Plus!
ACCESS~1       <DIR>    17.08.95  20:15 Accessories
THEMIC~1       <DIR>    17.08.95  20:18 The Microsoft Network
MICROS~1       <DIR>    17.08.95  20:17 Microsoft Exchange
Q        DOC         0  05.09.95  10:30 q.doc
         1 file(s)              0 bytes
         6 dir(s)      33 841 152 bytes free

Обратите внимание, что в правой части листинга выводятся полные имена файлов и каталогов.

Конечно, работать с алиасами неудобно. Тем не менее, на наш взгляд эта проблема в Microsoft Windows 95 решена лучше, чем в операционной системе IBM OS/2 Warp версии 3.0. Последняя вовсе не позволяет программам DOS работать с длинными именами файлов и каталогов, расположенных на дисках HPFS . Такие файлы и каталоги не видны, например, из программы Norton Commander for DOS. Поэтому в IBM OS/2 Warp версии 3.0 программы DOS имеют ограниченный доступ к разделам HPFS.

Другое, весьма существенное новшество, которое появилось в Microsoft Windows 95 (а также в Microsoft Windows NT) - файлы, отображаемые на память .

Программист может открыть файл таким образом, что его содержимое будет автоматически отображаться в виртуальное адресное пространство (в область совместного использования, имеющую размер 1 Гбайт). Далее приложение может выполнять операции чтения и записи в файл, просто работая с оперативной памятью через полученный от системы указатель. Таким образом, вы можете легко "превратить" файл в массив, расположенный в оперативной памяти.

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

Регистрационная база данных

Регистрационная база данных сама по себе не является чем-то новым - она существовала и раньше в Microsoft Windows версии 3.1. Есть она и в Microsoft Windows NT. Как правило, эта база использовалась приложениями, работающими с DDE и OLE . Такие приложения хранят в регистрационной базе данных различную информацию о себе, например, имя сервера.

Вся остальная информация о собственной конфигурации записывалась 16-разрядными приложениями в текстовые файлы с расширением имени ini, которые называются ini-файлами.

Размер системного файла WIN.INI ограничен величиной 64 Кбайт, поэтому приложения вынуждены создавать свои собственные ini-файлы. Большое количество ini-файлов вызывает путаницу (так как нет никакого стандарта на формат записанной там информации), усложняя или делая невозможной процедуру удаления (деинсталляции) ненужных приложений.

В операционных системах Microsoft Windows 95 и Microsoft Windows NT вместо ini-файлов практически всегда используется регистрационная база данных (хотя в каталоге Microsoft Windows 95 присутствуют файлы SYSTEM.INI и WIN.INI).

Регистрационная база данных имеет иерархическую структуру. Вы можете просмотреть или отредактировать ее содержимое при помощи приложения REGEDIT.EXE (рис. 1.2).

Рис. 1.2. Редактирование содержимого регистрационной базы данных

Позже мы научим вас работать с регистрационной базой данных. Пока только скажем, что это несложно, так как в составе Win32 имеются соответствующие функции.

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

Новые органы управления

Для того чтобы придать приложению современный вид, вы должны создать в его главном окне линейку инструментальных средств (орган управления Toolbar ), область для отображения сообщений (орган управления Statusbar ), а также обеспечить удобные средства просмотра списков (если приложение работает со списками). Если приложение выполняет какую-либо длительную операцию, необходимо отображать процент ее выполнения в наглядном виде. Эта задача выполняется обычно органом управления Progressbar . Существуют и другие элементы пользовательского интерфейса, нужные в большинстве приложений.

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

Для упрощения процедуры создания приложений с такими органами управления, как Toolbar и Statusbar, широко используют библиотеки объектных классов Microsoft MFC и Borland OWL , а также автоматические генераторы исходного текста приложений, такие как AppWizard из пакета Microsoft Visual C++.

Тем не менее, для стандартизации внешнего вида и поведения приложений было бы неплохо, если бы операционная система содержала внутри себя все необходимые средства для создания элементов пользовательского интерфейса.

Очень хорошей новостью является то, что приложения Microsoft Windows 95 могут создавать сложные органы управления на базе предопределенных классов окна. Таким образом, теперь процедура создания таких органов управления, как Toolbar , Statusbar и Progressbar не намного сложнее процедуры создания кнопки или списка типа Combobox.

Многие из новых органов управления, создаваемых на базе предопределенных в Microsoft Windows 95 классов, вы можете увидеть в главном окне приложения Explorer (рис. 1.3), заменяющего приложения File Manager и Program Manager из Microsoft Windows версии 3.1.

Рис. 1.3. Новые органы управления в окне приложения Explorer

В верхней и нижней части главного окна вы можете заметить органы управления Toolbar и Statusbar. С ними вы знакомы по таким приложениям, как, например, Microsoft Word for Windows.

Обратите внимание на окно в левой части рис. 1.3. В этом окне отображается иерархическая структура пространства имен Microsoft Windows 95. Для отображения используется орган управления Tree view , созданный на базе предопределенного класса. Пользуясь этим органом управления, вы можете раскрывать или закрывать отдельные папки (каталоги), что очень удобно, если просматривается очень большое дерево. Вообразите себе, как было бы трудно создать такой орган управления с использованием только тех средств, которые есть в составе программного интерфейса Microsoft Windows версии 3.1!

Правая часть главного окна приложения Explorer также очень интересна. Она состоит из двух частей. Вверху находятся заголовки столбцов (Name, Size, Type, Modified), сделанные в виде органа управления Column Header . Заголовки столбцов можно передвигать мышью. Если же сделать по заголовку щелчок, данные в соответствующем столбце будут отсортированы. Можно сделать двойной щелчок по разделителю столбцов в заголовке таблицы. В этом случае ширина соответствующей колонки будет установлена так, чтобы в колононке поместилась самая длинная строка из данного столбца.

Ниже окна органа управления Column Header находится список, который создан на базе органа управления Listview. Этот список содержит не только текстовые строки, но и графические изображения (пиктограммы).

Вы сможете легко создать в своем приложении органы управления Column Header и Listview на базе преопределенных классов окна. Реализация этой задачи старыми средствами потребовала бы значительных усилий. А ведь таблицы и списки - неотъемлемая часть приложений, ориентированных на обработку электронных таблиц и баз данных.

Другой часто встречающийся элемент пользовательского интерфейса - движковый регулятор (ползунок). Его можно использовать как для отображения текущего состояния какого-либо процесса, так и для регулирования параметров (например, громкости). На рис. 1.4 показано использование движкового регулятора в приложении Media Player.

Рис. 1.4. Использование движкового регулятора в приложении Media Player

Как и следовало ожидать, в операционной системе Microsoft Windows 95 предусмотрен класс окна для создания такого регулятора.

Большое впечатление производит на многих орган управления Animation , показанный в действии (насколько это возможно в книге) на рис. 1.5.

Рис. 1.5. "Летающие" листки бумаги, созданные с использованием органа управления Animation

Как работает такой орган управления?

Очень просто. В прямоугольном окне проигрывается avi-файл, в котором записан небольшой видеофрагмент. О том как создавать такие файлы без использования дорогостоящей видеоаппаратуры (например, на основе заранее подготовленного набора картинок - мультфильма) вы можете узнать из 15 тома "Библиотеки системного программиста", который называется "Мультимедиа для Windows".

Заметим, что орган управления Animation создается очень легко на базе предопределенного класса окна. Таким же образом вы можете создать и орган управления Progressbar, расположенный в нижней части диалоговой панели, показанной на рис. 1.5.

Еще один орган управления, встроенный в систему, называется Property Sheet . Он показан на рис. 1.6.

Рис. 1.6. Использование органа управления Property Sheet для настройки режима работы программы DOS

Для чего нужен такой орган управления, объяснять не нужно. Современные приложения достаточно сложны и имеют многочисленные параметры, настройка которых через систему меню или диалогов бесконечной вложенности не вызывает у пользователей никакого энтузиазма. Достаточно вспомнить, как эта операция выполнялась в ранних системах разработки Borland C++.

Орган управления Property Sheet создается на базе предопределенного класса и набора диалоговых панелей. Он очень нагляден и удобен в работе.

В Microsoft Windows 95 есть и "волшебный" орган управления Wizard. Что это такое?

Претворяя в жизнь идею о приближении компьютера к человеку, многие современные системы и приложения выполняют достаточно сложные процедуры в полуавтоматическом режиме, задавая вам лишь самые необходимые вопросы. Такие системы называют "волшебниками" (wizard), способными сделать почти все самостоятельно без вмешательства человека.

В качестве примера можно привести средства автоматического создания сложных документов и таблиц в текстовом процессоре Microsoft Word for Windows, систему автоматической генерации исходного текста приложений AppWizard из пакета Microsoft Visual C++, а также, конечно, многочисленные системы, встроенные в Microsoft Windows 95.

Все подобные автоматические системы общаются с вами с помощью набора диалоговых панелей. Пример такой панели показан на рис. 1.7.

Рис. 1.7. Одна из диалоговых панелей системы автоматического создания теневых пиктограмм

В каждой из таких панелей есть кнопки "Back", "Next" и "Cancel", предназначенные, соответственно, для перехода к следующей или предыдущей панели, а также для отмены выполняемого в автоматическом режиме процесса. Кроме этих кнопок на панели имеются другие органы управления, с помощью которых и вы сможете принять посильное участие в происходящем.

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

А что вы скажите о новом органе управления, предназначенном для отображения и редактирования текста с использованием шрифтового оформления и различных способов выравнивания отдельных параграфов (рис. 1.8)?

Рис. 1.8. Орган управления Rich Edit Control , на базе которого создано приложение WordPad

Вы можете создать такой орган управления (разумеется, без изображенных на рис. 1.8 кнопок, линеек и т. п.) простым вызовом функции CreateWindow. Далее, вы сможете загружать в этот редактор и выгружать из него текстовые файлы в формате RTF, который понимают многие текстовые процессоры. Вы даже можете разместить в окне редактирования OLE -объекты, например, изображения, созданные приложением Paint.

Предусмотрен специальный орган управления Hot Key, с помощью которого пользователь может легко определить комбинация клавиш активизации приложения. Внешне он похож на однострочный редактор текста. Подробности вы узнаете из седьмой главы нашей книги.

И под конец мы покажем вам еще один новый встроенный в систему орган управления. Возможно, он не самый впечатляющий, но тем не менее удобный в работе. Этот орган управления называется Up-Down и предназначен для изменения значений чисел или перебора текстовых строк (рис. 1.9).

Рис. 1.9. Использование органа управления Up-down вместе с однострочным редкатором текста EDIT для установки количества копий документа при печати

Новый вид стандартных диалоговых панелей

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

Эти изменения вызваны, с одной стороны, необходимостью отображения длинных имен файлов (до 260 символов), с другой - необходимостью отображения пространства имен оболочки Microsoft Windows 95.

Что касается имен файлов, тут все ясно. Длинные имена не поместятся в узких рамках старых диалоговых панелей. Поэтому соответствующие органы управления занимают в новых панелях почти всю ширину (рис. 1.10).

Рис. 1.10. Новый вид стандартной диалоговой панели "Open"

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

Пространство имен имеет иерархическую структуру и в этом оно похоже на иерархическую систему каталогов и файлов. Отличие, однако, заключается в том, что в пространство имен включаются не только файлы и каталоги, но и другие объекты (см. рис. 1.3).

Изменился также внешний вид диалоговой панели, предназначенной для печати документов (рис. 1.11).

Рис. 1.11. Новая диалоговая панель, предназначенная для печати документов

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

Объектно-ориентированная оболочка

Одно из новшеств операционной системы Microsoft Windows 95 - объектно-ориентированная оболочка (shell). В большинстве случаев эта оболочка избавляет пользователя от необходимости работать с древовидной файловой системой. Вместо этого она предоставляет ему модель рабочего стола с лежащими на нем папками и другими объектами.

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

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

Контекстное меню

Важной особенностью объектно-ориентированной оболочки Microsoft Windows 95 является возможность работы с так называемыми контекстными меню. Пример такого меню показан на рис. 1.12.

Рис. 1.12. Контекстное меню для принтера

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

Блокнот свойств объекта

Обратите внимание на строку "Properties" в контекстном меню принтера (рис. 1.12). Если выбрать эту строку, на экране появится блокнот свойств объекта , сделанный на базе органа управления Property Sheet (рис. 1.13).

Рис. 1.13. Блокнот свойств объекта (принтера)

С помощью этого блокнота пользователь может изменить различные параметры объекта. Разумеется, внешний вид блокнота, как и контекстного меню, определяется объектом.

Программные интерфейс Microsoft Windows 95 позволяет вам относительно легко определять для своих объектов контекстное меню и блокнот свойств. Это легче сделать с использованием библиотеки классов MFC , которая входит в состав Microsoft Visual C++.

Теневые пиктограммы

Еще одно из нововведений - теневые пиктограммы , предназначенные для ускоренного запуска приложений или работы с другими объектами, такими как папки, документы, принтеры, локальные и сетевые дисковые устройства и т. д. Вы можете отличить эти пиктограммы по названию, которое имеет вид "Shortcut to ...".

Теневая пиктограмма является визуальным представлением объекта данных, который служит для доступа к другому объекту данных. Последний может находится в любом месте пространства имен оболочки (например, в любой папке).

Ваше приложение может работать с теневыми пиктограммами через интерфейс COM . Соответствующие программы составляются, как правило, на базе библиотеки классов MFC.

Просмотр содержимого файлов и документов

Одно из достоинств популярной программы Norton Commander заключается в возможности форматного просмотра файлов: текстовых, графических, а также файлов баз данных. Просмотр выполняется очень просто - достаточно выделить нужный файл и нажать клавишу <F3>. В зависимости от формата файла автоматически вызывается соответствующая программа просмотра.

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

Библиотеки динамической загрузки

По сравнению с Microsoft Windows версии 3.1 в Microsoft Windows 95 и Microsoft Windows NT структура и методы работы с библиотеками динамической загрузки (DLL-библиотеками ) сильно изменились. Например, функция инициализации библиотеки вызывается не один раз при первой загрузке библиотеки в память, а каждый раз, когда к библиотеке подключается новый процесс или новая задача.

[Назад] [Содеожание] [Дальше]