런타임 시스템

컴퓨터 프로그래밍에서 런타임 시스템(Runtime system), 이른바 런타임 환경(Runtime environment)은 주로 실행 모델의 일부를 구현한다. 런타임 시스템이 동작 중인 단계인 프로그램의 런타임 라이프사이클 단계와는 구별된다. 대부분의 언어들은 프로그램이 실행되는 환경을 제공하는 특정한 형태의 런타임 시스템이 있다. 이 환경은 애플리케이션 메모리의 레이아웃을 포함한 수많은 문제를 해결할 수 있다: 프로그램이 변수에 접근하는 방식, 프로시저 간 매개변수를 전달하는 매커니즘, 운영 체제와의 통신 등이 그것들이다. 컴파일러는 유효한 코드를 생성하기 위해 특정 런타임 시스템을 추정한다. 일반적으로 런타임 시스템은 스택과 힙을 구축하고 관리하는 책임이 일부 있으며 쓰레기 수집, 스레드, 그 밖에 해당 언어로 빌드되는 동적 기능들과 같은 기능들을 포함할 수 있다.

역사 
런타임 시스템의 저명한 초기 예는 베이직과 리스프용 인터프리터이다. 이 환경들은 쓰레기 수집기를 포함하기도 했다. 포스는 중간 표현 코드로 컴파일되도록 설계된 초창기 언어의 한 예이다. 해당 언어의 런타임 시스템은 해당 코드를 해석하였던 가상 머신이었다. 이론상 맞는 또다른 저명한 예로 도널드 커누스의 MIX 컴퓨터를 들 수 있다.

동적 메모리 할당을 지원하였던 C 이상의 언어에서 런타임 시스템은 프로그램의 메모리 풀을 관리하는 라이브러리를 포함하기도 했다.

객체 지향 프로그래밍에서 런타임 시스템은 동적 타입 검사를 책임지고 메소드 참조를 해결하기도 한다.

같이 보기 
 런타임
 실행 모델
 프로그래밍 모델
 셀프부터
 정적 빌드

각주

추가 문헌 
 

컴퓨팅 플랫폼