Системное программирование в среде Win32

Автор работы: Пользователь скрыл имя, 25 Марта 2014 в 14:49, лекция

Краткое описание

Конспект лекций содержит описание технологии системного программирования под Windows с использованием функций Win32 API. В первой части конспекта лекций рассмотрены особенности архитектуры ОС Windows, специфика интерфейса прикладного программирования Win32, структура приложений для Windows. Подробно рассмотрены API функции и основные структуры данных для работы с дисками, каталогами, файлами. Отдельная глава посвящена структурной обработке исключений SEH.

Прикрепленные файлы: 1 файл

Win32_лек_часть1.doc

— 811.00 Кб (Скачать документ)

 

 

 

 

 

 

 

 

 

 

Системное  программирование в среде Win32

 

 

Конспект лекций

 

Часть 1

 

 

 

 

 

 

 

 

 

 

 

Екатеринбург  2004

 

УДК 681.3.06

ББК 32.973.26

 

Рецензенты: доц. канд. техн. наук Язовский А.А., доц. канд. техн. наук Дружинина О.Г.

 

Научный редактор проф. доктор. техн. наук  Л.Г. Доросинский

 

Составитель:  Н.Г. Саблина

 

Системное  программирование в среде Win32: Конспект лекций. Ч.1. / Н.Г. Саблина. Екатеринбург: «Изд-во УМЦ-УПИ», 2004.  108 с.

 

 

Конспект лекций содержит описание технологии системного программирования под Windows с использованием функций Win32 API. В первой части конспекта лекций рассмотрены особенности архитектуры ОС Windows, специфика интерфейса прикладного программирования Win32, структура приложений для Windows. Подробно рассмотрены API функции и основные структуры данных для работы с дисками, каталогами, файлами. Отдельная глава посвящена структурной обработке исключений SEH.

Примеры, приведенные в конспекте,  реализованы на языке Си/С++.

Конспект лекций предназначен для студентов дистанционной технологии обучения специальностей 210100 - Управление и информатика в технических системах, 220100 – Автоматизированные системы обработки информации и управления, 201200 – Средства связи с подвижными объектами, изучающих дисциплины «Системное программное обеспечение», «Системное программирование».

 

Библиогр.: 11  назв.    Рис. 3. Табл. 7. Прил.

 

Подготовлено кафедрой  «Радиоэлектронные и телекоммуникационные системы».

 

 

ООО «Издательство УМЦ-УПИ», 2004

Введение

Термин системное программное обеспечение (System Software) означает  программы и комплексы программ, являющиеся общими для всех, кто совместно использует технические средства компьютера, и применяемые как для автоматизации разработки (создания) новых программ, так и для организации выполнения программ существующих. С этих позиций системное программное обеспечение может быть разделено на следующие пять групп:

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

 

Рассмотрим вкратце эти группы системных программ.

  1. Под операционной системой (ОС) понимают комплекс управляющих и обрабатывающих программ, который, с одной стороны, выступает как интерфейс между аппаратурой компьютера и пользователем с его задачами, а с другой – предназначен для наиболее эффективного использования ресурсов вычислительной системы и организации надежных вычислений. Любой из компонентов прикладного программного обеспечения обязательно работает под управлением ОС. Только ОС имеет непосредственный доступ к аппаратуре компьютера. Даже пользователи взаимодействуют  со своими программами через интерфейс ОС. (Подробно о назначении, функциях и архитектуре ОС см. [11, ч. 1] ).

 

  1. Назначение системы управления файлами – организация более удобного доступа к данным, организованным в файлы. Именно благодаря системе управления файлами вместо низкоуровневого доступа к данным с указанием конкретных физических адресов нужной нам записи используется логический доступ с указанием имени файла и записи в нем. Как правило, все современные ОС имеют в своем составе соответствующие системы управления файлами. Однако выделение этого вида системного программного обеспечения в отдельную категорию представляется целесообразным, поскольку ряд ОС позволяет работать с несколькими файловыми системами (либо с одной из нескольких, либо сразу с несколькими одновременно). (Подробно о файловых системах см. [11, ч.5] ).

 

  1. Для удобства взаимодействия с ОС могут использоваться дополнительные интерфейсные оболочки. Их основное назначение – либо расширить возможности по управлению ОС, либо изменить встроенные в систему возможности. В качестве примера можно отметить такие известные оболочки, как Norton Commander, Far, DOS Navigator, и, наконец, разнообразные варианты графических интерфейсов для семейства ОС Windows компании Microsoft.

 

  1. Система программирования представлена, прежде всего, такими компонентами, как транслятор с соответствующего языка, библиотеки подпрограмм, редакторы, компоновщики и отладчики. Не бывает самостоятельных (оторванных от ОС) систем программирования. Любая система программирования может работать только в соответствующей ОС, под которую она и создана, однако при этом она может позволять разрабатывать программное обеспечение и под другие ОС. Например, одна из популярных систем программирования на языке C/C++ от фирмы Watcom для OS/2 позволяет получать программы и для самой OS/2, и для DOS, и для Windows. В том случае, когда создаваемые программы должны работать совсем на другой аппаратной базе, говорят о кросс-системах. Так, для ПК на базе микропроцессоров семейства i80x86 имеется большое количество кросс-систем, позволяющих создавать программное обеспечение для различных микропроцессоров и микроконтроллеров.

 

  1. Наконец, под утилитами понимают специальные системные программы, с помощью которых можно как обслуживать саму операционную систему, так и подготавливать для работы носители данных, выполнять перекодирование данных, осуществлять оптимизацию размещения данных на носителе и производить некоторые другие работы, связанные с обслуживанием вычислительной системы. К утилитам следует отнести и программу разбиения накопителя на магнитных дисках на разделы, и программу форматирования, и программу переноса основных системных файлов самой ОС. Также к утилитам относятся и небезызвестные комплексы программ от фирмы Symantec, носящие имя Питера Нортона (создателя этой фирмы и соавтора популярного набора утилит для первых IBM PC). Естественно, что утилиты могут работать только в соответствующей операционной среде.

 

 

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

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

