런타임 시스템
Runtime system프로그램 실행 |
---|
일반적인 개념 |
코드의 종류 |
컴파일 전략 |
주목할 만한 런타임 |
주목할 만한 컴파일러 및 툴 체인 |
컴퓨터 프로그래밍에서 런타임 시스템 또는 런타임 환경은 프로그램을 생성하는 컴퓨터와 프로그램을 실행하려는 컴퓨터 모두에 존재하는 하위 시스템입니다.이 이름은 컴파일된 언어에서 컴파일 시간과 런타임 분할에서 유래하며, 프로그램 생성(컴파일)과 타깃 머신에서의 실행(실행 시간)[1]에 관련된 컴퓨터 프로세스를 유사하게 구분합니다.
대부분의 프로그래밍 언어에는 프로그램이 실행되는 환경을 제공하는 일종의 런타임 시스템이 있습니다.이 환경에서는 애플리케이션 메모리의 관리, 프로그램의 변수 액세스 방법, 프로시저 간의 파라미터 전달 메커니즘, 운영체제와의 인터페이스 등 다양한 문제에 대처할 수 있습니다.컴파일러는 올바른 코드를 생성하기 위해 특정 런타임 시스템에 따라 가정합니다.일반적으로 런타임 시스템은 스택과 힙의 셋업과 관리를 담당하며 가비지 컬렉션, 스레드 또는 [1]언어에 내장된 기타 동적 기능 등의 기능을 포함할 수 있습니다.
개요
모든 프로그래밍 언어는 실행 모델을 지정하며, 많은 언어는 런타임 시스템에서 해당 모델의 적어도 일부를 구현합니다.런타임 시스템 동작의 가능한 정의 중 하나는 "프로그램 자체에 직접 기인하지 않는 동작"입니다.이 정의에는 함수 호출 전에 스택에 매개 변수 배치, 관련 동작의 병렬 실행 및 디스크 I/O가 포함됩니다.
이 정의에 따르면 기본적으로 컴파일된 언어, 인터프리터 언어 및 임베디드 도메인 고유의 언어를 포함한 모든 언어는 런타임 시스템을 가집니다.Pthreads(POSIX 스레드)와 같은 API 호출 독립 실행형 실행 모델도 실행 모델의 동작을 구현하는 런타임 시스템을 가지고 있습니다.
런타임 시스템에 대한 대부분의 학술적 논문은 병렬 런타임 시스템의 구현 세부 사항에 초점을 맞추고 있습니다.병렬 런타임 시스템의 주목할 만한 예는 인기 있는 병렬 프로그래밍 [2]모델인 Cilk입니다.프로토 런타임 툴킷은 병렬 런타임 [3]시스템의 생성을 단순화하기 위해 만들어졌습니다.
실행 모델 동작에 가세해 런타임 시스템은 타입 체크, 디버깅, [4]코드 생성 및 최적화 등의 지원 서비스를 실행할 수도 있다.
런타임 환경과의 관계
런타임 시스템은 실행 중인 프로그램이 런타임 환경과 상호 작용하는 게이트웨이이기도 합니다.런타임 환경에는 액세스 가능한 상태 값뿐만 아니라 프로그램이 실행 중에 상호 작용할 수 있는 활성 엔티티도 포함됩니다.예를 들어 환경변수는 많은 운영체제의 기능이며 런타임 환경의 일부입니다.실행 중인 프로그램은 런타임 시스템을 통해 액세스할 수 있습니다.마찬가지로 디스크나 DVD 드라이브와 같은 하드웨어 디바이스는 프로그램이 런타임 시스템을 통해 상호 작용할 수 있는 활성 엔티티입니다.
런타임 환경의 고유한 응용 프로그램 중 하나는 실행만 허용하는 운영 체제 내에서 사용하는 것입니다.즉, 기동으로부터 전원 오프까지, OS 전체가 그 런타임 환경내에서 동작하는 애플리케이션 전용입니다.실행하려고 하는 다른 코드 또는 응용 프로그램에서 오류가 발생하면 런타임 환경이 중단됩니다.런타임 환경을 파괴하면 OS가 파손되어 모든 처리가 중지되고 재부팅이 필요합니다.읽기 전용 메모리에서 부팅하는 경우 매우 안전하고 단순한 단일 미션 시스템이 생성됩니다.
이러한 직접 번들된 런타임 시스템의 예는 다음과 같습니다.
- 1983년에서 1984년 사이에 Digital Research는 IBM PC용 비즈니스 및 교육 애플리케이션 중 몇 가지를 런타임 [5][6][7][8][9]환경으로 CP/M-86의 축소 버전인 SpeedStart CP/M-86과 함께 번들된 부팅 가능한 플로피 디스켓으로 제공했습니다.
- Ventura Publisher(1986–1993),[10] Artline(1988–1991),[10] Timeworks Publisher(1988–1991), ViewMAX(1990–[11][12][13]1992)의 일부 독립 실행형 버전에는 Digital Research의 GEM의 특별한 런타임 버전이 런타임 [10]환경으로 포함되어 있습니다.
- 1990년대 후반, JP 소프트웨어의 명령줄 프로세서 4DOS는 BATCOMP의 사전 컴파일 및 암호화된 배치 작업과 링크하여 배치 스크립트에서 수정 불가능한 실행 파일을 생성하고 4DOS가 [14]설치되지 않은 시스템에서 실행할 수 있도록 특별한 런타임 버전으로 옵션으로 제공되었습니다.
예
C 언어의 런타임 시스템은 컴파일러에 의해 실행 가능한 이미지에 삽입된 특정 명령어 세트입니다.특히 이들 절차에서는 프로세스스택 관리, 로컬 변수용 공간 작성 및 함수콜 파라미터의 스택 상부에 복사합니다.
런타임 시스템 자체의 일부인 언어 동작과 특정 소스 프로그램에 의해 결정될 수 있는 언어 동작을 결정하기 위한 명확한 기준이 없는 경우가 많습니다.예를 들어 C에서는 스택 설정은 런타임시스템의 일부입니다.동작은 전체적으로 불변하기 때문에 개별 프로그램의 의미에 따라 결정되지 않습니다.모든 실행을 보류합니다.이 체계적인 동작은 특정 프로그램의 의미론 구현과는 달리 언어의 실행 모델을 구현합니다(텍스트는 결과를 계산하는 코드로 직접 변환됩니다).
특정 프로그램과 런타임 환경의 이러한 구분은 프로그램을 컴파일하는 다양한 방법에 의해 반영됩니다. 즉, 소스 코드를 모든 함수를 포함하는 오브젝트 파일로 컴파일하는 것과 전체 프로그램을 실행 가능한 바이너리로 컴파일하는 것입니다.오브젝트 파일에는 포함된 함수와 관련된 어셈블리 코드만 포함되어 실행 가능한 바이너리에는 런타임 환경을 구현하는 추가 코드가 포함됩니다.한편, 오브젝트 파일에는 링크를 통해 해결할 런타임 환경의 정보가 누락되어 있을 수 있습니다.한편 오브젝트 파일의 코드는 런타임시스템 내의 가정에 의존합니다.예를 들어 함수는 런타임 환경에서 사용되는 호출 규칙에 따라 특정 레지스터 또는 스택로케이션에서 파라미터를 읽을 수 있습니다.
또 다른 예는 런타임시스템과 대화하기 위해 Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)를 사용하는 경우입니다.이 API에 대한 콜은 일반 소프트웨어 라이브러리에 대한 콜과 동일하게 보이지만 콜 중 어느 시점에서 실행 모델이 변경됩니다.런타임 시스템은 라이브러리가 기술된 언어의 실행 모델과 다른 실행 모델을 구현합니다.일반 도서관의 코드를 읽는 사람은 도서관이 쓰여진 언어를 아는 것만으로도 도서관의 행동을 이해할 수 있을 것이다.그러나 런타임 시스템을 호출하는 API의 코드를 읽는 사람은 호출이 쓰여진 언어를 아는 것만으로 API 호출의 동작을 이해할 수 없습니다.어느 시점에서, 어떤 메카니즘을 개입시켜, 실행 모델은 콜이 기입된 언어의 것이 아니고, 런타임 시스템에 의해서 실장된 실행 모델로서 전환된다.예를 들어 트랩 명령은 실행 모델을 전환하는 방법 중 하나입니다.이 차이는 Pthreads와 같은 API 호출 실행 모델을 일반적인 소프트웨어 라이브러리와 구별하는 것입니다.Pthreads 콜과 소프트웨어 라이브러리 콜은 모두 API를 통해 호출되지만 Pthreads 동작은 콜의 언어로 이해할 수 없습니다.오히려 Pthreads 호출은 Pthreads 런타임 시스템에 의해 구현되는 외부 실행 모델을 실행합니다(이 런타임 시스템은 종종 OS 커널입니다).
극단적인 예로서 물리적 CPU 자체는 특정 어셈블리 언어의 런타임 시스템의 구현으로 볼 수 있습니다.이 뷰에서 실행 모델은 물리적 CPU 및 메모리 시스템에 의해 구현됩니다.예를 들어, 상위 언어용 런타임 시스템 자체는 일부 다른 언어를 사용하여 구현됩니다.이로 인해 CPU 자체 또는 마이크로코드층 이하의 로직이 최저 수준의 런타임시스템으로 동작하는 런타임시스템 계층이 생성됩니다.
고도의 기능
컴파일 또는 인터프리터드 언어 중에는 응용 프로그램 코드가 런타임 시스템과 직접 상호 작용할 수 있는 인터페이스가 있습니다.예를 들어,Thread
클래스(Java 언어)를 지정합니다.클래스를 사용하면 코드(한 스레드로 애니메이션)가 다른 스레드의 시작 및 중지와 같은 작업을 수행할 수 있습니다.일반적으로 태스크 스케줄링 및 리소스 관리 등 언어 동작의 핵심 측면에 액세스할 수 없습니다.
런타임 시스템에 의해 구현되는 상위 레벨 동작에는 화면에 텍스트를 그리거나 인터넷 연결을 하는 등의 작업이 포함될 수 있습니다.운영체제가 이러한 동작을 제공하는 경우도 종종 있습니다.사용 가능한 경우 런타임 시스템은 런타임 시스템의 호출을 운영체제의 호출로 변환하는 추상화 계층으로 구현됩니다.이것에 의해, 다양한 operating system에 의해서 제공되는 서비스의 복잡성이나 다양성이 숨겨집니다.이는 OS 커널 자체를 런타임 시스템으로 볼 수 있으며 OS 동작을 호출하는 OS 호출 집합을 런타임 시스템과의 상호작용으로 볼 수 있음을 의미합니다.
제한적으로 런타임 시스템은 프로세서의 명령 집합조차 숨기는 P 코드 시스템이나 가상 시스템과 같은 서비스를 제공할 수 있습니다.이것은 AWK와 같은 많은 인터프리터 언어 및 Java와 같은 일부 언어가 뒤따르는 접근방식입니다.이 언어들은 머신에 의존하지 않는 중간 표현 코드(바이트 코드 등)로 컴파일되어야 합니다.이 어레인지먼트에 의해, 언어의 실장 및 다른 머신에의 적응이 심플화되어, 리플렉션등의 고도의 언어 기능의 효율이 향상됩니다.또한 이 기능을 통해 어떤 머신에서도 동일한 프로그램을 명시적으로 다시 컴파일하지 않고도 실행할 수 있습니다.이 기능은 월드 와이드 웹의 확산 이후 매우 중요해지고 있습니다.실행 속도를 높이기 위해 일부 런타임 시스템은 기계 코드에 적시 컴파일을 제공합니다.
런타임 시스템의 현대적인 측면은 Pthreads의 뮤텍스 구조 및 OpenMP의 병렬 섹션 구조에서 나타나는 동작과 같은 병렬 실행 동작이다. 이러한 병렬 실행 동작을 가진 런타임 시스템은 프로토 런타임 접근법에 따라 모듈화될 수 있다.
역사
런타임 시스템의 주목할 만한 초기 예는 BASIC 및 Lisp용 인터프리터입니다.이러한 환경에는 가비지 콜렉터도 포함되어 있습니다.포스는 중간 표현 코드로 컴파일되도록 설계된 언어의 초기 예입니다. 런타임 시스템은 해당 코드를 해석하는 가상 머신이었습니다.이론적으로는 Donald Knuth의 MIX 컴퓨터를 예로 들 수 있습니다.
동적 메모리 할당을 지원하는 C 이후의 언어에서는 런타임 시스템에 프로그램의 메모리 풀을 관리하는 라이브러리가 포함되었습니다.
객체 지향 프로그래밍 언어에서 런타임 시스템은 종종 동적 유형 확인 및 메서드 참조 해결도 담당했습니다.
「 」를 참조해 주세요.

