Архитектура Microsoft Windows для разработчиков

         

Драйверы устройств в Windows


Драйвер устройства — это программный компонент, получающий команды от операционной системы и преобразующий их в команды конкретного устройства (рис. 1.9). Зачастую драйверы разрабатываются производителями аппаратного обеспечения, и компания Microsoft их напрямую не поддерживает.

Рис. 1.9 Архитектура драйверов устройств

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

дисплеи;

звуковые карты;

устройства связи;

принтеры;

сетевые адаптеры.

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



Драйверы защищенного и реального режима


Драйверы реального режима созданы для работы в реальном режиме операционной системы MS-DOS. Они не так безопасны и устойчивы, как драйверы защищенного режима, которые используют преимущества архитектуры защищенного режима процессоров 80386 и последующих моделей. Драйвер защищенного режима или драйвер виртуального устройства (Virtual Device Driver, VxD) обеспечивает быстрый разделяемый доступ к устройству. Кроме того, операционные системы семейства Windows выполняют 32-разрядный код защищенного режима более эффективно, чем 16-разрядный код реального режима.

Windows 95 поддерживает оба типа драйверов, a Windows NT — только драйверы защищенного режима. Компания Microsoft настоятельно рекомендует применять 32-разрядные драйверы защищенного режима везде, где возможно.

Интерфейс прикладного программирования Win32

Интерфейс прикладного программирования (Application Programming Interface, API) Win32 обеспечивает приложениям доступ ко всему спектру функций операционных систем семейства Windows. Функции, сообщения и структуры Win32 формируют последовательный и единообразный API для Windows 95 и Windows NT. Средства API Win32 позволяют разрабатывать приложения, успешно работающие на всех платформах и в то же время при надобности использующие уникальные особенности любой из них.

Многие функции API интегрированы в состав таких программ, как Visual Basic. Например, функцию API Win32 MessageBox можно вызвать непосредственно или через функцию Visual Basic MsgBox. Средствами Visual Basic обычно пользоваться легче, однако во многих случаях разработчики найдут непосредственное применение и самим функциям API Win32.



В состав Windows 95 OSR2




В состав Windows 95 OSR2 входит файловая система FAT32, представляющая собой расширение FAT. Если Вы запустите утилиту FDISK на компьютере под управлением Windows 95 OSR2 с жестким диском больше 512 Мб, Вам будет предложено включить режим поддержки больших дисков. После Вашего согласия все новые разделы размером более 512 Мб будут помечаться как разделы FAT32.

FAT32 более эффективно использует дисковое пространство. В FAT 16 таблица размещения файлов разделена на блоки по 16 кб. Если блок используется не полностью, оставшийся объем пропадает. В FAT32 объем блоков — 4 кб, поэтому при частичном заполнении блока меньше дискового пространства остается пустым (рис. 1.1). Кроме того, файловая система FAT16 поддерживает диски размером лишь до 2 Гб, в то время как FAT32 — до 2 Тб.



Рис. 1.1 Методы хранения файлов в системах FAT16 и FAT32

Большинство Win32-пpилoжeний не надо модифицировать для работы с FAT32. Исключение представляют лишь приложения, использующие низкоуровневые структуры диска или как-либо иначе полагающиеся на формат данных на диске.

Windows NT

Windows NT Workstation и Windows NT Server — 32-разрядные операционные системы. Они предназначены для пользователей, заинтересованных в мощной многозадачной операционной среде.

Их применяют в таких отраслях промышленности и областях бизнеса, как:

автоматизация проектирования в машиностроении и электронной промышленности;

архитектура;

дизайн и строительство;

управление производственными процессами;

разработка программного обеспечения;

бухгалтерское дело;

финансовый анализ;

управление инвестициями;

системы реального времени.

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

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


Файловая система NTFS


Файловая система NTFS предпочтительна для компьютеров под управлением Windows NT. Однако иногда на том же компьютере нужно использовать другую файловую систему — например, для работы с другой операционной системой (в этом случае хотя бы один раздел диска должен быть отформатирован соответствующей файловой системой). NTFS поддерживается только на компьютерах под управлением Windows NT.

Преимущество NTFS в том, что она может работать с разделами большого размера. Предельный размер файла на разделе NTFS — 16 экзабайт. Это очень много — взгляните сами:

1024 Мб = 1Гб (гигабайт)

1024 Гб = 1Т6 (терабайт)

1024 Тб = 1 Пб (петабайт)

1024 Пб = 1Э6 (экзабайт)

Один экзабайт — это чуть больше миллиарда гигабайт. Например, если каждый мужчина, каждая женщина и каждый ребенок на Земле (а это около пяти миллиардов человек) напишут по 2 000 страниц текста и поместят их в один файл Windows NT, то файл будет заполнен лишь на 1/16 (чуть более 6%). Минимальный размер раздела NTFS — 5 Мб.



Использование NTFS


При применении файловой системы NTFS необходимо иметь в виду следующее:

в NTFS встроены средства восстановления после сбоя, поэтому пользователям не нужно запускать утилиту восстановления диска на разделе NTFS;

на разделе NTFS нельзя восстановить удаленный файл;

при использовании NTFS значительно уменьшаются потери из-за фрагментации файлов;

NTFS поддерживает модель защиты Windows NT, поэтому все файлы и каталоги на разделе NTFS можно защищать правами доступа и подвергать аудиту;

