CLR (Common Language Runtime) 이란?
- 📕 Programing/C#
- 2025. 3. 14.
- 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 |