stringtranslate.com

Исполнение (вычисление)

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

Программы для компьютера могут выполняться в пакетном режиме без участия человека, или пользователь может вводить команды в интерактивном сеансе интерпретатора . В этом случае «команды» — это просто инструкции программы, выполнение которых связано в цепочку.

Термин « запустить » используется почти как синоним. Связанное значение «запустить» и «выполнить» относится к определенному действию пользователя, запускающего (или вызывающего ) программу, например, «Пожалуйста , запустите приложение».

Процесс

Перед выполнением программа должна быть сначала написана. Обычно это делается в исходном коде , который затем компилируется во время компиляции (и статически связывается во время компоновки ) для создания исполняемого файла. Затем этот исполняемый файл вызывается, чаще всего операционной системой, которая загружает программу в память ( время загрузки ), возможно, выполняет динамическое связывание , а затем начинает выполнение, перемещая управление в точку входа программы; все эти шаги зависят от двоичного интерфейса приложения операционной системы. В этот момент начинается выполнение, и программа переходит во время выполнения . Затем программа выполняется до тех пор, пока не завершится, либо в результате обычного завершения , либо в результате сбоя .

Исполняемый

Исполняемый код , исполняемый файл или исполняемая программа , иногда просто называемый исполняемым файлом или двоичным файлом , представляет собой список инструкций и данных, заставляющих компьютер «выполнять указанные задачи в соответствии с закодированными инструкциями » [1], в отличие от файла данных , который должен быть интерпретирован ( анализирован ) программой, чтобы иметь смысл.

Точная интерпретация зависит от использования. «Инструкции» традиционно означают инструкции машинного кода для физического процессора . [2] В некоторых контекстах файл, содержащий инструкции скрипта (например, байт-код ), также может считаться исполняемым.

Контекст исполнения

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

Переключение контекста

Для того чтобы программы и обработчики прерываний работали без помех и совместно использовали одну и ту же аппаратную память и доступ к системе ввода-вывода, в многозадачной операционной системе, работающей на цифровой системе с одним ЦП/МК, требуется иметь какие-то программные и аппаратные средства для отслеживания данных исполняемого процесса (адреса страниц памяти, регистры и т. д.), а также для сохранения и восстановления их до состояния, в котором они находились до приостановки. Это достигается переключением контекста. [3] : 3.3  [4] Запускаемым программам часто назначаются идентификаторы контекста процесса (PCID).

В операционных системах на базе Linux набор данных, хранящихся в регистрах , обычно сохраняется в дескрипторе процесса в памяти для реализации переключения контекста. [3] Также используются PCID.

Время выполнения

Runtime , run time или execution time — это заключительная фаза жизненного цикла компьютерной программы , в которой код выполняется на центральном процессоре (ЦП) компьютера как машинный код . Другими словами, «runtime» — это фаза выполнения программы.

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

Подробности реализации

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

Некоторые программные отладки могут быть выполнены (или более эффективны или точны, когда выполняются) только во время выполнения. Примерами являются логические ошибки и проверка границ массива . По этой причине некоторые программные ошибки не обнаруживаются, пока программа не будет протестирована в производственной среде с реальными данными, несмотря на сложную проверку во время компиляции и предварительное тестирование. В этом случае конечный пользователь может столкнуться с сообщением «ошибка времени выполнения».

Ошибки приложения (исключения)

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

Система выполнения

Система выполнения , также называемая средой выполнения , в первую очередь реализует части модели выполнения . [ необходимо разъяснение ] Это не следует путать с фазой жизненного цикла выполнения программы, в течение которой система выполнения находится в эксплуатации. При рассмотрении системы выполнения как отличной от среды выполнения (RTE), первая может быть определена как определенная часть прикладного программного обеспечения (IDE), используемого для программирования , часть программного обеспечения, которая предоставляет программисту более удобную среду для запуска программ во время их производства ( тестирования и т. п.), в то время как вторая (RTE) будет самим примером модели выполнения, применяемой к разработанной программе, которая затем сама запускается в вышеупомянутой системе выполнения .

Большинство языков программирования имеют некоторую форму системы времени выполнения, которая обеспечивает среду, в которой работают программы. Эта среда может решать ряд вопросов, включая управление памятью приложения , как программа получает доступ к переменным , механизмы передачи параметров между процедурами , взаимодействие с операционной системой и т. д. Компилятор делает предположения в зависимости от конкретной системы времени выполнения для генерации правильного кода. Обычно система времени выполнения будет нести некоторую ответственность за настройку и управление стеком и кучей и может включать такие функции, как сборка мусора , потоки или другие динамические функции, встроенные в язык. [5]

Цикл инструкций

Цикл инструкций (также известный как цикл выборки-декодирования-выполнения или просто цикл выборки-выполнения ) — это цикл, который центральный процессор (ЦП) выполняет с момента загрузки до выключения компьютера для обработки инструкций. Он состоит из трех основных этапов: этап выборки, этап декодирования и этап выполнения.

Это простая диаграмма, иллюстрирующая отдельные этапы цикла извлечения-декодирования-выполнения.

В более простых процессорах цикл инструкций выполняется последовательно, каждая инструкция обрабатывается до того, как начнется следующая. В большинстве современных процессоров циклы инструкций выполняются одновременно , а часто и параллельно , через конвейер инструкций : следующая инструкция начинает обрабатываться до того, как завершится предыдущая, что возможно, поскольку цикл разбит на отдельные шаги. [6]

Устный переводчик

Система, которая выполняет программу, называется интерпретатором программы. Грубо говоря, интерпретатор напрямую выполняет программу. Это контрастирует с переводчиком языка , который преобразует программу с одного языка на другой перед ее выполнением.

Виртуальная машина

Виртуальная машина ( ВМ ) — это виртуализация / эмуляция компьютерной системы . Виртуальные машины основаны на компьютерных архитектурах и обеспечивают функциональность физического компьютера. Их реализация может включать специализированное оборудование, программное обеспечение или их комбинацию.

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

Некоторые эмуляторы виртуальных машин, такие как QEMU и эмуляторы игровых консолей , также разработаны для эмуляции (или «виртуальной имитации») различных системных архитектур, что позволяет выполнять программные приложения и операционные системы, написанные для другого процессора или архитектуры. Виртуализация на уровне ОС позволяет разделять ресурсы компьютера через ядро . Эти термины не являются универсально взаимозаменяемыми.

Смотрите также

Ссылки

  1. ^ "executable". Онлайн-словарь Merriam-Webster . Merriam-Webster . Получено 19 июля 2008 г.
  2. ^ "Машинные инструкции". GeeksforGeeks . 2015-11-03 . Получено 2019-09-18 .
  3. ^ ab Bovet, Daniel P. (2005). Understanding the Linux Kernel. Marco Cesati (3-е изд.). Севастополь, Калифорния: O'Reilly. ISBN 0-596-00565-2. OCLC  64549743.
  4. ^ "Разница между свопингом и переключением контекста". GeeksforGeeks . 2021-06-10 . Получено 2022-08-10 .
  5. ^ Ахо, Альфред В .; Лам, Моника Син-Линг ; Сетхи, Рави ; Ульман, Джеффри Дэвид (2007). Составители: Принципы, Методы и Инструменты (2-е изд.). Бостон, Массачусетс, США: Pearson Education . стр. 427. ISBN 978-0-321-48681-3.
  6. ^ Кристал Чен, Грег Новик и Кирк Шимано (2000). «Конвейеризация» . Получено 26.06.2019 .