из-за падения производительности не рекомендуется применять NTFS на томах размером менее 400 Мб.



Классы приоритетов


Класс приоритета процесса и уровень приоритета потока определяют базовый приоритет потока. Уровни приоритетов Windows разделены на два класса:

реального времени (приоритеты от 16 до 31) — используется для выполнения основных функций операционной системы и обычно не применяется для приложений;

переменного приоритета (приоритет от 0 до 15) — определяет процессорный приоритет приложений; приоритет 0 возможен только для бесстраничного системного потока.



Механизм сообщений Windows


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

Рис.1.7 Очереди сообщении



Многозадачность


Прежде чем продолжить занятие, запустите видеоролик Chap01a.exe с компакт-диска. Этот видеоролик познакомит Вас с многозадачностью.

Многозадачность — способность операционной системы выполнять более одной программы (задачи) одновременно. Противоположный подход — однозаачность, когда один процесс должен быть завершен прежде, чем сможет начаться другой. MS-DOS — пример однозадачной среды, a Windows 95 и Windows NT — многозадачные среды.

Конечно же, и в многозадачной системе программы не выполняются одновременно — процессор переключается между ними. Благодаря этому Вы можете выполнить запрос к базе данных и продолжить работу с редактором текстов до тех пор, пока не появятся результаты запроса. Многозадачность, кроме того, позволяет компьютеру эффективно использовать время, которое иначе было бы потеряно в ожидании команды пользователя или ответа устройств ввода/вывода.

Для понимания многозадачности необходимо сначала познакомиться с процессами и потоками.



Модификация реестра Windows


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

Для сохранения параметров приложения в реестре применяются операторы Visual Basic SaveSetting и GetSetting и соответствующие функции API Windows. Они имеют следующий синтаксис:

SaveSetting (приложение, раздел, ключ, параметр)

GetSetting (приложение, раздел, ключ, [по умолчанию])

Пример В приведенном ниже коде с помощью оператора SaveSetting создаются элементы реестра для приложения, заданного в аргументе приложение, а затем применяется оператор GetSetting для получения значений параметров. Поскольку задано значение по умолчанию, возврат значения гарантирован.

Поместить настройки в реестр

SaveSetting "МуАрр","Startup", "Top", 75

SaveSetting "MyApp","Startup", "Left", 50

использовать настройки из реестра для отображения текущей формы

Me.Left = GetSetting(appname := "МуАрр",

section := "Startup", key := "Left", default := "0")

Me.Top = GetSetting(appname := "МуАрр",

section := "Startup", key := "Top", default := "0")



Обмен сообщениями в 16-разрядных версиях Windows


В Windows 3.1 очередь сообщений операционной системы — единая. Она обслуживает все 16-разрядные Windows-приложения, которые проверяют ее и извлекают адресованные им сообщения. Такое решение не лишено недостатков — например, если у какого-то приложения возникнут проблемы, оно может не позволить другим приложениям проверить очередь сообщений. В этом случае последние прекратят работу, пока не получат управление и не смогут проверить наличие адресованных им сообщений.



В Windows 95 проблемы единой


В Windows 95 проблемы единой очереди сообщений разрешены: у каждого выполняющегося Win32-пpилoжeния — своя очередь. Каждый поток в Win32-пpилoжe-нии имеет собственную очередь сообщений и, значит, никак не влияет на поведение других работающих приложений. Если Winl6- или Win32-пpилoжeниe потерпит крах, остальные Win32-пpилoжeния будут действовать на основе вытесняющей многозадачности и смогут принимать поступающие сообщения из своих очередей.

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


Офисные задачи


Пользователям в офисе, как правило, требуется создавать документы, запросы к базам данных или анализировать электронные таблицы. Для решения этих задач применяются высокопроизводительные приложения (например, Microsoft Office), а также специализированные пакеты. Многие компании стремятся получить максимальную отдачу от своих инвестиций в компьютерную инфраструктуру, состоящую из персональных компьютеров, периферийных устройств и приложений. Для них наилучший выбор — Windows 95.



Операционные системы Windows и их архитектура


Глава 1. Операционные системы Windows и их архитектура

Прежде всего

Для изучения занятии этой главы необходимы:

Windows 95 и System Manager;

звуковая карта и колонки или наушники для прослушивания мультимедиа-файлов;

следующие мультимедиа-файлы с компакт-диска:

Chap01a.exe;

Chap01b.exe.

Занятие 1. Операционные системы Windows

Занятие 2. Архитектура Windows

Закрепление материала



Базовый код API Win32 содержится


Базовый код API Win32 содержится в трех библиотеках динамической загрузки (Dynamic Link Library, DLL): USER32, GDI32 и KERNEL32.



Рис.1.10 Библиотеки API Win32


Планирование


С помощью планирования операционная система определяет, какой поток использует процессор в данный момент времени. Windows реализует многозадачность, присваивая каждому потоку приоритет, что позволяет ему использовать ресурсы системы. Планирование основано на заранее заданной единице времени, называемой квантом. Фактическая продолжительность кванта времени зависит от конфигурации системы. Уровни приоритета находятся в диапазоне от 0 (наименьший приоритет) до 31 (наибольший приоритет). Поток с наибольшим приоритетом получает процессор в свое распоряжение (рис. 1.5).

Рис. 1.5 Процесс планирования

Приоритет каждого потока определяется по:

