stringtranslate.com

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

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

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

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

Процесс

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

Исполняемый файл

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

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

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

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

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

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

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

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

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

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

Детали реализации

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Рекомендации

  1. ^ «исполняемый файл». Интернет-словарь Мерриам-Вебстера . Мерриам-Вебстер . Проверено 19 июля 2008 г.
  2. ^ «Машинные инструкции». Гики для Гиков . 03.11.2015 . Проверено 18 сентября 2019 г.
  3. ^ Аб Бовет, Дэниел П. (2005). Понимание ядра Linux. Марко Чесати (3-е изд.). Севастополь, Калифорния: О'Рейли. ISBN 0-596-00565-2. ОСЛК  64549743.
  4. ^ «Разница между заменой и переключением контекста». Гики для Гиков . 10.06.2021 . Проверено 10 августа 2022 г.
  5. ^ Ахо, Альфред В .; Лам, Моника Син-Линг ; Сетхи, Рави ; Уллман, Джеффри Дэвид (2007). Составители: принципы, методы и инструменты (2-е изд.). Бостон, Массачусетс, США: Pearson Education . п. 427. ИСБН 978-0-321-48681-3.
  6. ^ Кристал Чен, Грег Новик и Кирк Шимано (2000). «Трубопровод» . Проверено 26 июня 2019 г.