📖C# 컴파일 과정?
C#으로 만든 프로그램은 CLR (Common Language Runtime)위에서 실행됩니다.
C#은 컴파일러 언어입니다.
과정은 다음과 같습니다.
- C# 컴파일러가 C# 코드 컴파일
- 컴파일 결과로 IL(Intermediate Language) 중간언어로 작성된 파일 생성
- 사용자가 IL파일 실행하여 CLR이 코드를 읽어 네이티브 코드(하드웨어가 읽을 수 있는 코드)로 컴파일
네이티브 코드로 컴파일하는 과정을 JIT라 부르며 JIT는 실행에 필요한 코드(IL)를 실시간으로 컴파일(네이티브 코드 생성)하는 과정을 말합니다.
눈여겨 보아야 할 것은 컴파일이 2번이나 된다는 것입니다. CLR은 C#뿐만 아니라 다른언어도 지원하도록 설계되어 있습니다. IL이 서로 다른언어를 이어주는 역할을 하고, CLR이 설치된 플랫폼에서(하드웨어, 운영체제에 따른) 최적화하여 컴파일한 후 실행되는 것입니다. CLR은 마이크로소프트 닷넷 이니셔티브의 가상 머신 구성 요소입니다.
CLR의 역할
- 언어를 동작시키
- 프로그램의 오류가 발생했을때 이를 처리하도록 도와주는 기능, 언어간의 상속 지원
- COM(Componet Object Model)과의 상호 운영성 지원
COM의 예 (.ocx, .dll, .exe ) - 자동 메모리 관리 (Garbage Collection)
프로그램에서 더 이상 쓰이지 않는 메모리를 쓰레기(Garbage)로 간주하여 수거(Collection)하는 기능
CLR의 장단점
장점: 플랫폼에 최적화된 코드를 만들어 낸다.
단점: 컴파일 비용이 든다 (IL에서 컴파일되고 또 생성된 파일을 네이티브 코드로 컴파일 하는 과정을 뜻함.)
아래 경로는 컴파일러가 설치된 경로입니다.
'Develop Dairy > C#' 카테고리의 다른 글
간단한 DI(Dependency Injection)의 이해&예제 (2021. 05. 28) (0) | 2021.05.28 |
---|---|
자동 구현 Property 알아보기. (2021. 05. 11) (0) | 2021.05.11 |
SPA 이해 (2021. 04. 26) (0) | 2021.04.26 |
Visual studio code(VSC) IDE로 Blazor WebAssembly 살펴보기 (2021. 03. 17) (2) | 2021.03.17 |
Blazor 호스팅 환경 시작하기 (WebAssembly) (2021. 03. 16) (0) | 2021.03.16 |