классу приоритета процесса, которому принадлежит поток;

уровню приоритета потока внутри класса приоритета его процесса.



Поддержка аппаратуры Plug-and-Play


Стандарт Plug-and-Play (PnP) позволяет изменять конфигурацию персонального компьютера без вмешательства пользователя. Автоматическая установка устройства — простым подсоединением его к компьютеру — мгновенно делает это устройство доступным. Plug-and-Play поддерживается не всеми устройствами и системами, например его не поддерживает Windows NT 4.0, однако это будет исправлено в следующей версии Windows NT Workstation. Прежде чем устанавливать устройство, убедитесь, что оно поддерживает стандарт Plug and Play.



Постраничная подкачка


Физическое и виртуальное (логическое) адресное пространство каждого процесса разделено на страницы — «кванты» памяти, размер которых зависит от компьютера. Например, для компьютеров х86 размер страницы составляет 4 кб. Ядро может перемещать страницы памяти в страничный файл на диске (Pagefile.sys) и обратно: таким образом, управление памятью становится более гибким. Когда страница перемещается в физическую память, ядро обновляет таблицы страниц соответствующих процессов. Если ядру требуется место в физической памяти, оно вытесняет самые старые страницы физической памяти в страничный файл. Манипуляции ядра с физической памятью совершенно незаметны (прозрачны) для приложений, которые работают только со своими виртуальными адресными пространствами.

> Просмотр эффектов подкачки при помощи System Monitor

В меню Start выберите пункты Programs, Microsoft Visual Basic 5.0, Visual Basic 5.0.

Щелкните значок Existing и выберите проект Lab1.vbp в папке WA\Labs\Ch01. Щелкните кнопку Open.

В ответ на запрос Add this project to Source Safe щелкните No.

Откройте окно кода для события cmdUseRAM_Click и изучите его код.

Эта процедура заполняет большой массив символами пробела, используя значительный объем памяти.

Откройте окно кода для события cmdFreeRAM_Click и изучите его код.

Оператор Erase используется для повторной инициализации массива HugeArray, который объявлен в разделе General Declaration.

Запустите приложение.

Автоматически запустится System Monitor.

В меню Options окна System Monitor выберите команду Chart.

Задайте значение Update Interval, соответствующее быстрейшему обновлению, и щелкните ОК.

В меню Edit выберите команду Add Item.

В списке Category выберите пункт Memory Manager, а в списке Item — пункт Allocated Memory. Щелкните ОК.

Повторите пункты 9—10 и выберите из списка Item пункт Swapfile in use.

В меню View окна System Monitor щелкните команду Always on Top.

В меню View выберите команду Bar Charts.

Переместите окно System Monitor так, чтобы одновременно видеть приложе ние Visual Basic.

В приложении Visual Basic щелкните кнопку Use RAM.

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

При щелчке кнопки Free RAM ресурсы будут освобождены.

Закройте приложение Visual Basic и System Monitor.

Выйдите из Visual Basic.



Процессы и потоки


Приложение, разработанное для Windows, состоит из одного или более процессов (рис. 1.3). Процесс — это, попросту говоря, выполняемая программа. Ему принадлежат адресное пространство и выделенные ресурсы, а также один или более потоков, выполняющихся в его контексте.

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

Рис. 1.3 Приоритеты потоков

Любой процесс содержит хотя бы один поток. Каждый процесс 16-разрядного Windows-приложения или программы MS-DOS имеет только один поток, тогда как процессы 32-разрядных Windows-приложений могут включать их несколько.

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

> Изучение работы потоков

Завершите все работающие программы.

В меню Start выберите пункты Programs, Accessories, System Tools, System Monitor.

Будет запущен System Monitor.

В меню Edit щелкните команду Remove Item.

Выделите все ранее добавленные элементы и щелкните ОК.

График очистится.

В меню View щелкните Numeric Charts.

В меню Edit щелкните Add Item.

Из списка Category выберите пункт Kernel, из списка Item выберите пункт Threads, а затем щелкните кнопку ОК.

Сколько потоков активно?

ответ

В меню Start выберите пункты Programs, Accessories, WordPad.

Переключитесь на System Monitor.

Сколько потоков активно?

ответ

На панели инструментов WordPad щелкните кнопку Open.

Переключитесь в окно System Monitor и несколько секунд понаблюдайте за окном KerneL:Threads.

Сколько потоков активно?

ответ

Закройте диалоговое окно Open приложения WordPad и завершите работу с ним.


Переключитесь в окно System Monitor.

Число потоков должно стать равным первоначальному значению.

В меню Start выберите Programs, MS-DOS Prompt.

Переключитесь в окно System Monitor.

Сколько потоков активно?

ответ

Почему окно MS-DOS породило два потока?

> Изучение работы многопоточного приложения

Из папки WA\Practice\Ch01 запустите демонстрационную многопоточную про грамму Winbezmt.exe.

Переключитесь в окно System Monitor.

Сколько потоков активно?

ответ

Переключитесь на многопоточную демонстрационную программу.

В меню Bezier выберите Add Thread (или нажмите клавиши CTRL+T).

Переключитесь в окно System Monitor.

Сколько потоков активно?

ответ

Добавьте еще два потока. Сколько теперь активных потоков?

Завершите работу со всеми программами, включая System Monitor.




Редактор реестра


