Programming/C# - Window

C#/ CLR, IL, JIT 컴파일

esoog Polaris 2023. 6. 27. 00:19
반응형

CLR, IL, 및 JIT는 .NET Framework의 핵심 개념들입니다. 이들은 .NET 언어로 작성된 프로그램을 실행하는 데 사용되는 중요한 구성 요소입니다. 다음은 CLR, IL 및 JIT의 개념과 차이점에 대한 설명입니다.

1. CLR (Common Language Runtime):
CLR은 .NET Framework의 핵심 구성 요소로, .NET 언어로 작성된 응용 프로그램의 실행 환경을 제공합니다. CLR은 응용 프로그램의 메모리 관리, 예외 처리, 안전성 및 보안 기능 등을 담당합니다. 또한 CLR은 다양한 언어로 작성된 코드를 통합하여 실행하는 역할을 합니다. CLR은 중간 언어인 IL(Intermediate Language)을 실행하고, JIT 컴파일러를 사용하여 IL 코드를 해당 시스템의 네이티브 코드로 변환합니다.

2. IL (Intermediate Language):
IL은 .NET 언어로 작성된 코드가 컴파일되어 생성되는 중간 언어입니다. 다양한 .NET 언어(C#, VB.NET, F# 등)로 작성된 코드는 컴파일러에 의해 IL로 변환됩니다. IL은 플랫폼 독립적인 형태로 존재하며, 모든 .NET 언어가 공통으로 사용할 수 있는 중간 표현입니다. IL은 .NET 언어 코드를 간결하고 이식성이 높은 형태로 표현하며, CLR에서 실행 가능한 형태로 JIT 컴파일을 통해 변환됩니다.

3. JIT 컴파일 (Just-In-Time Compilation):
JIT 컴파일은 CLR이 IL 코드를 실행 가능한 기계어로 변환하는 프로세스입니다. CLR은 응용 프로그램이 실행될 때, 필요한 IL 코드 블록을 실제 기계어로 컴파일합니다. 이 컴파일 프로세스는 실행 시점에 필요한 코드만 컴파일하여 최적화된 성능을 제공합니다. JIT 컴파일은 코드의 지연된 컴파일을 의미하며, 해당 코드 블록이 처음 호출될 때 실행됩니다. 이후에는 변환된 기계어 코드를 실행하여 더 빠른 실행 속도를 제공합니다.

따라서, .NET 언어로 작성된 응용 프로그램은 CLR에 의해 실행됩니다. .NET 언어 코드는 컴파일되어 IL로 변환되며, CLR은 JIT 컴파일을 사용하여 필요한 IL 코드를 실행 가능한 기계어로 변환합니다. 이러한 구성 요소의 조합은 .NET Framework의 유연성과 이식성을 제공하며, 효율적인 실행 환경을 구축합니다.

* IL 중간언어 > CLR에서 실행 > JIT컴파일로 실행가능 기계어로 

728x90