레퍼런스
- ^ a b Aho, Alfred V.; Lam, Monica Sin-Ling; Sethi, Ravi; Ullman, Jeffrey David (2007). Compilers: Principles, Techniques and Tools (2nd ed.). Boston, MA, USA: Pearson Education. p. 427. ISBN 978-0-321-48681-3.
The compiler must cooperate with the operating system and other systems software to support these abstractions on the target machine.
- ^ Blumofe, Robert David; Joerg, Christopher F.; Kuszmaul, Bradley C.; Leiserson, Charles E.; Randall, Keith H.; Zhou, Yuli (August 1995). "Cilk: An efficient multithreaded runtime system". PPOPP '95: Proceedings of the Fifth ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. Association for Computing Machinery (ACM): 207–216. doi:10.1145/209936.209958. S2CID 221936412. Archived from the original on 2020-02-11. Retrieved 2020-01-11.
- ^ Open Source Research Institute (2011). "Welcome to the Proto-Runtime Toolkit Home Page". The Proto-Runtime Toolkit (PRT). Archived from the original on 2020-02-11. Retrieved 2020-01-11.
- ^ Appel, Andrew Wilson (May 1989). "A Runtime System" (PDF). Princeton University. Archived from the original (PDF) on 2013-12-30. Retrieved 2013-12-30.
- ^ "Look What's New in the CP/M Applications Library for the IBM PC - Time Saver Offer - Get Concurrent CP/M Free" (PDF) (Product flyer). Pacific Grove, California, USA: Digital Research, Inc. 1983. Archived (PDF) from the original on 2020-02-11. Retrieved 2020-02-11.
[…] SpeedStart makes our software easier to use. All of the software in the CP/M Applications Library has the new SpeedStart version of the CP/M Operating System embedded right on the program disk. All you have to do to use these applications is to slip the disk into your IBM PC, turn on the system, and you are ready to go. This eliminates the need to load a separate operating system, change disks, and boot the applications program. SpeedStart software from the CP/M Applications Library also: […] Provides you with a free run-time version of CP/M […] Eliminates the need to install each new applications program […] Gives you compatibility with Digital Research's powerful 16-bit operating system, CP/M-86, and the state-of-the-art, multi-tasking Concurrent CP/M Operating System. […]
- ^ "DRI ships 128K version of Dr. Logo" (PDF). Micro Notes - Technical information on Digital Research products. Vol. 2, no. 2. Pacific Grove, CA, USA: Digital Research, Inc. May 1984. p. 4. NWS-106-002. Archived (PDF) from the original on 2020-02-11. Retrieved 2020-02-11.
[…] Dr. Logo first appeared on the retail market in fall of 1983 for the IBM PC and climbed to the top of the Softsel Hot List. The retail release included SpeedStart CP/M, an abridged version of CP/M that boots automatically when the system is turned on. […]
[1] - ^ Digital Research Inc. (February 1984). "Introducing software for the IBM PC with a $350 bonus!". BYTE (Advertisement). Vol. 9, no. 2. pp. 216–217. Retrieved 2013-10-22. [2][3]
- ^ Digital Research Inc. (1984-02-07). "Introducing software for the IBM PC with a $350 bonus!". PC Magazine (Advertisement). Vol. 3, no. 2. PC Communications Corp. pp. 50–51. ISSN 0745-2500. Archived from the original on 2020-02-11. Retrieved 2020-02-11.
- ^ Digital Research Inc. (December 1983). "Introducing software for the IBM PC with a $350 bonus!". PC Magazine (Advertisement). Vol. 2, no. 7. PC Communications Corp. pp. 306–307. ISSN 0745-2500. Archived from the original on 2020-02-11.
[…] Introducing SpeedStart - the exclusive load-&-go software system. The CP/M Applications Library offers more than just the best name-brand IBM PC software in the business. Each of our applications delivers the unmatched convenience of our exclusive SpeedStart single-disk system. SpeedStart is a special version of the powerful CP/M-86 operating system that's built into each of our software disks. When you're ready to work, just load the disk, turn on your IBM PC and go! SpeedStart eliminates the time-consuming task of loading a separate operating disk and then "installing" the software. In fact, the SpeedStart system gets you to work faster and easier than any other software available today. Best of all, it's yours at no extra cost. What's more, SpeedStart can be by-passed to run software under the IBM PC operating system of the future - the remarkable, multi-tasking Concurrent CP/M. […]
- ^ a b c Krautter, Thomas; Barnes, Chris J. (2006-06-14) [1999-12-29]. "GEM/4". GEM Development. Archived from the original on 2013-03-16. Retrieved 2020-01-12.
[…] the Artline 2 Operating System has been GEM/4 […] all changes to GEM/4 have been made in cooperation with Lee Lorenzen and Don Heiskell to keep compatibility with ventura publisher. […]
- ^ Elliott, John C. (1999-05-09). "A comparison between GEM and ViewMAX". Seasip.info. Archived from the original on 2016-11-07. Retrieved 2016-11-07.
- ^ Paul, Matthias R. (1997-04-13) [1993]. DRDOS6UN.TXT — Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von DR DOS 6.0. MPDOSTIP (in German) (60 ed.). Archived from the original on 2016-11-07. Retrieved 2016-11-07.
- ^ Paul, Matthias R. (1997-06-07) [1994]. NWDOS7UN.TXT — Zusammenfassung der dokumentierten und undokumentierten Fähigkeiten von Novell DOS 7. MPDOSTIP (in German) (85 ed.). Archived from the original on 2016-11-07. Retrieved 2016-11-07.
- ^ Georgiev, Luchezar I. (2008-11-02). "Runtime version of 4DOS, BATCOMP and batch file encryption". Narkive Newsgroup Archive. Newsgroup: comp.os.msdos.4dos. Archived from the original on 2020-01-11. Retrieved 2020-01-11.
추가 정보
- "NAME ENTX - Microsoft MS-DOS Computer Pascal runtime system control". 1.00. Microsoft Corp. 1981. Archived from the original on 2018-09-23. Retrieved 2018-09-23.