В Windows 95 и Windows NT реестр можно просматривать и редактировать средствами редактора реестра REGEDIT.EXE, расположенного в папке Windows (рис. 1.11).

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

Рис. 1.11 Редактор реестра Windows



Реестр Windows


Реестр — это унифицированная база данных, содержащая информацию об аппаратной и программной конфигурации локального компьютера. Здесь же хранятся данные системы и приложений. Реестр выполняет ту же роль, что и INI-файлы в Windows 3.1. Windows 95 по-прежнему позволяет использовать INI-файлы, однако в первую очередь они обеспечивают обратную совместимость. Преимущества реестра — возможность присоединить к одному ключу множество элементов различных типов. Кроме того, сетевые средства обеспечивают доступ к реестру по сети для удаленного администрирования и диагностики.



Режим ядра


Режим ядра (кольцо 0) — это наиболее привилегированный режим. Работая в нем, код имеет прямой доступ ко всей аппаратуре и всему адресному пространству.

Программное обеспечение, выполняющееся в режиме ядра:

имеет прямой доступ к аппаратному обеспечению;

имеет доступ ко всей памяти компьютера;

не может быть вытеснено в страничный файл на жестком диске;

выполняется с большим приоритетом, чем процессы режима пользователя.

В частности, в кольце 0 выполняется код ядра операционных систем Windows 95 и Windows NT. Поскольку компоненты режима ядра защищены архитектурно, процессор предотвращает их изменение другой программой. Хотя кольцо 0 предоставляет максимальную защиту, не следует запускать в кольце 0 что попало — ведь компоненты этого режима имеют доступ ко всей системе. Если программный компонент в режиме ядра потерпит крах, это может разрушить всю систему.

Поскольку одна из задач Windows 95 — максимальная обратная совместимость, многие старые 16-разрядные драйверы и приложения используют прямой доступ к аппаратуре. Windows NT не предоставляет таким приложениям требуемый уровень доступа, поэтому зачастую они не могут работать под управлением Windows NT Workstation и Windows NT Server.



Режим пользователя


Режим пользователя предоставляет меньше привилегий, нежели режим ядра, — в частности, он не обеспечивает прямой доступ к аппаратуре. Код, выполняющийся в кольце 3, ограничен выделенным ему адресным пространством, а для вызова системных сервисов использует интерфейс прикладного программирования (API) Windows.

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

Не имеют прямого доступа к аппаратуре.

Это защищает систему от неисправных приложений или неавторизованного доступа.

Ограничены выделенным им адресным пространством.

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

Могут быть вытеснены из физической памяти в виртуальную память на жестком диске.

Механизм виртуальной памяти позволяет использовать пространство на жестком диске как дополнительное ОЗУ. О виртуальной памяти подробно рассказано чуть позже в этой главе.

Выполняются с меньшим приоритетом, чем компоненты режима ядра.

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



В настоящее время обычно используются


В настоящее время обычно используются три операционные системы семейства Windows. К 16-разрядным версиям относятся Windows 3.1 и Windows 3.11 (Windows for Workgroups). Windows 95 — 32-разрядная операционная система для настольных и портативных компьютеров. Windows NT Workstation и Windows NT Server — это 32-разрядные операционные системы для пользователей, заинтересованных в мощной многозадачной среде. Выбор конкретной Windows-платформы должен основываться на анализе спектра решаемых задач. Windows 95 и Windows NT, дополняя друг друга, удовлетворят запросы большинства пользователей.

Изучение операционной системы Windows следует


Изучение операционной системы Windows следует начинать с архитектуры системы. Операционная система Windows для поддержки своей эффективности и целостности использует два режима: пользователя и ядра.
Windows 95 и Windows NT — многозадачные операционные системы. Однако в действительности одновременно не выполняется больше одного процесса — процессор переключается между ними. В Windows 95 и NT каждый процесс имеет собственное адресное пространство, что позволяет адресовать до 4 Гб памяти.
Интерфейс прикладного программирования (API) Win32 обеспечивает приложениям доступ ко всему спектру функций операционных систем семейства Windows. Функции, сообщения и структуры Win32 образуют последовательный и единообразный API для Windows 95 и Windows NT. Средства API Win32 позволяют разрабатывать приложения, которые успешно работают на всех платформах, в то же время сохраняя возможность использовать уникальные особенности любой из них.
Реестр — это унифицированная база данных, где хранится информация об аппаратной и программной конфигурации локального компьютера. Преимущества реестра — возможность присоединить к одному ключу множество элементов различных типов. Кроме того, сетевые средства обеспечивают доступ к реестру по сети для удаленного администрирования и диагностики.

Шлюзование


Эта операция выполняется, когда операционная система преобразует вызов 16-разрядной функции в вызов 32-разрядной. Процессы Windows 95 и Windows NT не могут содержать одновременно и 16-разрядный, и 32-разрядный код. Шлюз позволяет коду с одной стороны границы вызывать код с другой ее стороны. Каждая платформа использует один или несколько механизмов шлюзования:

механизм базовых шлюзов позволяет 16-разрядному Windows-приложению в системе под управлением Windows 95 и Windows NT загрузить и вызвать 32-разрядную библиотеку;

с помощью механизма плоских шлюзов, реализованного только в Windows NT, Win32-пpилoжeниe загружает и вызывает 16-разрядную библиотеку и наоборот.

Использование API Win32

