Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на программирование.doc
Скачиваний:
10
Добавлен:
17.04.2019
Размер:
393.22 Кб
Скачать

12.Средства выполнения программ. Понятие операционной системы для прикладного программиста. Интерфейс прикладного программиста с операционно

Операционная система – набор программ, управляющих оперативной памятью, внешними устройствами, процессором и файлами, ведущими диалог с пользователем.

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

API – Application PI – набор функций операционной системы, позволяющих прикладным программам осуществить взаимодействие с аппаратным обеспечением ОС. К ним относят работу с файловой системой, взаимодействие с оперативной памятью, операции ввода/ вывода.

Например. Вызов функции из программы на языке с вывода на экран printf приводит к вызову функции ОС, которая позволяет выводить символ на экран.

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

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

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

13. Программа на языке высокого уровня. Язык программирования с. Программа на языке высокого уровня

Программа – алгоритм, записанный на языке программирования + структура данных, с которыми работает программа. Этапы существования ПО (не жизненный цикл программы): подвергается трансляции – процедура перевода с языка высокого уровня на машинный язык. В ходе трансляции может использоваться переход на промежуточный язык – кросстрансляции, в качестве промежуточного языка может использоваться язык ассемблера. Ассемблер – программа, осуществляющая перевод с языка ассемблера на машинный язык. Машинный язык – язык, использующий машинные команды, записанные в формате воспринимаемом конкретным вычислительным устройством. Транслятор – программа, выполняющая процедуру трансляции. Существует 2 вида: компилятор и интерпретатор.

Компилятор – осуществляет перевод текста программы на машинный язык целиком. Результат работы – объектный файл, содержащий программу на машинном языке и информацию о данных, используемых программой. Объектный файл обрабатывается компоновщиком (линкером) или редактором связи. Компоновщик обрабатывает объектные файлы, разрешает внешние ссылки (делает доступным вызовы объектов функций или данных из других объектных файлов или стандартных библиотек), осуществляет необходимую подготовительную работу для последующей загрузки программы на исполнение. Загрузчик программ, осуществляющих размещение исполняемого кода и данных в памяти ЭВМ и передающий управление первой исполняемой команде программы. В случае персональных ЭВМ функции загрузчика распределены между ОС и кодом, включаемым в исполняемый файл. Исполнение программы начинается с загрузки в регистр счетчика исполняемых команд ЦП, адреса первой исполняемой команды программы. Устройство управления считывает по этому адресу код команды, в соответствии с ним считывает значения операндов, передает код и операнды АЛУ, которое выполняет необходимые операции. По завершению выполнения команды значение регистра счетчика команд увеличивается на значение длины команды, которая известна по коду операции. Процедура повторяется до тех пор, пока не будет встречена команда stop. Исполняемая программа обычно завершается возвратом управления программе, вызвавшей данную программу (ОС).

Интерпретатор – покомандно или построчно считывает программу на исходном языке, переводит на машинный язык и отправляет на выполнение. Входом является программа на языке программирования. Результат – построчно выполняемая команда.

Компилятор языка С воспринимает исходный файл, содержащий программу на языке С, как последовательность текстовых строк. Каждая строка завершена символом новой строки. Этот символ вставляется текстовым редактором при нажатии клавиши ENTER (ВВОД).

Компилятор языка С последовательно считывает строки программы и разбивает каждую из считанных строк на группы символов, называемые лексемами. Лексема—это единица текста программы, которая имеет самостоятельный смысл для компилятора языка С и которая не содержит в себе других лексем. Никакие лексемы, кроме символьных строк, не могут продолжаться на последующих строках текста программы. Знаки операций, константы, идентификаторы и ключевые слова, описанные в этом разделе, являются примерами лексем. Разделители, например квадратные скобки [], фигурные скобки {}, круглые скобки (), угловые скобки < > и запятые, также являются лексемами. Внутри идентификаторов, ключевых слов, а также знаков операций, состоящих из нескольких символов, пробельные символы недопустимы. Когда компилятор языка Си выделяет отдельную лексему, он пытается включить в нее последовательно столько символов, сколько возможно, прежде чем перейти к выделению следующей лексемы. Рассмотрим, например, следующее выражение: i+++j В этом примере компилятор языка Си вначале сформирует из первых двух знаков "плюс" операцию инкремента (++), а из оставшегося знака плюс — операцию сложения. Выражение проинтерпретируется как (i++)+(j), а не как (i)+(++j).В подобных случаях рекомендуется для ясности разделять лексемы пробельными символами или круглыми скобками.