본문 바로가기

[C#] CLR(Common Language Runtime)

C#
·
2019. 11. 1. 10:41
반응형

CLR(Common Language Runtime)

출처 : https://stackoverflow.com/questions/4184162/what-is-the-difference-between-clr-and-dlr-in-c

CLR은 C# 프로그램이 실행되는 환경이고 .NET 프레임워크의 실행을 관리합니다. 자바를 아시는 분들은 CLR은 자바 가상 머신(Java Virtual Machine)과 비슷하다고 생각하시면 됩니다.

 

C#으로 만든 실행파일은 네이티브 코드로 되어있지 않고 IL(Intermediate Language, 중간언어)로 되어있기 때문에 운영체제가 이해할 수 없습니다. C# 컴파일러는 C#으로 작성한 코드를 IL로 만들고 CLR은 프로그램 실행 시 IL을 운영체제가 이해할 수 있는 네이티브 코드로 바꿔줍니다. IL을 네이티브 코드로 바꾸는 것을 JIT(Just In Time, 적시 컴파일)이라고 하는데 필요한 코드를 실행할 때마다 실시간으로 컴파일해서 실행한다는 의미입니다.

 

C# 컴파일러가 IL을 만들고 CLR은 IL을 네이티브 코드로 컴파일하는 번거로운 과정을 거치는 이유는 CLR이 플랫폼에 최적화된 코드를 만들기 때문입니다. 또한 .NET 프레임워크가 설치되어 있다면 어떤 플랫폼이던 상관없이 프로그램을 실행할 수 있습니다.

 

CLR의 장점은 IL을 네이티브 코드로 변환하는것 뿐만 아니라 메모리 관리, 타입 관리, 예외 처리, 가비지 컬렉션, 쓰레드 관리 등 추가적인 서비스를 제공합니다.

단점은 코드가 클 경우 IL을 네이티브 코드로 변환하는 컴파일 비용이 많을 수 있습니다.

 

참고
 

Common Language Runtime (CLR) in C# - GeeksforGeeks

CLR is the basic and Virtual Machine component of the .NET Framework. It is the run-time enviornment in the .NET Framework that runs the codes… Read More »

www.geeksforgeeks.org

 

Common Language Runtime - Wikipedia

The Common Language Runtime (CLR), the virtual machine component of Microsoft .NET framework, manages the execution of .NET programs. Just-in-time compilation converts the managed code (compiled intermediate language code), into machine instructions which

en.wikipedia.org

반응형
블로그 이미지
Frontend Engineer

댓글