В этом упражнении Вы создадите окно сообщения, используя API Win32 и встроенную функцию Visual Basic MsgBox. > Создание окна сообщения средствами API Win32

Запустите Microsoft Visual Basic и создайте новый проект стандартного исполняемого модуля.

В меню Project выберите команду Add Module.

В разделе General Declarations наберите следующий код:

Declare Function MessageBox Lib "user32" Alias "MessageBoxA"(ByVal hwnd As Long, ByVal IpText As String, ByVal IpCaption As String, ByVal wType As Long) As Long

Добавьте новую командную кнопку в форму Form1.

В обработчике события Click кнопки Command1 наберите следующий код:

MessageBox Me.hwnd, "API MessageBox function", "API", 0

Запустите приложение.

Щелкните кнопку Commandl.

Функция API Win32 MessageBox будет вызвана непосредственно из кода Visual Basic.

> Создание окна сообщения средствами Visual Basic

Запустите Visual Basic и создайте новый проект стандартного исполняемого модуля.

Добавьте командную кнопку в форму Forml.

В обработчике события Click кнопки Commandl наберите следующий код:

MsgBox "Visual Basic MsgBox function"

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

Щелкните кнопку Commandl.

Обратите внимание на появившееся окно сообщения — на сей раз Visual Basic самостоятельно вызвал функцию MessageBox из библиотеки User32.dll.



Симметричная многопроцессорная обработка


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



Слой абстрагирования от аппаратуры


Windows NT предназначена для работы на различных процессорах и аппаратных платформах. Эта ОС отделяет код операционной системы от аппаратуры компьютера, используя изолирующий уровень — слой абстрагирования от аппаратуры (Hardware Abstraction Layer, HAL). Он позволяет Windows NT, не теряя производительности на любой платформе, оставаться независимой от аппаратуры.



Структура реестра


Реестр — это древовидная иерархическая база данных. Он хранится в двух файлах, состав которых определяется конфигурацией системы. Обычно их два: один содержит настройки, специфичные для пользователя (файл USER.DAT), а другой — настройки, специфичные для компьютера (обычно SYSTEM.DAT). Каждый узел иерархического дерева называется ключом. Реестр напоминает файловую систему: любой ключ может содержать вложенные ключи (аналог вложенных каталогов) и данные (аналог файлов). В ключе хранится произвольное число значений данных любого типа. Каждое значение называется элементом реестра. Компоненты ключей реестра перечислены ниже.

Компонент ключа Обязательный Описание
Имя Да Строка, используемая для доступа к ключу. Должна быть уникальной среди других ключей того же уровня иерархии
Класс Нет Имя класса объекта. Предназначен для использования в коде методов класса, экземпляры которого хранятся в реестре, Приложениями обычно не используется
Дескриптор защиты Нет Ключи содержат стандартные дескрипторы защиты Windows NT, допускают управление доступом и могут быть подвергнуты аудиту
Время последней записи Нет Время, когда ключ был последний раз модифицирован. Любое изменение элемента считается изменением его родительского ключа
Элемент(ы) Нет Информация, хранящаяся в ключе: имя для идентификации значения, тип для определения типа данных и сами данные соответствующей длины и формата

HKEY CLASSES ROOT

Ключ HKEY_CLASSES_ROOT содержит те же данные, что и файл REG.DAT в Windows 3.1,— сведения о встраивании и связывании объектов (Object Linking and Embedding, OLE) и ассоциации файлов с приложениями, которые позволяют Windows запускать приложение, соответствующее выбранному файлу.

HKEY_LOCAL_MACHINE

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


HKEY_CURRENT.CONFIG

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

HKEY_USERS

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

HKEY_CURRENT_USER

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

HKEY_DYN_DATA

Этот ключ содержит динамическую информацию о состоянии различных устройств, причем она создается заново при каждом старте системы. Ключ HKEY_DYN_DATA используется как часть системы измерения производительности и для конфигурации устройств Plug-and-Play. Информация, содержащаяся здесь, меняется при добавлении новых устройств и удалении существующих. Для каждого устройства это данные о соответствующем аппаратном ключе, известных проблемах и текущем состоянии устройства. Ключ HKEY_DYN_DATA также содержит сведения о состоянии системы, формируемые с помощью утилиты System Monitor. Это ключ не входит в состав файлов реестра и всегда создается динамически.


Удаленные пользователи


Во многих компаниях есть служащие, которые большую часть рабочего времени проводят вне офиса — у клиентов, в отеле или в пути, и им, естественно, требуется персональный компьютер. Мобильные пользователи прежде всего заинтересованы в совместимости приложений и устройств, а также в не слишком требовательной к ресурсам (память, аккумуляторные батареи, дисковое пространство и т.п.) операционной системе. Для таких пользователей Windows 95 — опять-таки наилучший выбор.



Уровни приоритетов


Процессам могут быть присвоены следующие базовые уровни приоритетов:

низкий — запускает приложения с уровнем приоритета 4;

обычный — запускает приложения с уровнем приоритета 7;

высокий — запускает приложения с уровнем приоритета 13;

реального времени — запускает приложения с уровнем приоритета 24.

Примечание Не запускайте приложения с классом приоритета реального времени — это может привести к нестабильности в работе операционной системы.

Управление памятью

