Реализация функций api на уровне системы программирования

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

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

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

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

Единообразное выполнение функций языка обеспечивается системой программирования. При ориентации на различные архитектуры целевой вычислительной системы в системе программирования могут потребоваться различные комбинации вызовов функций операционной системы для выполнения одних и тех же функций исходного языка. Это должно быть учтено в коде RTL. В общем случае для каждой архитектуры целевой вычислительной системы потребуется свой код RTL языка программирования. Выбор того или иного объектного кода RTL для подключения к результирующей программе система программирования обеспечивает автоматически.

Например, рассмотрим функции динамического выделения памяти в языках С и Паскаль. В С это функции ma Hoc, realloc и free (функции new и delete в C++), в Паскале — функции new и dispose. Если использовать эти функции в исходном тексте программы, то с точки зрения исходной программы они будут действовать одинаковым образом в зависимости только от семантики исходного кода программы. При этом для разработчика исходной программы не имеет значения, на какую архитектуру ориентирована его программа. Это имеет значение для системы программирования, которая для каждой из этих функций должна подключить к результирующей программе объектный код библиотеки. Этот код будет выполнять обращение к соответствующим функциям операционной системы. Не исключено даже, что для однотипных по смыслу функций в разных языках (например, malloc в С и new в Паскале выполняют схожие по смыслу действия) этот код будет выполнять схожие обращения к операционной системе. Однако для различных вариантов операционной системы этот код будет различен даже при использовании одного и того же исходного языка.

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

Например, те же функции maUoc, realloc и free в языке С фактически не входят в стандарт языка. Они входят в состав стандартной библиотеки, которая «де-факто» входит во все системы программирования, построенные на основе языка С. Общепринятые стандарты существуют для многих часто используемых функций языка. Если же взять более специфические функции, такие как функции порождения новых процессов, то для них ни в С, ни в Паскале не окажется общепринятого стандарта.

Командный (консольный) интерфейс ОС. Виртуальная машина MS-DOS, интерпретатор команд и его функции. Синтаксис консольных команд. Система команд и их классификация.

Для того чтобы производить операции над файлами и директориями в MS-DOS, пользователю необходимо давать клавиатурные команды, т. е. набирать команды на клавиатуре и нажимать затем клавишу Enter. На самом деле клавиатурные команды — это имена небольших, программ, входящих в состав MS-DOS. Когда пользователь вводит команду, система ищет программу с аналогичным им нем и выполняет ее. Все команды делятся на внутренние и внешние. Программы, соответствующие внутренним командам, находятся в командном процессоре DOS-файле с названием COMMAND.СОМ — это наиболее часто используемые команды. Программы, соответствующие внешним командам, находятся на диске в виде отдельных файлов с такими же, как и команды, названиями. При вводе команды система сначала ищет соответствующую программу в файле COMMAND.СОМ, а если она там не найдена, то на диске, среди файлов системы MS-DOS; затем эта программа выполняется.

Командный процессор DOS обрабатывает команды, вводимые пользователем. Командный процессор находится в дисковом файле COMMAND.COM на диске, с которого загружается операционная система. Внутренние команды пользователя, например type, dir или сору, командный процессор выполняет самостоятельно.Для выполнения остальных (внешних) команд пользователя командный процессор отыскивает на дисках программу с соответствующим именем и передает, ей управление. По окончании работы программы командный процессор удаляет программу из памяти и выводит сообщение о готовности к выполнению команд (приглашение DOS).

Функции:

• прием команд с клавиатуры или из bat-файлов и их выполнение;

• выполнение команд файла autoexec.bat при загрузке MS-DOS;

• загрузка в ОЗУ и запуск на выполнение прикладных программ в среде MS-DOS.

Командный процессор состоит из 3 частей:

• резидентной — она размещается в ОЗУ сразу после msdos.sys, включает процедуры обслуживания некоторых прерываний, процедуры обработки стандартных ошибок MS-DOS, процедуру загрузки транзитной части командного процессора;

• инициализирующей — в ОЗУ она следует сразу за резидентной частью, во время загрузки ОС ей передается управление, она выполняет файл autoexec.bat и некоторые другие действия. Эта часть командного процессора стирается из ОЗУ первой же загруженной программой;

• транзитной (загружается в старшие адреса ОЗУ; обрабатывает все внутренние команды, команды с клавиатуры и из bat-файлов; выдает системную подсказку MS-DOS, загружает в ОЗУ программы и передает им управление).

Внешние команды (программы) — дополнительные программы, входящие в MS-DOS, выполняющие определенные функции. Это программы, поставляемые вместе с операционной системой в виде отдельных файлов, которые выполняют действия обслуживающего характера, например форматирование дискет, проверку дисков и т. д.

Драйверы устройств — это специальные резидентные программы, которые дополняют систему ввода-вывода DOS и обеспечивают обслуживание новых или нестандартное использование имеющихся устройств. Например, с помощью драйверов возможна работа с “электронным диском”, т. е. с частью памяти компьютера, с которой можно работать так же, как с диском. Драйверы загружаются в память

По источнику возникновения команды

  1. Асинхронные (команды события — сочетания клавиш)
  2. Синхронные – команды, которые имеют имя, их можно изд. по приглашению ОС.
    • внутренние (встроенные, резидентные) – наход. в command.com
    • внешние (отдельные файлы на диске)

Функц. классификация:

1.файлов. команды

команды для каталогов

2. дисков. команды.

3. команды настройки и конфигурация ОС

4. команды для пакетн. файлов

5. команды для config.sys

41

Егор Балышев: путь от джуниора до архитектора


Похожие статьи.

Понравилась статья? Поделиться с друзьями: