Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Обзор [ править ]

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

Согласно этому определению, практически каждый язык имеет систему времени выполнения, включая скомпилированные языки , интерпретируемые языки и встроенные предметно-ориентированные языки . Даже вызываемые API автономные модели выполнения, такие как Pthreads ( потоки POSIX ), имеют систему времени выполнения, которая является реализацией поведения модели выполнения.

Большинство научных работ по системам времени выполнения сосредоточено на деталях реализации параллельных систем выполнения. Ярким примером системы параллельного выполнения является Cilk , популярная модель параллельного программирования. [2] Кроме того, был создан инструментарий прото-среды выполнения, чтобы упростить создание систем параллельного выполнения. [3]

В дополнение к поведению модели выполнения система времени выполнения может также выполнять вспомогательные услуги, такие как проверка типов , отладка или генерация и оптимизация кода . [4]

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

Уникальное приложение среды выполнения (RTE) находится в операционной системе (OS), которая позволяет запускать только этот RTE, то есть от загрузки до выключения питания вся ОС предназначена только для приложений, работающих в этом RTE. Любой другой код, который пытается запустить, или любые сбои в приложении (ах) нарушают RTE, что нарушает работу ОС, что останавливает всю обработку и требует перезагрузки. Если загрузка выполняется из постоянной памяти, создается чрезвычайно безопасная, простая, одноразовая система.

Примеры таких напрямую связанных систем времени выполнения включают:

  • В период с 1983 по 1984 год Digital Research предложила несколько своих бизнес-приложений и образовательных приложений для IBM PC на загрузочных дискетах в комплекте с SpeedStart CP / M-86 , сокращенной версией CP / M-86 в качестве среды выполнения. [5] [6] [7] [8] [9]
  • Некоторые автономные версии Ventura Publisher (1986–1993), [10] Artline (1988–1991), [10] Timeworks Publisher (1988–1991) и ViewMAX (1990–1992) [11] [12] [13] содержали специальные версии среды выполнения GEM от Digital Research в качестве среды выполнения. [10]
  • В конце 1990 - х годов JP Software процессор командной строки «s 4DOS была необязательно доступна в специальной версии среды выполнения , чтобы быть связаны с BATCOMP предварительно скомпилированных и зашифрованы пакетных заданий для создания unmodifyable исполняемых файлов из пакетных скриптов и запустить их на системах без установленного 4DOS. [14]

Примеры [ править ]

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

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

Другой пример - это случай использования интерфейса прикладного программирования (API) для взаимодействия с системой времени выполнения. Вызов этого API выглядит так же, как вызовы обычной библиотеки программного обеспечения., однако в какой-то момент во время вызова модель выполнения меняется. Система времени выполнения реализует модель выполнения, отличную от той, на которой написана библиотека. Человек, читающий код обычной библиотеки, сможет понять поведение библиотеки, просто зная язык, на котором написана библиотека. Однако человек, читающий код API, который вызывает систему времени выполнения, не сможет понять поведение вызова API, просто зная язык, на котором был написан вызов. В какой-то момент через какой-то механизм модель выполнения перестает соответствовать языку, на котором написан вызов, и переключается на модель выполнения, реализованную средой выполнения система. Например, инструкция trap - это один из методов переключения моделей выполнения.Это различие отличает вызываемую API модель выполнения, такую ​​как Pthreads, от обычной программной библиотеки. И вызовы Pthreads, и вызовы программных библиотек вызываются через API, но поведение Pthreads нельзя понять с точки зрения языка вызова. Скорее, вызовы Pthreads задействуют внешнюю модель выполнения, которая реализуется системой времени выполнения Pthreads (эта система времени выполнения часто является ядром ОС).

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

Расширенные функции [ править ]

Некоторые компилируемые или интерпретируемые языки предоставляют интерфейс, который позволяет коду приложения напрямую взаимодействовать с системой времени выполнения. Примером может служить Threadкласс на языке Java . Класс позволяет коду (который анимирован одним потоком) выполнять такие действия, как запуск и остановка других потоков. Обычно таким образом недоступны основные аспекты поведения языка, такие как планирование задач и управление ресурсами .

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

