Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Подсистема Win API32. Механизмы взаимодействия приложений с ОС Windows.






 

Как и в других операционных системах, в Windows 2000 есть свой набор системных вызовов, которые она может выполнять. Однако корпорация Microsoft никогда не публиковала список системных вызовов Windows, кроме того, она постоянно меняет их от одного выпуска к другому. Вместо этого корпорация Microsoft определила набор функциональных вызовов, называемый Win32 API (Win32 Application Programming Interface — интерфейс прикладного программирования). Эти вызовы опубликованы и полностью документированы. Они представляют собой библиотечные процедуры, которые либо обращаются к системным вызовам, чтобы выполнить требуемую работу, либо, в некоторых случаях, выполняют работу прямо в пространстве пользователя. Существующие вызовы Win32 API не изменяются с новыми выпусками системы Windows, хотя часто добавляются новые вызовы Win32 API.

Двоичные программы для процессоров Intel х8б, строго придерживающиеся интерфейса Win32 API, будут без каких-либо изменений работать на всех версиях Windows, начиная с Windows 95. Как показано на рис. 11.1, для операционной системы Windows 3.1 требуется дополнительная библиотека, преобразующая подмножество 32-разрядных вызовов Win32 API в 16-разрядные системные вызовы, но для остальных систем никакой адаптации не требуется. Следует отметить, что в операционной системе Windows 2000 к интерфейсу Win32 API добавлено значительное количество новых функций, поэтому в ней есть дополнительные вызовы API, не включенные в старые версии Win32, которые не будут работать на старых версиях Windows.

Философия Win32 API полностью отлична от философии UNIX. В операционной системе UNIX все системные вызовы опубликованы и формируют минимальный интерфейс: удаление даже одного из них приведет к снижению функциональности операционной системы. Философия Win32 заключается в предоставлении всеобъемлющего интерфейса, часто с возможностью выполнить одно и то же тремя или четырьмя способами, включающего множество функций (например, процедур). Эти функции, очевидно, не должны быть (и не являются) системными вызовами, как, например, вызов API для копирования целого файла. Многие вызовы Win32 API создают объекты ядра того или иного типа, например файлы, процессы, потоки, каналы и т. д. Каждый вызов, создающий объект, возвращает вызывающему процессу результат, называемый дескриптором. Этот манипулятор может использоваться впоследствии для выполнения операций с объектом. Дескриптор специфичен для процесса, создавшего этот объект. Он не может быть просто передан другому процессу и использован там (так же как дескрипторы файлов в системе UNIX не могут передаваться другим процессам). Однако при определенных обстоятельствах дескриптор может быть дублирован и передан другому процессу защищенным способом, что предоставляет второму процессу контролируемый доступ к объекту, принадлежащему первому процессу. С каждым объектом ассоциирован дескриптор безопасности, подробно описывающий, кто и какие действия может, а какие не может выполнять с данным объектом.

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

У каждого объекта ядра есть определенный системой тип, четко определенный набор операций, которые могут быть выполнены с объектом, и определенное место хранения в ядре. Хотя пользователи могут выполнять операции с объектом (при помощи вызовов Win32 API), но они не могут напрямую обращаться к объекту.

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

Иногда говорят, что система Windows 2000 является объектно-ориентированной, так как единственный способ управления объектом заключается в вызове операций, связанных с дескриптором объекта, путем обращения к вызовам Win32 API.

С другой стороны, в этой схеме отсутствуют основные свойства объектно-ориентированной системы, такие как наследование и полиморфизм.

Вызовы Win32 API покрывают все мыслимые области, с которыми может работать операционная система, и довольно много областей, с которыми операционная система, по идее, работать не должна. Естественно, этот интерфейс содержит вызовы для создания процессов и потоков и для управления ими. Также существует множество вызовов, относящихся к межпроцессному (в действительности межпоточному) взаимодействию. Это такие вызовы, как создание, уничтожение и использование мьютексов, семафоров, событий и других объектов IPC (InterProcess Communication — межпроцессное взаимодействие).

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

Важной частью многих программ является файловый ввод-вывод. С точки зрения Win32, файл представляет собой просто линейную последовательность байтов. Интерфейс Win32 предоставляет более 60 вызовов для создания и уничтожения файлов и каталогов, открытия и закрытия файлов, их чтения и записи, чтения и изменения атрибутов файлов и многого другого.

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

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

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.