В Windows 95 и NT каждый процесс имеет собственное адресное пространство, что позволяет адресовать до 4 Гб памяти. Отметим, что Windows выделяет процессу 4 Гб адресов памяти, а не физического ОЗУ. Физическая память ограничена имеющимися системными ресурсами (ОЗУ и дисковое пространство). Windows выделяет каждому приложению 2 Гб адресов памяти, а другие 2 Гб резервируются для нужд ядра.

Большинство компьютеров не располагают 4 Гб ОЗУ, и по этой причине Windows использует механизм виртуальной памяти. Таким образом, Windows может перенести часть содержимого физической памяти на жесткий диск, когда объем доступного ОЗУ будет исчерпан. Этот процесс известен как подкачка (рис. 1.6).

Рис. 1.6 Выделение виртуальной памяти приложениям

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



и контролируют окна на экране,


User32.dll и User.exe создают и контролируют окна на экране, выполняя все запросы по созданию, перемещению, изменению размеров и уничтожению окон. User.exe, кроме того, обрабатывает запросы, относящиеся к значкам и другим элементам интерфейса пользователя, а также переадресует события, порожденные различными устройствами ввода, соответствующим приложениям.

GD132

Gdi32.dll и Gdi.exe контролируют интерфейс графических устройств (Graphics Device Interface, GDI). GDI выполняет графические операции при создании изображения на системном дисплее и других устройствах, включая:

вывод на экран;

вывод на принтер;

включение/отключение пикселов.

KERNEL32

Kernel32.dll выполняет базовые функции операционной системы, в том числе:

управление памятью;

файловый ввод/вывод;

загрузку программы;

выполнение программы.

Примечание При объявлении функций API в Visual Basic 32-разрядные функции чувствительны к регистру символов, а эквивалентные 16-разрядные функции — нет. Это необходимо иметь в виду при преобразовании 16-разрядных приложений в 32-разрядные.

32- и 16-разрядные компоненты

В Windows 95 включены 16-разрядные версии User, GDI и Kernel. Комбинация 16-разрядного и 32-разрядного кода позволяет сохранить совместимость с существующими приложениями и драйверами и одновременно увеличить производительность системы по сравнению с Windows 3.1. Windows 95 использует 32-разрядный код везде, где это увеличивает производительность не в ущерб совместимости. Для включения в Windows 95 16-разрядных компонентов есть три основные причины:

код для 16-разрядных систем обеспечивает обратную совместимость с приложениями и драйверами, разработанными для Windows 3.1;

в некоторых случаях 16-разрядный код выполняется быстрее, чем аналогичный 32-разрядный;

32-разрядный код требует больше памяти, чем эквивалентный 16-разрядный.

Одна из основных задач Windows 95 — эффективная работа на компьютерах с ограниченным объемом ОЗУ, и применение 16-разрядного кода способствует решению этой задачи.

Подсистемы ввода/вывода и драйверы устройств, включая сетевые и файловые системы, являются полностью 32-разрядными, как и все компоненты управления памятью и планирования. Часто возникающая при этом проблема вызова 32-разрядной функции из 16-разрядного приложения (или наоборот) решается при помощи шлюзования.


Виртуальная память


Процессоры Intel, начиная с модели 80386, позволяют отобразить область физической памяти на любую область 32-разрядных адресов. Виртуальная память Windows использует этот механизм для того, чтобы любая программа вела себя так, будто она имеет собственное физическое ОЗУ.

Windows для доступа к памяти применяет 32-разрядную линейную адресацию: приложения обращаются к памяти с помощью 32-разрядных адресов. Каждая программа имеет собственное виртуальное адресное пространство, которое диспетчер виртуальной памяти преобразует в адреса физического ОЗУ или в файле на жестком диске.



Виртуальные машины


Windows NT выполняет приложения в рамках виртуальных машин (Virtual Machine, VM). Фактически VM — это создаваемая операционной системой среда для выполнения приложения, которая полностью эмулирует все ресурсы компьютера. С точки зрения приложения, виртуальная машина — это полноценный компьютер, предоставляющий ему все имеющиеся ресурсы.

Рис. 1.8 Виртуальные машины

Каждое 16-разрядное Windows- и MS-DOS-приложение под управлением Windows NT выполняется в отдельном адресном пространстве, называемом виртуальной DOS-машиной (Virtual DOS Machine, VDM). При этом обеспечивается защита программы, a Windows NT может реализовать вытесняющую многозадачность для всех сервисов операционной системы и приложений.

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

> Проверка функций 16- и 32-разрядных Windows-программ

В папке WA\Practice\Ch01 дважды щелкните файл Spind16. Будет запущена программа SPIND16.

Щелкните Open.

На экране откроется диалоговое окно Open.

Выберите файл Billg.bmp и щелкните кнопку ОК.

В окне SPIND16 появится изображение Билла Гейтса.

Щелкните кнопку Spin или Flip.

Изображение должно повернуться или подскочить соответственно, а затем вернуться в нормальное положение. Время, затраченное на выполнение операции, будет указано в правой части панели инструментов.

Повторите пункты 1—4 с программой SPIND32.

Оставьте обе программы активными.

> Создание 16-разрядной общей ошибки защиты

Запустите файл Badapp16.exe из папки WA\Practice\Ch01.

Расположите окна программ на рабочем столе так, чтобы видеть их все.

Для этого, например, щелкните правой кнопкой мыши панель задач Windows и выберите в меню команду Tile Horizontally или Tile Vertically. Они автоматически выравнивают все окна открытых программ на рабочем столе.