В пределе исполняющая система может предоставлять такие услуги, как машина с P-кодом или виртуальная машина , которые скрывают даже набор команд процессора . Это подход, которого придерживаются многие интерпретируемые языки, такие как AWK , и некоторые языки, такие как Java , которые предназначены для компиляции в некоторый машинно-независимый код промежуточного представления (например, байт-код ). Такое расположение упрощает задачу реализации языка и его адаптации к различным машинам, а также повышает эффективность сложных языковых функций, таких как отражение.. Он также позволяет выполнять одну и ту же программу на любом компьютере без явного шага перекомпиляции, что стало очень важной функцией с момента распространения Всемирной паутины . Чтобы ускорить выполнение, в некоторых системах времени выполнения предусмотрена возможность своевременной компиляции в машинный код.

Современный аспект систем времени выполнения - это поведение параллельного выполнения, такое как поведение, демонстрируемое конструкциями мьютексов в потоках Pthread и конструкциями параллельных секций в OpenMP . Система времени выполнения с таким режимом параллельного выполнения может быть модульной в соответствии с подходом протоко-времени выполнения.

История [ править ]

Известными ранними примерами систем времени выполнения являются интерпретаторы BASIC и Lisp . Эти среды также включали сборщик мусора . Forth - это ранний пример языка, предназначенного для компиляции в код промежуточного представления; его исполняющая система представляла собой виртуальную машину, которая интерпретировала этот код. Другой популярный, если теоретический, пример Дональда Кнута «s MIX компьютер.

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

В объектно-ориентированных языках программирования исполняющая система часто также отвечала за динамическую проверку типов и разрешение ссылок на методы.

См. Также [ править ]

  • Время выполнения (фаза жизненного цикла программы)
  • Модель исполнения
  • Модель программирования
  • Самозапускающийся
  • Статическая сборка

