Основы работы в среде ОС
Базовые принципы создания прикладных программ: Win32 Application Programming Interface (Win32 API), Object Linking and Embedding (OLE). Общие правила работы с приложениями (прикладными программами);
Здесь ОС нас будет интересовать с позиции программиста, желающего разобраться в принципах создания собственной прикладной программы.
На заре Windows программы создавались с применением набора Microsoft Software Development Kit (SDK). В состав этого набора, который продолжает выпускаться и сейчас, входит комплект полезных утилит, предназначенных для создания ресурсов приложений, тестирования программ и просто ускорения процесса разработки.SDK содержит полный набор библиотек для связывания Windows-программ, заголовочные файлы, электронную документацию и большое количество примеров программ на все случаи жизни.
Сегодня добавились еще две возможности программировать для Windows, обе предполагают использование какой-то современной системы программирования:
- Win32 API (the 32-bit Windows application programming interface)
- Пользование библиотеками классов, имеющихся в системе программирования.
Можно рекомендовать в качестве таких систем Borland C++ Builder или Delphi, построенные на базе языков программирования Си++ и Pascal соответственно. На самом деле систем программирования очень много. В их число входят и Visual Basic и FoxPro, и множество малоизвестных русскоязычному программисту систем класса Power Builder.
Исходные тексты Windows-приложений, разработанных на уровне программного интерфейса Windows API, легко могут быть переработаны в готовые программы с помощью любого компилятора языковСи и Си++. Все, что потребуется, – это знание универсального программного интерфейса API Win32, на котором базируются приложения для Windows 9х и Windows NT. Win32 API подкреплен Object Linking Embedding (OLE), механизмом внедрения данных из одной прикладной программы в другую. С помощью OLE можно внедрить в текстовый документ, например, звуковой или видео фрагмент, не обращаясь к программам обработки звука (изображения).
Помимо OLE используется Component Object Model (COM) -спецификация Microsoft для создания программных компонентов, которые легко объединяются в программы или могут быть добавлены к существующим программам, чтобы придать им дополнительную функциональность.COM является основой спецификаций OLE, ActiveX и DirectX.
Помимо COM существует DCOM – распределенная объектная модель компонентов, определяющая, каким образом компоненты взаимодействуют в сети на основе Windows.
ActiveX – вариант технологии OLE, специально предназначенный для использования в Internet, где невелика скорость передачи данных между узлами. Обеспечивает взаимодействие компонентов ПО (написанных на разных языках) в сетевой среде.
DirectX – системная библиотека, компоненты которой обеспечивают управление звуковыми и графическими средствами компьютера.
Можно обойтись и без API, работая только с библиотеками классов. Класс – ключевое понятие C++. Класс – это тип данных, определяемый пользователем. Классы обеспечивают скрытие данных, гарантированную инициализацию, неявное преобразование типов, для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций.
Но вы не создадите серьезной программы для Windows, если не знаете API. С помощью библиотеки можно создать работающий каркас с приятным внешним видом, но по мере усложнения вашей программы и добавления новых функций, вы все чаще и чаще будете сталкиваться с невозможностью решения проблем на уровне библиотек класса. Кроме того, знаниеAPI дает понимание глубинных процессов, происходящих в программах. А без этого некорректно считать себя программистом.
Рассмотрим понятие Окно (window) – базовое для графического интерфейса пользователя (GUI) и основной объект внутрисистемного взаимодействия в ОС Windows. Окно представляет собой прямоугольную (специальными методами можно задать иную форму) часть экрана, в которой приложение производит отображение выводимой информации и из которой получает вводимую информацию. Кроме того, окно является получателем сообщений.
При загрузке Windows всегда создается окно, занимающее весь экран – Desktop window. Каждое Windows-приложение, использующее стандартные интерфейсы Windows (Windows-based приложение), создает хотя бы одно окно, называемое главным окном приложения (возможно, невидимое). Многие приложения создают еще дополнительные окна. В каждый момент времени только одно окно в системе может получать вводимую информацию – т.н. активное окно. Пользователь может использовать клавиатуру, мышь или другое устройство ввода для взаимодействия с окном.
Приложения могут использовать различные типы окон:
– элементы управления (controls)
– диалоговые окна (dialog boxes)
– окна сообщений (message boxes)
Существует определенная взаимосвязь между окнами: родительское окно или окно-хозяин.
Окно может иметь родительское окно (parent window). В таком случае оно называется дочерним окном (child window) по отношению к родительскому. Дочернее окно никогда не выходит за границы родительского. При свертывании родительского окна свертываются все дочерние. При уничтожении родительского окна все дочерние уничтожаются. Дочернее окно не имеет меню.
Окно может иметь окно-хозяина. Это другой тип отношений между окнами. Окно всегда располагается поверх хозяина и сворачивается и уничтожается вместе с ним.
Для порождения окна (в том числе и главного окна приложения) используется функция CreateWindow или CreateWindowEx.
Основные виды Windows (3.х, 9x, NT, XP, CE)
Windows 3.x
Windows 3.x (3.1, 3.11) фирмы Microsoft (3.1 – 1987г.) представляет собой надстройку над MS DOS. Фактически, Windows «перехватывает» у DOS управление большинством ресурсов (кроме файловой системы). В части управления процессами Windows обеспечивает кооперативную (невытесняющую) многозадачность. Виртуальная память процесса сегментирована. При работе на процессорах i386 и последующих, которые аппаратно поддерживают сегментно-страничную модель, страничная часть адресации используется для создания виртуального пространства страниц, размер которого в 4 раза превышает размер реальной памяти, далее управление памятью ведется по сегментной модели в этом виртуальном пространстве страниц. |
Программирование в Windows является событийно-управляемым. Программа представляет собой цикл, каждая итерация которого начинается с ожидания сообщения (каковым может быть, например, нажатие кнопки мыши), затем сообщение обрабатывается, и программа ожидает нового сообщения. Во время ожидания сообщения процесс может быть вытеснен.
Ядро Windows состоит из 3 основных модулей, из которых: Kernel – обеспечивает системные функции, User – объекты интерфейса пользователя, GDI – графические функции.
Основным нововведением Windows, обеспечившим ее популярность, является полноэкранный графический интерфейс пользователя.
Windows for Workgroups 3.11 расширена средствами совместного использования ресурсов локальной сети (файлы, принтеры).
Windows 9.x
Эта аббревиатура обозначает две наиболее популярные ОС фирмы Microsoft: Windows 95 (95 OSR2) и Windows 98 (98 SE, ME) во всех их реализациях. Windows 95 разработана Microsoft, прежде всего, для предотвращения перехода пользователей Windows 3.x в среду OS/2. Windows 95 справилась с этой задачей, но не за счет своих объективных достоинств, а за счет крупномасштабной рекламной компании, начавшейся задолго до ее появления на рынке. В отличие от Windows 3.x, Windows 95 является полнофункциональной ОС, код DOS в нее встроен только для поддержки приложений, выполняющихся на виртуальной машине DOS. Программы, написанные для Windows 95, используют 32-разрядную адресацию. Основу той части ОС, которая работает в пользовательском режиме, составляет системная виртуальная машина, в среде которой выполняются все приложения Win32, а также виртуальная машина |
Windows 3.x, в среде которой выполняются приложения Win16. Функции модулей Kernel, User, GDI – те же, что и в Windows 3.x, около 50% кода этих модулей просто перенесено из Windows 3.x.
В части многозадачности Windows 95 обеспечивает вытесняющую многозадачность (включая потоки) с динамически изменяемыми приоритетами. Планированием процессов занимается Диспетчер ВМ, работающий в режиме ядра. Однако, поскольку часть системного кода заимствована из Windows 3.x и является нереентерабельной, вытеснение процесса в момент, когда он выполняет системный вызов, не всегда возможно.
Процессу пользователя Windows 95 предоставляет плоское адресное пространство размером 4 Гбайт. Это реализуется за счет того, что каждому процессу выделяется только один сегмент, адрес представляет собой 32-разрядное смещение в сегменте. В верхней части виртуального адресного пространства располагаются объекты, общие для всех процессов, в том числе и системные модули. Системный вызов имеет вид вызова процедуры, находящейся в адресном пространстве процесса. Верхние части виртуальных адресных пространств всех процессов перекрываются, что создает потенциальную возможность для одного процесса «испортить» систему для всех. Значительная часть системных модулей реализована в виде библиотек динамической компоновки.
Для обеспечения взаимодействия между процессами Windows 95 представляет: общие области памяти (т.наз., файлы, отображаемые в память), семафоры, мьютексы (переменные взаимного исключения) и события (и то, и другое– разновидности семафоров), сообщения.
В первой версии использовалась модификация файловой системы FAT, в версии OSR FAT-32 была значительно модифицирована. Windows 95 обеспечивает инсталлируемые файловые системы– возможность одновременной загрузки и поддержки драйверов различных ФС.
Интерфейс Windows 95 графический, документо-ориентированный.
Основное отличие Windows 98 – в организации интерфейса. Используется три вида пользовательского интерфейса: Web-подобный (который может быть реализован через броузер Internet Explorer), классический и смешанный. При Web-подобном интерфейсе открываемые объекты (папки, файлы) выделяются одним лишь указанием мыши, а открываются однократным щелчком. Классический интерфейс– оставшийся от Windows 95. В нем объекты выделяются однократным щелчком мыши, а открываются двукратным щелчком. Смешанный пользовательский интерфейс обеспечивает любую комбинацию свойств Web-подобного и классического интерфейса.
В Windows 98 имеется множество других новаций и усовершенствований, суммарно это все-таки другая ОС, хотя и близкая к своей предшественнице.
Можно выделить расширенные возможности работы с файлами, улучшенные сетевые возможности, усовершенствованные и дополнительные средства мультимедиа, улучшенную поддержку устройств и технических средств, включая установку и обслуживание ОС.
Хотя Windows 9х с самого начала считались неким суррогатом, призванным обеспечить удержание фирмой позиций до выхода в свет принципиально новой ОС фирмы Microsoft (NT), эта система, по-видимому, будет сохраняться, и развиваться еще некоторое время для домашних и других ПК неответственного применения. Основным преимуществом Windows 9х является простота работы с ней. Основным минусом считается неустойчивость в работе, вызванная самим принципом построения ОС: приложения и модули ОС работают в одном адресном пространстве и легко уязвимы при сбоях приложений.