Переключитесь в окно программы Bad App.

В меню Action выберите команду Options и отключите звук.


В меню Action выберите GP-Fault.

Когда фитиль на экране догорит, бомба взорвется. В этот момент возникнет общая ошибка защиты.

Windows 95 откроет диалоговое окно с предложением завершить приложение или проигнорировать ошибку.

Щелкните кнопку Close.

Windows 95 откроет диалоговое окно Application Error с детальным описанием ошибки и второй кнопкой Close. Оставьте это диалоговое окно открытым.

Переключитесь в окно SPIND32.

Активна ли программа?

ответ

Переключитесь в окно SPIND16.

Активна ли программа?

ответ

Щелкните кнопку Close в диалоговом окне Bad App.

Активно ли приложение SPIND16?

ответ

Оставьте приложения работать.

> Пример зависания 16-разрядного Windows-приложения

Снова запустите файл Badapp16.exe.

Расположите окна программ на рабочем столе так, чтобы видеть их все.

В меню Action окна Bad App выберите команду Hang. Когда фитиль на экране догорит, бомба взорвется. В этот момент приложение остановится.

Убедитесь, что ни одна программа (ни 32-разрядная, ни 16-разрядная) не откликается.

Откройте диалоговое окно Close Programs, нажав клавиши CTRL+ALT+DEL.

В списке приложений выберите Bad App [Not responding] и щелкните кнопку End Task.

Появится диалоговое окно с запросом и кнопками End Task и Cancel.

Второй раз нажмите кнопку End Task. Остальные программы станут активными.


Выбор платформы Windows


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

Windows NT Windows 95
Офисные задачи - X
Удаленные пользователи - X
Высокая производительность X -
Безопасность уровня С-2 X -
Высокая надежность X -



Выполнение приложений


Windows 95 и Windows NT по-разному выполняют приложения, особенно 16-разрядные.



Высокая надежность


Многим пользователям требуется уровень доступности и производительности системы выше среднего. Например, в системах управления производством, которые теперь все чаще переносятся с миникомпьютеров и высокопроизводительных ЭВМ на персональные компьютеры, простой попросту недопустим. Другой пример — применение 16-разрядных приложений, которые Windows NT Workstation выполняет в раздельных адресных пространствах (так называемые виртуальные машины). Для пользователя это означает, что при отказе одного приложения другие выполняющиеся программы не пострадают. Windows NT Workstation также обеспечивает полную защиту 32-разрядных приложений и может автоматически восстанавливаться (если нужно, путем перезагрузки) в случае сбоя. Выполнение 16-разрядных Windows-приложений в раздельных виртуальных машинах имеет несколько важных преимуществ.

Взаимодействие приложений: Если 16-разрядные Windows-приложения следуют спецификациям OLE и DDE, они могут взаимодействовать с другими программами, работающими в отдельных адресных пространствах.

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

Многопроцессорность:

Если все Win16-приложения работают в одном адресном пространстве, в каждый момент времени выполняется только одно из них, поэтому даже в многопроцессорной системе 16-разрядные Windows-приложения не используют дополнительные процессоры. Однако если приложения работают в отдельных адресных пространствах (как в Windows NT), для их выполнения будут задействованы все процессоры системы.

* «Оранжевая книга» (стандарт Министерства обороны США "Trusted Computer System Evaluation Criteria. DoD 5200.28-STD") определяет класс защиты С-2 как «системы с контролируемым доступом». На соответствие требованиям стандарта сертифицирована только базовая часть операционной системы Windows NT, без сетевых сервисов. Требования по защите компьютерных систем, принятые в России, отражены в соответствующем национальном стандарте — ГОСТ Р 50739-95, «Средства вычислительной техники. Защита от несанкционированного доступа к информации. Общие технические требования». — Прим. ред.



Высокая производительность


Работа инженеров, научных работников, статистиков и других пользователей научной и технической сферы, как правило, связана с интенсивными вычислениями при проектировании и анализе данных. Windows NT Workstation, поддерживающая симметричную многопроцессорную обработку, легко переносится на высокопроизводительные платформы Pentium, Alpha и MIPS. Кроме того, соотношение производительность/цена для нее — на уровне рабочих станций высшего класса и миникомпь-ютеров. Еще одно преимущество в том, что при наличии Windows NT Workstation не нужен отдельный компьютер для работы с офисными приложениями.



Вытесняющая и кооперативная многозадачность


Прежде чем продолжить занятие, запустите видеоролик Chap01b.exe с прилагаемого к книге компакт-диска. В нем сравниваются вытесняющая и кооперативная многозадачность и объясняется, как реализуется многозадачность в отношении MS-DOS-, 16- и 32-разрядных Windows-приложений.

Существуют два типа многозадачности: кооперативная (не вытесняющая) и вытесняющая (рис. 1.4). В кооперативной многозадачной среде (например, Windows 3.1) контроль над процессором никогда не отбирается у задачи — приложение должно самостоятельно отказаться от контроля над процессором, чтобы другое приложение заработало.

Вытесняющая многозадачность отличается от кооперативной тем, что операционная система может получить контроль над процессором без согласия выполняющегося приложения. Лишение приложения контроля над процессором называется вытеснением. Windows 95 и Windows NT используют вытесняющую многозадачность для MS-DOS и 32-разрядных Windows-приложений.

