[terminology] “런타임”이란 무엇입니까?

“C 런타임”, “Visual C ++ 2008 런타임”, “.NET 공용 언어 런타임”등과 같은 것들에 대해 들었습니다.

  • 런타임 “이란 정확히 무엇입니까?
  • 무엇으로 만들어져 있나?
  • 코드와 어떻게 상호 작용합니까? 아니면 더 정확하게, 내 코드는 어떻게 제어됩니까?

Linux에서 어셈블리 언어를 코딩 할 때 INT 명령을 사용하여 시스템을 호출 할 수 있습니다. 그렇다면 런타임은 저수준 기능을 더 추상적이고 고수준 기능으로 감싸는 사전 제작 된 기능 들일 뿐입니 까? 그러나 이것은 런타임이 아닌 라이브러리에 대한 정의처럼 보이지 않습니까?

“런타임”과 ” 런타임 라이브러리 “는 서로 다른 두 가지입니까?

추가 1

요즘 런타임 에는 JVM과 같은 소위 Virtual Machine 과 공통점이 있다고 생각 합니다. 그러한 생각으로 이어지는 인용문은 다음과 같습니다.

이 컴파일 프로세스는 여러 계층의 추상화로 나눌 수있을 정도로 복잡하며 일반적으로 컴파일러, 가상 머신 구현 및 어셈블러의 세 가지 변환기가 필요합니다. — 컴퓨팅 시스템의 요소 (소개, 하드웨어 랜드로 향하는 길)

추가 2

Expert C Programming : Deep C Secrets 책 . 6 장 런타임 데이터 구조는이 질문에 대한 유용한 참고 자료입니다.



답변

런타임은 프로그램이 실행 되는 동안 실행 되는 소프트웨어 / 명령 , 특히 명시 적으로 작성하지 않았지만 코드를 올바르게 실행하는 데 필요한 명령을 설명합니다.

C와 같은 저수준 언어는 런타임이 매우 작습니다 (있는 경우). 동적 메시지 전달을 허용하는 Objective-C와 같은보다 복잡한 언어는 훨씬 더 광범위한 런타임을 갖습니다.

런타임 코드는 라이브러리 코드이지만 라이브러리 코드는 더 일반적인 용어이며 모든 라이브러리에서 생성 된 코드를 설명합니다 . 런타임 코드는 특히 언어 자체의 기능을 구현하는 데 필요한 코드입니다.


답변

런타임은 코드가 실행되는 모든 라이브러리, 프레임 워크 또는 플랫폼을 나타내는 일반적인 용어입니다.

C 및 C ++ 런타임은 함수의 모음입니다.

.NET 런타임에는 중간 언어 인터프리터, 가비지 수집기 등이 포함되어 있습니다.


답변

Wikipedia에 따라 : 런타임 라이브러리 / 런타임 시스템 .

컴퓨터 프로그래밍에서 런타임 라이브러리는 컴퓨터 프로그램의 런타임 (실행) 동안 프로그래밍 언어에 내장 된 기능을 구현하기 위해 컴파일러가 사용하는 특수 프로그램 라이브러리입니다. 여기에는 종종 입출력 및 메모리 관리 기능이 포함됩니다.


런타임 시스템 (런타임 시스템 또는 런타임이라고도 함)은 일부 컴퓨터 언어로 작성된 컴퓨터 프로그램의 실행을 지원하도록 설계된 소프트웨어입니다. 런타임 시스템에는 기본 하위 수준 명령의 구현이 포함되어 있으며 고급 명령도 구현할 수 있으며 형식 검사, 디버깅 및 코드 생성 및 최적화까지 지원할 수 있습니다. 런타임 시스템의 일부 서비스는 응용 프로그램 프로그래밍 인터페이스를 통해 프로그래머가 액세스 할 수 있지만 다른 서비스 (예 : 작업 예약 및 리소스 관리)에는 액세스 할 수 없습니다.


다시 : 당신의 편집 , “런타임”과 “런타임 라이브러리”는 같은 것에 대한 두 개의 다른 이름입니다.


답변

실행 또는 실행 환경이 코드를 실행하고, 존재하는 언어 구현의 일부 런타임 ; 구현 의 컴파일 타임 부분을 C 표준에서 변환 환경 이라고합니다 .

예 :

  • Java 런타임은 가상 머신과 표준 라이브러리로 구성됩니다.

  • 공통 C 런타임은 로더 (운영 체제의 일부 임)와 컴파일러가 실행 파일에 내장하지 않은 C 언어 부분을 구현하는 런타임 라이브러리로 구성됩니다. 호스팅 환경에서 여기에는 표준 라이브러리의 대부분이 포함됩니다


답변

내 이해에서 런타임 은 정확히 그것이 의미하는 것입니다-프로그램이 실행되는 시간. 런타임 / 런타임 또는 컴파일 타임에 어떤 일이 발생한다고 말할 수 있습니다 .

나는 런타임런타임 라이브러리 가 (두 개가 아닌 경우) 두 개의 분리 된 것이어야 한다고 생각 합니다 . “C 런타임”이 옳지 않은 것 같습니다. “C 런타임 라이브러리”라고합니다.

다른 질문에 대한 답변 : 런타임 이라는 용어 는 프로그램이 실행될 때 환경과 컨텍스트를 포함하도록 확장 될 수 있다고 생각합니다 .

  • 다른 프로세스, 운영 체제 및 사용 된 라이브러리의 상태, 기타 프로세스의 상태 등과 같이 프로그램이 실행되는 동안 “환경”이라고 할 수있는 모든 것으로 구성됩니다.
  • 일반적인 의미에서 코드와 상호 작용하지 않으며 코드가 작동하는 환경, 실행 중에 사용 가능한 코드를 정의합니다.

이 대답은 사실이나 정의가 아닌 내 의견을 확장시키는 것입니다.


답변

매트 볼이 올바르게 대답했습니다. 나는 예를 들어 그것에 대해 말할 것입니다.

Turbo-Borland C / C ++ (1991 년의 3.1 버전) 컴파일러로 컴파일 된 프로그램을 실행하고 Win 98/2000 등과 같은 32 비트 버전의 Windows에서 실행되도록하십시오.

16 비트 컴파일러입니다. 그리고 모든 프로그램에 16 비트 포인터가 있습니다. OS가 32 비트 일 때 왜 그렇습니까? 컴파일러가 16 비트의 실행 환경을 설정하고 32 비트 버전의 OS가이를 지원했기 때문에.

일반적으로 JRE (Java Runtime Environment)는 Java 프로그램에 실행에 필요한 모든 자원을 제공합니다.

실제로 런타임 환경은 가상 머신 아이디어의 핵심 제품입니다. 가상 머신 은 하드웨어와 프로그램 실행에 필요한 원시 인터페이스를 구현합니다 . 런타임 환경은 이러한 인터페이스를 채택하여 프로그래머가 사용할 수 있도록 제공합니다. 컴파일러 개발자는 프로그램에 실행 환경을 제공하기 위해 이러한 기능이 필요합니다.


답변

코드가 실제로 생성되는 시간을 정확하게 실행하면 코드가하는 중요한 일을 많이 볼 수 있습니다.

런타임은 (파일 서비스, IO 서비스 .. 네트워크 서비스 등) 같은 운영 체제의 하위 시스템을 사용하여 메모리를 할당하고 메모리를 비우는 책임이 있습니다.

실제로 코드를 실행할 때까지 코드를 “작업 중”이라고합니다. 런타임은이를 해결하는 데 도움이되는 친구입니다.