HolaJun

35 object(s)
 

C#기본정리

C#, .NET Framework 기본 정리

C# 특징

C# 실행 과정ㄴ

img

1~2. C# 코드 작성

  1. C# 컴파일러(csc.exe)가 컴파일 수행. VB.NET으로 작성했다면 vbc.exe라는 컴파일러가 동작. 즉 언어별 컴파일러가 따로 존재
  2. 컴파일의 결과물로 exe 또는 dll의 파일이 나왔는데, .NET에서는 이를 Assembly라고 부른다.
    • 닷넷 어셈블리의 가장 큰 특징중 하나는 프로그램 코드 이외에 자기자신을 설명하는 메타데이터 정보가 포함되어 있다.
    • exe 확장자라고해서 바로 실행할 수 있는 결과물은 아니다
    • MSIL(Microsoft Intermediate Language)
      • 컴퓨터가 해석 가능한 원시 코드(Native Code)가 되기 전 중간 단계의 언어(Java의 ByteCode)
      • exe or dll 파일에는 소스코드 내의 클래스를 설명하는 메타데이터와 매니페스트 정보가 포함됨
  3. MSIL(=IL)코드를 실행하고자 함. 이전까지는 컴파일 환경이었음.
  4. CLR영역(.NET Framework). 실행을 위해 IL코드가 CLR로 호스트될 때, 제일 처음 CLR 내부의 Class Loder에 의해 어셈블리 내 클래스들의 레이아웃 로드와 메타데이터 및 사용된 클래스 라이브러리 등을 로드하여 각종 과정(Type Check, Marshalling)을 거친 뒤 메모리에 로드됨.
  5. JIT(Just-In-Time, jitter) 컴파일러는 메모리에 올라간 어셈블리를 컴퓨터가 이해할 수 있도록 원시코드(Native Code)로 변환해줌.
  6. 7의 과정을 통해 탄생한 원시코드(Native Code)
  7. JIT컴파일러에 의해 컴파일된 원시코드는 다음의 실행을 위해 메모리에 캐시됨. 동일한 어셈블리가 다시 실행될때까지 지금의 과정을 생략함으로써 실행속도 향상. 다음번의 실행시는 9번부터 실행됨.
  8. 실행

.NET Framework 정의