Ссылки [ править ]

  1. ^ Ахо, Альфред В .; Лам, Моника Син-Линг ; Сетхи, Рави ; Ульман, Джеффри Дэвид (2007). Составители: принципы, методы и инструменты (2-е изд.). Бостон, Массачусетс, США: Pearson Education . п. 427 . ISBN 978-0-321-48681-3.
  2. ^ Блюмофе, Роберт Дэвид ; Joerg, Christopher F .; Kuszmaul, Bradley C .; Leiserson, Charles E .; Randall, Keith H .; Чжоу, Юли (август 1995 г.). «Cilk: эффективная многопоточная система выполнения» . PPOPP '95: Материалы пятого симпозиума ACM SIGPLAN по принципам и практике параллельного программирования . Ассоциация вычислительной техники (ACM): 207–216. DOI : 10.1145 / 209936.209958 . S2CID 221936412 . Архивировано 11 февраля 2020 года . Проверено 11 января 2020 . 
  3. ^ Исследовательский институт открытого исходного кода (2011). «Добро пожаловать на домашнюю страницу Proto-Runtime Toolkit» . Инструментарий Proto-Runtime Toolkit (PRT) . Архивировано 11 февраля 2020 года . Проверено 11 января 2020 .
  4. Аппель, Эндрю Уилсон (май 1989 г.). «Система выполнения» (PDF) . Принстонский университет . Архивировано из оригинального (PDF) 30 декабря 2013 года . Проверено 30 декабря 2013 .
  5. ^ «Посмотрите, что нового в библиотеке приложений CP / M для IBM PC - Предложение по экономии времени - Получите одновременный доступ к CP / M бесплатно» (PDF) (флаер продукта). Пасифик Гроув, Калифорния, США: Digital Research, Inc., 1983. Архивировано (PDF) из оригинала 11 февраля 2020 года . Проверено 11 февраля 2020 . […] SpeedStart упрощает использование нашего программного обеспечения. Все программное обеспечение в библиотеке приложений CP / M имеет новую версию SpeedStart операционной системы CP / M, встроенную прямо на программный диск. Все, что вам нужно сделать, чтобы использовать эти приложения, - это вставить диск в ваш IBM PC. , включите систему, и все готово. Это избавляет от необходимости загружать отдельную операционную систему, менять диски и загружать прикладную программу. Программное обеспечение SpeedStart от CP / M Приложения Библиотека также: [...] Предоставляет вам бесплатную версию времени выполнения СР / М [...] Исключает необходимость установки каждой новой программы приложений [...] дает вам совместимость с Digital Research «с мощная 16-разрядная операционная система CP / M-86 и современная многозадачная операционная система Concurrent CP / M. […]
  6. ^ "DRI поставляет версию Dr. Logo 128K" (PDF) . Micro Notes - техническая информация о продуктах Digital Research . 2 (2). Пасифик Гроув, Калифорния, США: Digital Research, Inc., май 1984 г., стр. 4. NWS-106-002. Архивации (PDF) с оригинала на 2020-02-11 . Проверено 11 февраля 2020 . […] Dr. Logo впервые появился на розничном рынке осенью 1983 года для IBM PC и поднялся на вершину списка Softsel Hot List . Розничная версия включала SpeedStart CP / M , сокращенную версию CP / M, которая загружается автоматически при включении системы. […] [1]
  7. Digital Research Inc. (февраль 1984 г.). «Представляем программное обеспечение для IBM PC с бонусом в 350 долларов!» . БАЙТ (Реклама). Vol. 9 нет. 2. С. 216–217 . Проверено 22 октября 2013 . [2] [3]
  8. ^ Digital Research Inc. (1984-02-07). «Представляем программное обеспечение для IBM PC с бонусом в 350 долларов!» . Журнал ПК (Реклама). Vol. 3 шт. 2. PC Communications Corp., стр. 50–51. ISSN 0745-2500 . Архивировано из оригинала на 2020-02-11 . Проверено 11 февраля 2020 . 
  9. Digital Research Inc. (декабрь 1983 г.). «Представляем программное обеспечение для IBM PC с бонусом в 350 долларов!» . Журнал ПК (Реклама). Vol. 2 шт. 7. PC Communications Corp., стр. 306–307. ISSN 0745-2500 . Архивировано из оригинала на 2020-02-11. […] Представляем SpeedStart - эксклюзивную программную систему «load-&-go». Библиотека приложений CP / M предлагает больше, чем просто лучшее программное обеспечение для ПК IBM PC в отрасли. Каждое из наших приложений обеспечивает непревзойденное удобство нашей эксклюзивной однодисковой системы SpeedStart. SpeedStart - специальная версия мощного CP / M-86. операционная система, встроенная в каждый из наших дисков с программным обеспечением. Когда вы будете готовы к работе, просто загрузите диск, включите свой IBM PC и вперед! SpeedStart устраняет трудоемкую задачу загрузки отдельного операционного диска с последующей «установкой» программного обеспечения. Фактически, система SpeedStart позволяет вам работать быстрее и проще, чем любое другое программное обеспечение, доступное сегодня. Лучше всего то, что это ваше без каких-либо дополнительных затрат. Более того, SpeedStart может быть обойден для запуска программного обеспечения под управлением операционной системы будущего IBM PC - замечательный, многозадачность Параллельное CP / M . […]
  10. ^ a b c Крауттер, Томас; Барнс, Крис Дж. (14 июня 2006 г.) [29 декабря 1999 г.]. «ДРАГОЦЕННЫЙ КАМЕНЬ / 4» . Разработка GEM . Архивировано 16 марта 2013 года . Проверено 12 января 2020 . […] Операционная система Artline 2 была GEM / 4 […] все изменения в GEM / 4 были внесены в сотрудничестве с Ли Лоренценом и Доном Хейскеллом, чтобы сохранить совместимость с издателем ventura . […]
  11. ^ Эллиотт, Джон С. (1999-05-09). «Сравнение GEM и ViewMAX» . Seasip.info . Архивировано 7 ноября 2016 года . Проверено 7 ноября 2016 .
  12. ^ Пол, Маттиас Р. (1997-04-13) [1993]. DRDOS6UN.TXT - Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von DR DOS 6.0 . MPDOSTIP (на немецком языке) (60-е изд.). Архивировано 7 ноября 2016 года . Проверено 7 ноября 2016 .
  13. ^ Пол, Маттиас Р. (1997-06-07) [1994]. NWDOS7UN.TXT - Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von Novell DOS 7 . МПДОСТИП (на немецком языке) (85 изд.). Архивировано 7 ноября 2016 года . Проверено 7 ноября 2016 .
  14. ^ Георгиев, Лучезар И. (2008-11-02). «Рабочая версия 4DOS, BATCOMP и шифрование пакетных файлов» . Архив группы новостей Narkive . Группа новостейcomp.os.msdos.4dos . Архивировано 11 января 2020 года . Проверено 11 января 2020 .

Дальнейшее чтение [ править ]

  • «NAME ENTX - Microsoft MS-DOS Computer Pascal runtime system control» . 1.00. Корпорация Майкрософт . 1981. Архивировано 23 сентября 2018 года . Проверено 23 сентября 2018 .