-
[C# / .NET] CLR이란?.NET 2022. 4. 6. 11:03
C#으로 만든 프로그램은 CLR(Common Language Runtime) 위에서 실행되며, 자바 가상 머신과 비슷한 역할을 합니다.
그림처럼 CLR은 .NET 라이브러리와 함께 OS 위에 설치됩니다.
네이티브 코드로 작성된 프로그램들은 운영체제가 직접 실행할 수 있지만, C# 컴파일러가 만들어낸 실행 파일은 하드웨어가 이해할 수 없는 코드로 구성되어 있기 때문에 실행할 수 없습니다.
C# 컴파일러는 C# 소스 코드를 컴파일해서 IL(Intermediate Language)이라는 중간 언어로 작성된 실행 파일을 만들어 냅니다.
사용자가 이 파일을 실행시키면 CLR이 중간 코드를 읽어 들여 다시 하드웨어가 이해할 수 있는 네이티브 코드로 컴파일한 후 실행시킵니다.
이것을 JIT(Just In Time) 컴파일이라고 부르며, 실행에 필요한 코드를 실행할 때마다 실시간으로 컴파일해서 실행한다는 뜻입니다.
CLR은 C#뿐만 아니라 다른 언어도 지원하도록 설계되어있기 때문에, 두번씩이나 컴파일하는 복잡한 과정을 거칩니다.
CLR은 이외에도 아래와 같은 기능을 제공합니다.
- 언어간의 상속 지원
- COM과의 상호 운영성 지원
- 자동 메모리 관리(=가비지 콜렉션, Garbage Collection) 등의 기능