Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
заочникиОС / Лабораторные работы / Лабораторная работа № 6.doc
Скачиваний:
64
Добавлен:
17.04.2015
Размер:
95.74 Кб
Скачать

Типы программ

Процессоры стандарта Intelмогут работать в трех основных режимах: реальный, виртуальный и защищенный. При включении компьютера его процессор работает в реальном режиме. После загрузки операционной системы (ОС) процессор может быть переключен программами ОС в другие режимы. В реальном и виртуальном режимах используется 16-битнаяадресацияс фиксированными сегментами по 64Кбайт. В защищенном режиме используется 32х-битнаяадресацияс неограниченными сегментами, и адрес к памяти формируется (на аппаратном уровне) с помощью дескрипторных таблиц, в которых задаются начальные адреса сегментов, их длина, и права доступа к памяти и к портам для процессов, которые их используют. Кроме того, в защищенном режиме реализовано аппаратное переключение между задачами с помощью специальных таблиц.

Особенности вызова функций api

Наиболее перспективным с точки зрения программирования является защищенный режим, потому что он использует все аппаратные возможности компьютера. Следовательно, функции API для Windows играют ту же роль, что и прерывание INT 21h для DOS в реальном или виртуальном режиме, но, отличия между ними достаточно существенны. Перечислим их:

  • Функции API не отменяют, а замещают программные прерывания. Механизм обработки аппаратных прерываний остается на уровне драйверов устройств;

  • Стандарт вызова функций API основан на передаче параметров через стек (а не через регистры);

  • Значение каждой функции возвращается в регистре EAX. Если функция возвращает структуру данных, то регистр EAX содержит логический признак выполнения, а адрес структуры необходимо передать к функции как параметр;

Функции API работают в защищенном режиме процессора, а прерывание DOS - в реальном или виртуальном режиме.

Функции APIсохраняются в разных библиотеках динамической компоновки, которые находятся в файлах с расширениемDLL, например,kernel32.dll,user32.dll,gdi32.dllи др. Эти файлы находятся в системном каталогеWindows(например, "C:\Windows\System"). В случае необходимости, программист может создатьDLL-файл с набором своих функций.

Программы Windowsобращаются к функциямAPIс помощью команд аппаратного вызоваCALL, например:callMessageBoxA, гдеMessageBoxA- 32х-битныеадреса функции. Именно это название функции фигурирует в файлеuser32.dll(посмотрите редактором этот файл).

Дескрипторы

Независимо от своего типа, любой объект в Windowsидентифицируется своим дескриптором, или описателем. Оба этих названия являются переводом терминаhandle(хэндл). Дескриптор – это своего рода ссылка на объект. Хендлы идентифицируют окна, меню, блоки памяти, экземпляры программы, устройства вывода, файлы, аудио и видео потоки, и другие объекты.

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