Я слышал о таких вещах, как «C Runtime», «Visual C ++ 2008 Runtime», «.NET Common Language Runtime» и т. Д.
- Что такое « время выполнения »?
- Из чего это сделано?
- Как это взаимодействует с моим кодом? Или, может быть, точнее, как мой код контролируется этим?
При кодировании языка ассемблера в Linux я мог использовать инструкцию INT для выполнения системного вызова. Итак, разве среда выполнения - не что иное, как набор готовых функций, которые оборачивают низкоуровневую функцию в более абстрактные и высокоуровневые функции? Но разве это не похоже на определение библиотеки, а не среды выполнения?
Являются ли «среда выполнения» и « библиотека времени выполнения » разными вещами?
ДОБАВИТЬ 1
Сейчас я думаю, что, возможно, Runtime имеет что-то общее с так называемой виртуальной машиной , такой как JVM. Вот цитата, которая приводит к такой мысли:
Этот процесс компиляции является достаточно сложным, чтобы разбить его на несколько уровней абстракции, и в них обычно участвуют три транслятора: компилятор, реализация виртуальной машины и ассемблер. --- Элементы вычислительных систем (Введение, Дорога к аппаратной земле)
ДОБАВИТЬ 2
Книга Эксперт C Программирование: Deep C Secrets . Глава 6 Структуры данных времени выполнения является полезной ссылкой на этот вопрос.
источник
runtime library
плюс некоторый управляющий код и некоторое состояние (предоставляется ОС).Ответы:
Runtime описывает программное обеспечение / инструкции, которые выполняются во время работы вашей программы, особенно те инструкции, которые вы не написали явно, но необходимы для правильного выполнения вашего кода.
Низкоуровневые языки, такие как C, имеют очень маленькое (если есть) время выполнения. Более сложные языки, такие как Objective-C, который обеспечивает динамическую передачу сообщений, имеют гораздо более длительное время выполнения.
Вы правы, что код времени выполнения - это код библиотеки, но код библиотеки - это более общий термин, описывающий код, созданный любой библиотекой. Код времени выполнения - это, в частности, код, необходимый для реализации возможностей самого языка.
источник
Runtime - это общий термин, который относится к любой библиотеке, инфраструктуре или платформе, на которых работает ваш код.
Среды выполнения C и C ++ являются коллекциями функций.
Среда выполнения .NET содержит интерпретатор промежуточного языка , сборщик мусора и многое другое.
источник
cout
илиprintf
.Согласно Википедии: библиотека времени выполнения / система времени выполнения .
Re: ваше редактирование , "runtime" и "runtime library" - это два разных имени для одной и той же вещи.
источник
Среда выполнения или среда выполнения является частью языковой реализации, которая выполняет код и присутствует во время выполнения ; часть реализации во время компиляции называется средой перевода в стандарте C.
Примеры:
среда выполнения Java состоит из виртуальной машины и стандартной библиотеки
обычная среда выполнения C состоит из загрузчика (который является частью операционной системы) и библиотеки времени выполнения, которая реализует части языка C, которые не встроены в исполняемый файл компилятором; в размещенных средах это включает в себя большинство частей стандартной библиотеки
источник
В моем понимании время выполнения - это именно то, что оно означает - время запуска программы. Вы можете сказать, что что-то происходит во время выполнения / выполнения или во время компиляции.
Я думаю, что runtime и runtime library должны быть (если они не являются) двумя разными вещами. «C runtime» мне не кажется правильным. Я называю это "C runtime library".
Ответы на другие ваши вопросы: Я думаю, что термин время выполнения может быть расширен, чтобы включить также среду и контекст программы, когда она запускается, поэтому:
Этот ответ в какой-то степени только мое мнение, а не факт или определение.
источник
Мэтт Болл ответил правильно. Я бы сказал об этом на примерах.
Подумайте о запуске программы, скомпилированной в компиляторе Turbo-Borland C / C ++ (версия 3.1 от 1991 года), и позвольте ей работать под 32-битной версией Windows, такой как Win 98/2000 и т. Д.
Это 16-битный компилятор. И вы увидите, что все ваши программы имеют 16-битные указатели. Почему так, когда ваша ОС 32-битная? Потому что ваш компилятор настроил среду исполнения 16 бит и 32-битная версия ОС поддерживает это.
То, что обычно называют JRE (Java Runtime Environment), предоставляет Java-программе все ресурсы, которые ей могут понадобиться для выполнения.
На самом деле, среда выполнения - это мозговой продукт идеи виртуальных машин. Виртуальная машина реализует сырой интерфейс между оборудованием и тем, что может потребоваться программе. Среда выполнения принимает эти интерфейсы и представляет их для использования программистом. Разработчику компилятора понадобятся эти средства, чтобы обеспечить среду выполнения для его программ.
источник
Время выполнения точно там, где ваш код входит в жизнь, и вы можете увидеть много важных вещей, которые ваш код делает.
Runtime несет ответственность за выделение памяти, освобождение памяти, использование подсистемы операционной системы, например (файловые службы, службы ввода-вывода .. сетевые службы и т. Д.)
Ваш код будет называться «РАБОТАЯ В ТЕОРИИ», пока вы практически не запустите свой код. и Runtime - друг, который помогает в достижении этого.
источник
среда выполнения может обозначать текущую фазу жизненного цикла программы (время выполнения / время компиляции / время загрузки / время соединения) или это может означать библиотеку времени выполнения, которая формирует базовые действия низкого уровня, которые взаимодействуют со средой выполнения. или это может означать систему времени выполнения, которая совпадает со средой исполнения.
в случае программ на Си среда выполнения - это код, который устанавливает стек, кучу и т. д., что требуется средой Си. по сути, это создает среду, которая обещана языком. (он может иметь компонент библиотеки времени выполнения, crt0.lib или что-то подобное в случае C)
источник
Я обнаружил, что следующая структура папок создает очень проницательный контекст для понимания того, что
runtime
есть:Вы можете видеть, что есть « источник », есть « SDK » или «Software Development Kit», а затем есть
Runtime
, например. материал, который запускается - во время выполнения. Это содержание как:Win32 zip содержит .exe -s и .dll -s.
Так, например. среда выполнения C - это такие файлы, как библиотеки времени выполнения C, .so-s или .dll -s, которые вы запускаете во время выполнения и делаются особенными благодаря их (или их содержанию или целям) включению в определение Язык C (на «бумаге»), затем реализуется выбранной вами реализацией на языке C. И затем вы получаете время выполнения этой реализации, чтобы использовать его и использовать его.
То есть, с небольшой поляризацией, запускаемые файлы, которые понадобятся пользователям вашей новой программы на Си. Как разработчик программы на C, вы тоже, но вам также нужны компилятор C и заголовки библиотеки C; пользователям это не нужно.
источник
Время выполнения в основном означает, когда программа взаимодействует с оборудованием и операционной системой машины. C не имеет своей собственной среды выполнения, но вместо этого он запрашивает среду выполнения у операционной системы (которая в основном является частью оперативной памяти), чтобы выполнить себя.
источник
Если мое понимание прочитанных выше ответов верное, то среда выполнения - это в основном «фоновые процессы», такие как сборка мусора, выделение памяти, в основном любые процессы, которые вызываются косвенно библиотеками / средами, в которых написан ваш код, и особенно те процессы, которые происходят после компиляции во время работы приложения.
источник
Эти разделы документации MSDN посвящены большинству ваших вопросов: http://msdn.microsoft.com/en-us/library/8bs2ecf4(VS.71).aspx
Надеюсь, это поможет.
Спасибо Дамиан
источник
Время выполнения - это тот случай, когда вы не знаете, какой тип объектов создается во время его выполнения, создание объектов основано на определенном условии или некоторой вычислительной работе. Напротив, время компиляции - это тот случай, когда требуемые объекты определяются вами до его выполнения.
источник
Время выполнения несколько противоположно времени разработки и времени компиляции / соединения. Исторически это происходило из медленной среды мэйнфреймов, где машинное время было дорого.
источник