Студопедия

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

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

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






Windows API






API (application programming interface — интерфейс прикладного программирования) ‑ набор подпрограмм, используемых приложениями для запросов и выполнения служб нижнего уровня операционной системой компьютера. Эти подпрограммы обычно выполняют задачи обслуживания, такие как управление файлами и отображение данных.

ЧастьAPI функций реализуется с помощью программных прерываний.

Программные прерывания – это один из способов перехода на подпрограмму с помощью специальной инструкции процессора, такой как INT в процессорах Intel Pentium, trap в процессорах Motorola, syscall в процессорах MIPS или Ticc в процессорах SPARK.При выполнении команды программного прерывания процессор отрабатывает ту же последовательность действий, что и при возникновении внешнего или внутреннего прерывания, но только происходит это в предсказуемой точке программы – там, где программист поместил данную команду.

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

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

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

Реализация системных вызовов должна удовлетворить следующим требованиям:

· Обеспечивать переключение в привилегированный режим;

· Обладать высокой скоростью вызова процедур ОС;

· Обеспечивать по возможности единообразное обращение к системным вызовам для всех аппаратных платформ, на которых работает ОС;

· Допускать легкое расширение набора системных вызовов;

· Обеспечивать контроль со стороны ОС за корректным использованием системных вызовов.

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

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

В большинстве ОС системные вызовы обслуживаются по централизованной схеме, основанного на существовании диспетчера системных вызовов. При любом системном вызове приложение выполняет программное прерывание с определенным и единственным номером вектора. Например, ОС Linux использует для системных вызовов команду INT 80h, а ОС Windows NT - INT 2Eh. Перед выполнением программного прерывания приложение тем или иным способом передает операционной системе номер системного вызова, который является индексом в таблице адреса процедур ОС, реализующих системные вызовы. Способ передачи зависит от реализации, например номер можно поместить в определенный регистр общего назначения процессора или передать через стек. Также некоторым способом передаются аргументы системного вызова, они могут как помещаться в регистры общего назначения, так и передаваться через стек или массив, находящийся в оперативной памяти. Массив удобен при большом объеме данных, передаваемых в качестве аргументов, при этом в регистре общего назначения указывается адрес этого массива.

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

 

Команда чи змінна оточення Характеристика
   
GetComputerName() Функція, виводом якої є ім'я компьютера
   
GetWindowsDirectory() Функція, яка містить інформацію про папку, де встановлена ОС
GetUserName() Функція, в якій знаходится ім'я користувача

 

Варіанти завдань:

Варіант 1:

Директорія, в котру встановлено ОС Windows та ім'я комп'ютера.

Варіант 2:

Домен, до якого входить комп'ютер, та ім'я контроллера домена.

Варіант 3:

Ім'я користувача, що працює за комп'ютером, та версію ОС.

Варіант 4:

Директорія, в котру встановлено ОС Windows, та ім'я контроллера домена.

Варіант 5:

Домен, до якого входить комп'ютер, та версію ОС.

Варіант 6:

Ім'я користувача, що працює за комп'ютером, та ім'я комп'ютера.

Варіант 7:

Директорія, в котру встановлено ОС Windows, та версію ОС.

Варіант 8:

Домен, до якого входить комп'ютер, та ім'я комп'ютера.

Варіант 9:

Ім'я користувача, що працює за комп'ютером, та ім'я контроллера домена.

Варіант 10:

Директорія, в котру встановлено ОС Windows, та домен, до якого входить комп'ютер.

Варіант 11:

Домен, до якого входить комп'ютер, та Ім'я користувача, що працює за комп'ютером.

Варіант 12:

Ім'я користувача, що працює за комп'ютером, та директорія, в котру встановлено ОС Windows.

Варіант 13:

Ім'я комп'ютера, та ім'я контроллера домена.

Варіант 14:

Ім'я комп'ютера та версію ОС.

Варіант 15:

Ім'я контроллера домена та версію ОС.

Для визначення завдання для номерів наступних варіантів, рахувати з початку списку.

Питання для самоконтролю:

1. Що таке пакетний файл? Навіщо потрібні пакетні файли?

2. Що робить команда «@rem»?

3. Що зміниться, якщо з пакетного файлу прибрати команду «@echo off»?

4. Чим відрізняється команда «echo Hi» від «@echo Hi»?

5. Що таке змінні оточення?

6. Що таке API функції? Яке призначення мають API функції?

7. Чому API функції реалізуються за допомогою програмного переривання?

8. Призначення аргументів функції GetComputerName()?






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