Интерфейс прикладного программирования – API  - это набор необходимых функций, при помощи которых любое приложение может взаимодействовать с операционной системой.  Масштаб Win32 API впечатляет, он содержит несколько тысяч функций и несколько сотен сообщений, макросов и переопределенных констант. Исчерпывающая информация о Win32 находится в справочной системе Platform Software Development Kit, которая в частности находится на компакт-дисках MSDN Library (входит обычно в состав дистрибутива Microsoft Visual Studio).

 

1.1. Категории API

Win32 API, как и его предшественники, в основном состоит из трех  компонентов: Kernel  (обеспечивают интерфейс с базовой операционной системой), User (обеспечивают управление окнами и приложениями) и GDI (Grafics Device Interface — интерфейс графических устройств), которые поддерживают графику.

 


 

 

 

 

 

Рис. 1.1. Категории API

Другие категории: мультимедиа, RPC (Remote Procedure Calls – вызовы удаленных процедур).

Объекты ядра (Kernel object)

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

Таблица 1.1

Kernel object

Объект ядра

Kernel object

Объект ядра

Access token

Маркер доступа

Module

Подгружаемый модуль (DLL)

Change notification

Уведомление об изменениях на диске

Mutex

Мьютекс

I/O completion ports

Порт завершения ввода-вывода

Pipe

Канал

Event

Событие

Process

Процесс

File

Файл

Semaphore

Семафор

File mapping

Проекция файла

Socket

Сокет

Heap

Куча

Thread

Поток

Job

Задание

Timer

Ожидаемый таймер

Mailslot

Почтовый слот

   

 

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

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

Ядру известно, сколько процессов используют конкретный объект ядра, поскольку в каждом объекте есть счетчик числа его пользователей. Этот счетчик – один из элементов данных, общих для всех типов объектов ядра. В момент создания объекта счетчику присваивается 1. Когда к существующему объекту ядра обращается другой процесс, счетчик увеличивается на 1. А когда какой-то процесс завершается, счетчики всех используемых им объектов ядра автоматически уменьшаются на 1. Как только счетчик какого-либо объекта обнуляется, ядро уничтожает этот  объект.

Объекты ядра можно защитить, используя дескриптор защиты (security descriptor), который описывает, кто создал объект и кто имеет права на доступ к нему. Дескрипторы защиты используются при написании серверных приложений; создавая клиентское приложение, можно игнорировать это свойство объектов ядра.

В пользовательское приложение передается только описатель (handle) объекта, а управлять объектом ядра можно с помощью функций Win32 API.

API Win32 поддерживается  семейством 32-разрядных операционных  систем компании Microsoft: Windows 2000, Windows NT, Windows 98, Windows 95 и Windows СЕ. API Win32, как и API любой другой операционной системы, имеет собственный набор соглашений и методов программирования, базирующихся на философии Windows.

 

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

1.2. Основы операционных систем

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

  • Память. Операционная система (ОС) управляет большим, неструктурированным пространством адресов виртуальной памяти и незаметно для пользователя перемещает информацию из физической памяти на диск и обратно.
  • Файловые системы. ОС управляет пространством именованных файлов и обеспечивает как прямой, так и последовательный доступ, а также управление каталогами и файлами. Большая часть систем имеет иерархическое пространство имен.
  • Именование и определение местоположения ресурсов. Правила именования файлов допускают длинные описательные имена, а схема именования распространяется на такие объекты, как устройства, объекты синхронизации и межпроцессорного взаимодействия. Также ОС определяет местоположение именованных объектов и управляет доступом к ним.
  • Многозадачность. ОС должна управлять процессами, потоками и другими модулями независимого асинхронного выполнения. Задачи могут выгружаться и планироваться в соответствии с динамически определяемыми приоритетами.
  • Связь и синхронизация. ОС управляет связью и синхронизацией между системами по сети и через Internet.
  • Защита и безопасность. ОС обеспечивает гибкие механизмы защиты ресурсов от неправомочного и случайного доступа и повреждения.

 

API Win32 поддерживает  все эти функции и обеспечивает  их выполнение в достаточной для обычных требований ОС степени и на разнообразных платформах.

1.3. Различные версии Windows

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

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

Практически с самого начала в составе Windows имелись средства, обеспечивающие обмен данными между приложениями, самое простое из них – буфер обмена (clipboard). Кроме этого фирмой Microsoft  разработаны и другие механизмы обмена данными, которые постоянно ею развиваются: динамический обмен данными (Dynamic Data Exchange, DDE), связывание и внедрение объектов (Object Linking and Embedding, OLE).

Каждая следующая версия Windows создавалась так, чтобы она была совместима с более ранними,  а также с MS DOS.

Информация о работе Системное программирование в среде Win32