태그: CLR

 .NET Framework를 구성하는 핵심 요소는 CLR(공용 언어 런타임)입니다. CLR은 코드들을 관리하는 주요 역할을 담당합니다. 이와 같은 코드를 관리 코드라고 하며 CLR에 의해 관리되는 코드들은 형식이 안전함을 보장받게 됩니다. CLR에서는 형식 안전성 이외에도 메모리 관리, 쓰레드 실행 및 코드 실행과 기타 시스템 서비스 등을 관리합니다.

 그리고, .NET Framework에서는 CTS(공용 형식 시스템)을 통해 견고한 코드를 보장하기 위해 형식에 대해 약속하고 있습니다. CTS는 관리되는 모든 형식은 자기 기술적이며 이 때문에 명확하게 개체들을 사용할 수 있습니다.

 또한, CLS(공용 언어 사양)를 제시를 함으로써 자신이 만든 라이브러리를 다른 언어를 사용하는 개발자가 사용할 수 있게 점검해 줍니다. .NET 프레임워크에서 동작 가능한 프로그램을 작성할 때에는 C#언어를 비롯하여 Managed C++, Visual Basic.NET을 비롯하여 다양한 언어로 개발이 가능하며 CLS를 따른다면 교차 언어 개발도 가능합니다.

 C# 소스파일을 컴파일하면 C# 컴파일러에 의해 .NET 어셈블리(.NET 프레임워크에서 동작 가능한 이진 파일)가 작성됩니다. 그리고 이를 실행하면 .NET 프레임워크의 핵심 역할을 담당하는 CLR에 의해 .NET 어셈블리를 로드하고 Jitter(Just In Time Compiler)에 의해 MSIL(.NET 어셈블리내에 코드를 MSIL이라 부름)코드를 실제 운영체제에서 동작 가능한 기계어 명령으로 변환하여 가동됩니다. 그리고 CLR은 참조하고 있는 다른 .NET 어셈블리를 로딩하는 작업과 .NET 공통 클래스 라이브러리를 사용하는 부분도 담당합니다.

 .NET Framework에서 C# 프로그램 동작 구조
[그림 2] .NET Framework에서 C# 프로그램 동작 구조