CLR (Common Language Runtime) 이란?

  • C#으로 만든 프로그램이 실행되는 환경.
  • Common Language Runtime인 이유는, 이 런타임이 C#뿐 아니라 CLS Common Language Specification 규격을 따르는 모든 언어로 작성된 프로그램을 지원하기 때문이다.
  • CLR은 단순히 각 언어로 작성된 프로그램의 실행뿐 아니라 서로 다른 언어로 작성된 언어 사이의 호환성을 제공하기도 한다.
  • C#으로 만든 프로그램은 CLR(Common Language Runtime) 위에서 실행된다.
  • CLR은 .NET 라이브러리와 함께 OS위에 설치된다.
  • 네이티브코드로 작성된 프로그램들은 운영체제가 직접 실행할수 있지만, C# 컴파일러가 만들어낸 실행 파일은 하드웨어가 이해할 수 없는 코드로 구성되어 있기 때문에 실행할 수 없다.
  • C# 컴파일러는 C# 소스 코드를 컴파일해서 IL(Intermediate Language)이라는 중간 언어로 작성된 실행 파일을 만들어 낸다.
  • 사용자가 이 파일을 실행시키면 CLR이 중간코드를 읽어 들여 다시 하드웨어가 이해할 수 있는 네이티브 코드로 컴파일한 후 실행시킨다. 이것을 JIT(Just In Time) 컴파일이라고 부르는데, 우리말로 '적시 컴파일'이라고 한다.

 

  • JIT컴파일이란, 실행에 필요한 코드를 실행할 때마다 실시간으로 컴파일해서 실행한다는 뜻이다.
  • C#이 동작하는 환경이자 엔진인 CLR은 C#뿐만 아니라 다른 언어도 지원하도록 설계되었다.
  • 서로 다른 언어들이 만나기 위한 지점이 바로 IL이라는 중간 언어이고, 이 언어로 쓰인 코드를 CLR이 다시 자신이 설치된 플랫폼엧 최적화시켜 컴파일한 후 실행하는 것이다.
  • 이 방식의 장점은 바로 플랫폼에 최적화된 코드를 만들어낸다는 것이며, 단점은 실행 시 이루어지는 컴파일비용의 부담이다.
  • 내가 만든 프로그램이 컴파일 비용 부담 없이 어떤 기계에서돞 ㅕㅇ균적인 성능을 내는 것과 컴파일 비용이 조금 부담스럽긴 해도 기계에 최적화되어 최고의 성능을 내는 것. 어느쪽이 더 나은지는 여러분이 직접 판단해보기 바란다.

  • CLR은 단순히 C#이나 기타 언어들을 동작시키는 환경 기능 외에도, 프로그램의 오류가 발생했을 때 이를 처리하도록 도와주는 기능, 언어 간의 상속 지원, COM과의 상호 운영성 지원, 그리고 자동 메모리 관리 등의 기능을 제공한다.
  • 이 중에서 자동 메모리 관리는 어려운 말로 가비지 컬렉션이라고 하는데, 프로그램에서 더 이상 사용하지 않는 메모리를 쓰레기(Garbage)로 간주하고 수거(Collection)하는 기능을 말한다.

'📕 Programing > C#' 카테고리의 다른 글

프로퍼티  (0) 2025.03.23
[개념] 박싱(Boxing)과 언박싱(Unboxing)  (0) 2025.03.15
WinForm) ControlBox  (0) 2024.10.27
JObject의 key 값을 추출하는 방법  (0) 2024.09.30
MaterialSkin 적용 방법  (0) 2024.08.20

Designed by JB FACTORY