CLR의 정의

CLR(Common Language Runtime)은 .NET 어플리케이션의 실행을 관리하는 실행환경이다. CLR은 OS와 .NET 어플리케이션 사이에 있다고 생각하면 된다.

image-20220629193209151

[그림 출처: C#/.NET - 50 Essential Interview Questions (Junior Level) > section 3 중]

CLR에 의해 .NET 어플리케이션이 실행된다. .NET 어플리케이션이 실행되는 동안 CLR의 역할은 아래와 같다.

  • JIT (Just In TIme) compiliation : CIL이 2진 코드로 번역하는 기능을 한다.
  • 메모리 관리 : CLR은 어플리케이션에 필요한 모든 메모리를 할당한다. 가비지 수집 기능도 수행한다.
  • 예외 핸들링
  • 스레드 관리 : CLR은 멀티 스레드들이 문제없이 작동하도록 관리한다.
  • 타입 안정성 : .NET 어플리케이션을 빌드할 수 있는 언어들(C#, F#, Visual Basic 등)에 정의된 타입들을 판별할 수 있다.

CIL의 정의

CLI(Common Language Infrastructure)은 닷넷 프레임워크, 모노 등 중심부를 형성하는 실행코드와 런타임 환경을 설명하기 위한 기준이다.

CIL과 CRL의 관계를 비유하자면, CIL은 집을 짓기 위한 설계도(창문을 어떻게 달고, 배관은 어디에 설치하고 등등)의 역할을 하고, CRL은 마이크로소프트에서 개발한 집으로 이해하면 둘의 관계를 쉽게 이해할 수 있다.

.NET 어플리케이션의 실행 순서

순서 1. 프로그래머가 프로그래밍한다.

순서 2. 컴파일러에 의해 CIL로 컴파일된다.

순서 3. CLR이 프로그램을 실행한다.

순서 4. CLR의 JIT이 CIL을 2진 코드로 번역한다.

순서 5. CLR이 .NET 어플리케이션에 필요한 low-level의 기능을 수행한다. (메모리 할당, 가비지 수집 등)

CLR의 종료 시기는 .NET 어플리케이션이 종료될 때이다.

태그: ,

카테고리:

업데이트:

댓글남기기