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