본문 바로가기
언어/C#

C#의 동작 원리

by alpacadabra 2023. 2. 3.

출처 : 위키백과

 

위 그림만으로도 거의 모든 설명이 가능할 듯한데, 요약하자면

 

1. C#은 컴파일러에 의해 Common Intermediate Language(CIL 혹은 IL, MSIL)로 컴파일된다.

2. IL은 Common Language Runtime(CLR) 상의 컴파일러에 의해 네이티브 코드로 컴파일된다.

 

라고 정리할 수 있다.

아래는 부연설명이다.

 


1.

Common Language Infrastructure(CLI)는 마이크로소프트에서 개발한 표준이다.

CLI는 다양한 요소들로 구성되어 있는데, 크게는 언어적인 요소와 시스템적인 요소로 구분할 수 있다.

.NET은 이러한 CLI의 가장 대표적인 구현체로서 각각의 요소를 IL과 CLR로 칭하고 있다.

 

2.

.NET을 기반으로 하는 언어들은 C#, VB, F# 등으로 매우 다양하다.

하지만 어떤 언어를 사용하든 IL로 컴파일된다는 점은 모두 동일하다.

따라서 .NET 환경은 언어에 구애되지 않는다.

 

3.

IL은 네이티브 코드가 아니므로 CLR 상의 Just-In-Time(JIT) 컴파일러를 한번 더 거쳐야 한다.

이 때의 컴파일은 플랫폼에 따라 다르게 진행되므로 .NET 기반의 언어들은 크로스 플랫폼으로 동작할 수 있다.

또한 CLR은 컴파일뿐만 아니라 보안, 메모리 관리 등의 작업도 해주기 때문에 C를 비롯한 네이티브 언어들에 비해 생산성이 높은 편이다.

그러나, 위 작업들은 모두 런타임에 진행되기 때문에 성능에 악영향을 끼치게 된다.

 

*JIT 컴파일은 말그대로 필요할 때마다 컴파일을 진행하는 방식이다.

인터프리트와 다른 점은 컴파일된 코드를 캐싱하여 재사용한다는 점에 있다.

댓글