Что такое "время выполнения"? - PullRequest
321 голосов
/ 10 октября 2010

Я слышал о таких вещах, как "C Runtime", "Visual C ++ 2008 Runtime", ".NET Common Language Runtime" и т. Д.

  • Что такое " runtime "точно?
  • Из чего он сделан?
  • Как он взаимодействует с моим кодом?Или, может быть, точнее, как мой код контролируется им?

При кодировании языка ассемблера в Linux я мог бы использовать инструкцию INT для выполнения системного вызова.Итак, разве среда выполнения - не что иное, как набор готовых функций, которые оборачивают низкоуровневую функцию в более абстрактные и высокоуровневые функции?Но разве это не похоже на определение библиотеки, а не среды выполнения?

Являются ли "среда выполнения" и " библиотека времени выполнения " двумя разными вещами?

ADD 1

В наши дни, я думаю, что Runtime имеет что-то общее с так называемой Virtual Machine , такой как JVM.Вот цитата, которая приводит к такой мысли:

Этот процесс компиляции достаточно сложен, чтобы разбить его на несколько уровней абстракции, и в них обычно участвуют три транслятора: компилятор, реализация виртуальной машины иассемблер.--- Элементы вычислительных систем (Введение, Дорога к аппаратному обеспечению)

ADD 2

Книга Эксперт C Программирование:Deep C Secrets .Глава 6 Структуры данных времени выполнения является полезной ссылкой на этот вопрос.

Ответы [ 14 ]

193 голосов
/ 10 октября 2010

Runtime описывает программное обеспечение / инструкции, которые выполняются при вашей программе, особенно те инструкции, которые вы не написали явно, но необходимы для правильного выполнения вашего кода.

Низкоуровневые языки, такие как C, имеют очень маленькое (если есть) время выполнения.Более сложные языки, такие как Objective-C, который обеспечивает динамическую передачу сообщений, имеют намного более длительное время выполнения.

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

91 голосов
/ 10 октября 2010

Runtime - это общий термин, относящийся к любой библиотеке, инфраструктуре или платформе, на которых работает ваш код.

Среды выполнения C и C ++ являются наборами функций.

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

70 голосов
/ 10 октября 2010

Согласно Википедии: библиотека времени выполнения / система времени выполнения .

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


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


Re: ваши правки , «среда выполнения» и «библиотека времени выполнения» - это два разных имени для одной и той же вещи.

48 голосов
/ 10 октября 2010

Среда исполнения или является частью языковой реализации, которая выполняет код и присутствует в run-time ; часть реализации реализации в стандарте C называется средой перевода .

Примеры:

  • среда выполнения Java состоит из виртуальной машины и стандартной библиотеки

  • общая среда выполнения C состоит из загрузчика (который является частью операционной системы) и среды выполнениябиблиотека, которая реализует части языка C, которые не встроены в исполняемый файл компилятором;в размещенных средах это включает в себя большинство частей стандартной библиотеки

29 голосов
/ 10 октября 2010

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

Я думаю время выполнения и время выполнения библиотеки должно быть (если это не так) две разные вещи.«C runtime» мне не кажется правильным.Я называю это «библиотека времени выполнения C».

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

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

Этот ответв какой-то степени только мое мнение, а не факт или определение.

26 голосов
/ 10 октября 2010

Мэтт Болл ответил правильно. Я бы сказал об этом с примерами.

Рассмотрите возможность запуска программы, скомпилированной в Turbo-Borland C / C ++ (версия 3.1 от 1991 года), и дайте ей работать в 32-битной версии Windows, такой как Win 98/2000 и т. Д.

Это 16-битный компилятор. И вы увидите, что все ваши программы имеют 16-битные указатели. Почему так, когда ваша ОС 32-битная? Потому что ваш компилятор настроил среду исполнения 16 бит и 32-битная версия ОС поддерживает это.

То, что обычно называют JRE (Java Runtime Environment), предоставляет Java-программе все ресурсы, которые ей могут понадобиться для выполнения.

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

6 голосов
/ 10 октября 2010

Время выполнения точно там, где ваш код оживает, и вы можете видеть много важных вещей, которые ваш код делает.

Время выполнения отвечает за выделение памяти, освобождение памяти, используя подсистему операционной системы, например (Файловые службы, IO Services. Сетевые сервисы и т. Д.)

Ваш код будет называться «РАБОЧАЯ В ТЕОРИИ», пока вы практически не запустите свой код.и Runtime - друг, который помогает в достижении этого.

3 голосов
/ 16 ноября 2012

Я обнаружил, что следующая структура папок создает очень проницательный контекст для понимания, что такое runtime:

Runtimes of Mozilla XulRunner

Вы можете видеть, что есть ' источник ', есть ' SDK ' или 'Software Development Kit', а затем есть Runtime, например. материал, который запускается - во время выполнения. Это содержимое как:

runtimes' folder contents

Win32 zip содержит .exe -s и .dll -s.

Так, например. среда выполнения C - это такие файлы, как библиотеки времени выполнения C, .so-s или .dll -s, которые вы запускаете во время выполнения и делаются особенными благодаря их (или их содержанию или целям) включению в определение Язык C (на «бумаге»), затем реализуется выбранной вами реализацией на языке C. И затем вы получаете время выполнения этой реализации, чтобы использовать его и использовать его.

То есть, с небольшой поляризацией, исполняемые файлы, которые понадобятся пользователям вашей новой программы на Си. Как разработчик программы на C, вы тоже, но вам также нужны компилятор C и заголовки библиотеки C; пользователям это не нужно.

3 голосов
/ 06 апреля 2012

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

в случае программ на Си среда выполнения - это код, который устанавливает стек, кучу и т. д., чего требует ожидаемоеС среда.по сути, это создает среду, которая обещана языком.(он может иметь компонент библиотеки времени выполнения, crt0.lib или что-то подобное в случае C)

2 голосов
/ 07 апреля 2018

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

...