ScholarGate
어시스턴트

런타임 시스템 및 가상 머신

런타임 시스템과 가상 머신은 프로그램의 실행 환경을 제공하며, 중간 코드를 해석하거나 컴파일하고 실행 중인 프로그램에 필요한 서비스를 관리합니다.

PaperMind(으)로 주제 찾기곧 제공Find papers & topics
Tools & resources
슬라이드 다운로드
Learn & explore
동영상곧 제공

Definition

런타임 시스템은 프로그램 자체 코드 외에 프로그램 실행을 지원하는 소프트웨어 환경이며, 가상 머신은 이식 가능한 명령어 집합을 해석하거나 컴파일하여 이식성과 런타임 서비스를 제공하는 추상적인 실행 엔진입니다.

Scope

이 주제는 컴파일된 코드와 하드웨어 사이의 계층을 다룹니다: 바이트코드 인터프리터 및 추상 머신, JIT(Just-In-Time) 컴파일, 동적 디스패치 및 메서드 조회, 호출 규약 및 스택 관리, 예외 처리 및 리플렉션과 같은 런타임 서비스. 또한 이식 가능한 가상 머신의 설계와 관리되는 언어를 효율적으로 만드는 기술을 다룹니다.

Core questions

  • 가상 머신은 어떻게 하드웨어 전반에 걸쳐 이식성을 제공합니까?
  • JIT(Just-In-Time) 컴파일은 어떻게 해석과 네이티브 코드를 결합합니까?
  • 동적 디스패치와 메서드 조회는 어떻게 효율적으로 이루어집니까?
  • 관리형 언어를 지원하기 위해 어떤 런타임 서비스가 필요합니까?

Key theories

이식 가능한 가상 머신 아키텍처
Java Virtual Machine 사양은 이식 가능하고 검증 가능한 바이트코드 및 실행 모델을 정의하며, 가상 머신이 특정 하드웨어로부터 언어를 어떻게 분리하는지 보여줍니다.
JIT(Just-In-Time) 컴파일
Aycock은 런타임이 실행 중에 코드를 네이티브 형식으로 컴파일하는 기술을 조사하며, 런타임 정보를 사용하여 해석 시작 시간과 컴파일된 코드의 처리량 사이의 균형을 맞춥니다.
동적 디스패치를 위한 인라인 캐싱
Deutsch와 Schiffman의 Smalltalk 구현은 인라인 캐싱과 동적 번역을 도입했는데, 이는 동적으로 디스패치되는 언어에서 메서드 조회를 빠르게 만드는 핵심 기술입니다.

Clinical relevance

가상 머신과 관리형 런타임은 Java, .NET, JavaScript, Python과 같은 널리 사용되는 플랫폼에 동력을 제공하며, 이식성, 안전성 및 적응형 최적화를 제공합니다. JIT 컴파일과 인라인 캐싱은 고급 동적 언어가 경쟁력 있는 성능을 달성할 수 있는 이유입니다.

History

추상 머신은 초기 이식 가능한 시스템과 Smalltalk로 거슬러 올라가며, Smalltalk의 1984년 구현은 동적 번역과 인라인 캐시를 개척했습니다. Java Virtual Machine은 1990년대 중반에 이식 가능한 바이트코드를 대중화했으며, HotSpot과 같은 적응형 JIT 컴파일러와 이후 JavaScript 엔진은 주류 관리형 언어에 공격적인 런타임 최적화를 도입했습니다.

Debates

해석 대 JIT(Just-In-Time) 컴파일
런타임 설계자는 빠른 시작 시간과 낮은 메모리 사용량을 가진 단순한 인터프리터와, 워밍업 시간 및 구현 복잡성을 대가로 더 높은 최고 성능을 달성하는 JIT 컴파일러 사이에서 저울질하며, 종종 계층형 시스템에서 이 둘을 결합합니다.

Key figures

  • Peter Deutsch
  • John Aycock
  • James Gosling
  • Gilad Bracha

Related topics

Seminal works

  • lindholm2014
  • aycock2003
  • deutsch1984

Frequently asked questions

이 맥락에서 가상 머신이란 무엇입니까?
여기서 가상 머신은 전체 컴퓨터를 에뮬레이션하기보다는, 기본 하드웨어를 추상화하고 런타임 서비스를 제공하며 이식 가능한 명령어 집합(예: 바이트코드)을 실행하는 소프트웨어 실행 엔진입니다.
JIT(Just-In-Time) 컴파일은 성능에 어떻게 도움이 됩니까?
JIT 컴파일러는 프로그램의 자주 실행되는 부분을 런타임에 네이티브 코드로 번역하며, 미리 컴파일하는 컴파일러에는 없는 프로파일링 정보를 사용하여 '핫 코드'가 거의 네이티브 속도로 실행되도록 합니다.

Methods for this concept

Related concepts