Рис.1.4 Вытесняющая и кооперативная многозадачность

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

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



Пакет модернизации OEM Service Release


Пакет модернизации OEM Service Release 2 (OSR2) включает следующие расширения Windows 95:

файловую систему FAT32;

Internet Explorer 3.0;

DirectX 2.0 и ActiveMovie;

поддержку TCP/IP для нескольких конфигураций DNS;

клиента системы сообщений Windows NT 4.0 (Windows Messaging).

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


Windows NT Server


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

Многопроцессорные возможности и файловая система NTFS делают Windows NT наиболее защищенной и стабильной операционной системой семейства Windows.



Windows NT Workstation


Операционная система Microsoft Windows NT Workstation реализует все возможности Microsoft Windows for Workgroups на более высоком уровне с поддержкой многозадачности. Это мощная операционная система для настольных компьютеров, объединенных в одноранговую сеть, или же рабочая станция в составе домена Windows NT Server.



Закрепление материала


Закрепление материала

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

Какие операционные системы семейства Microsoft Windows являются 32-разрядными?

ответ

Как Windows 95 и Windows NT выполняют 16-разрядные приложения?

ответ

Что хранится в реестре? Как можно изменять информацию в реестре?

ответ

Какая из операционных систем Microsoft Windows подойдет пользователю настольного компьютера, если он заинтересован в наивысшей защите?

ответ

Какую из операционных систем Microsoft Windows стоит применять при использовании различного аппаратного обеспечения?

ответ



Операционные системы Windows


Занятие 1. Операционные системы Windows

(Продолжительность занятия 25 минут)

Сейчас чаще всего используются три операционные системы (ОС) семейства Windows. К 16-разрядным версиям относятся Windows 3.1 и Windows 3.11 (другое название — Windows for Workgroups), которые обсуждаются в первой части этого занятия. Далее же речь пойдет о 32-разрядных операционных системах Windows 95 и Windows NT. На этом занятии Вы познакомитесь с возможностями трех операционных систем семейства Windows.

Изучив материал этого занятия, Вы сможете:

описать возможности Windows 3.1, Windows 95 и Windows NT;

выбрать ОС, оптимальную для конкретной ситуации.

Windows 3.1

Windows 3.1 — 16-разрядная оболочка, работающая поверх операционной системы MS-DOS. В следующую версию, 3.11 (Windows for Workgroups), добавлены средства сетевой поддержки. Версии Windows З.х были адресованы пользователям, работающим на автономных настольных компьютерах под управлением MS-DOS. На смену им в качестве основной операционной системы для настольных компьютеров пришли Windows 95 и Windows NT Workstation.

Windows 95

Windows 95 — 32-разрядная ОС для настольных компьютеров. В отличие от Windows 3.1, ей не требуется MS-DOS в качестве операционной системы.

Благодаря стараниям разработчиков, Windows 95 не только поддерживает все существующие 16-разрядные приложения, но и служит платформой для новых, 32-разрядных приложений. Кроме того, Windows 95 обладает встроенными сетевыми средствами, включая поддержку одноранговых сетей на базе клиентов под управлением Windows 95 и подключение к серверам (например, под управлением Windows NT Server).

Windows 95 обеспечивает поддержку аппаратуры и файловых систем, облегчая конфигурирование операционной системы и аппаратных средств.



Архитектура Windows


Занятие 2. Архитектура Windows

(Продолжительность занятия 105 минут)

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

Изучив материал этого занятия, Вы сможете:

как Windows 95 и Windows NT выполняют программный код;

как Windows 95 и Windows NT реализуют вытесняющую многозадачность;

как Windows 95 и Windows NT управляют памятью;

сходства и различия выполнения приложений в Windows 95 и Windows NT;

как драйверы устройств обеспечивают независимость от аппаратуры;

приемущества применения API Win32 при разработке приложений;

назначение и структуру реестра Windows.

Как Windows выполняет программный код

Операционная система Windows для поддержки своей эффективности и целостности использует два режима: пользователя и ядра. Архитектура процессора Intel 80386 и следующих моделей определяет четыре уровня привилегий, называемых кольцами, для защиты кода и данных системы от случайного или преднамеренного изменения со стороны менее привилегированного кода. Такой метод выполнения кода называется моделью защиты Intel.

Уровень привилегий 0, известный как режим ядра, максимальный. Уровень привилегий 3, или режим пользователя, — минимальный. Когда код выполняется на некотором уровне привилегий, говорят, что он выполняется в соответствующем кольце. Операционные системы семейства Windows используют только кольца 0 и 3 (рис. 1.2).

Рис. 1.2 Кольца 0 и 3 в модели защиты Intel



где важна защита данных или


Там, где важна защита данных или файлов приложений — например, в банковской сфере или в оборонных отраслях, наилучший выбор — Windows NT Workstation. Скажем, окно регистрации, которое открывается нажатием клавиш CTR.L+ALT+DEL, предотвращает перехват имени пользователя и пароля программами типа «Троянского коня». Файловая система NTFS вместе с соответствующими механизмами защиты предотвращает неавторизованный доступ к системе и данным. Более того, модель защиты Windows NT Workstation сертифицирована на соответствие уровню С-2*. Этими средствами обеспечивается работа многих пользователей на одном компьютере под управлением Windows NT с гарантированной защитой всех файлов в системе.