해당 글은 광고를 포함하고 있습니다.이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.
.NET 응용 프로그램이 어떻게 컴파일 되는지 알아야 개발하는데 도움이 되지 않을까?
우선 각각 C# , VB 각각의 언어로 프로그램을 작성하면 해당 컴파일은 언어에 맞게 컴파일 하여 exe를 생성한다.
여기서 Intermediate Language 중급언어 IL 코드는 반 컴파일 또는 부분 컴파일 또는 CPU 독립적 인 부분 컴파일 코드입니다.
CLR 의 핵심 기능은 다음과 같다
- Security Manager
- JIT Compiler
- Memory Manager
- Garbage Collector
- Exception Manager
- Common Language Specification (CLS)
- Common Type System (CTS)
Security Manager
보안관리자는 크게 두가지로 나뉩니다.
- CAS (코드 액세스 보안)
- CV (코드 검증)
이 두 구성 요소는 기본적으로 사용자가 어셈블리에 액세스 할 수 있는지 현재 사용자의 권한을 확인하는 데 사용됩니다. CLR은 또한이 코드에 어떤 종류의 권한 또는 어떤 종류의 권한이 있는지, 운영 체제에서 안전하게 실행할 수 있는지 여부도 확인합니다. 따라서 기본적으로 이러한 유형의 검사는 보안 관리자가 유지 관리합니다.
JIT Compiler
JIT 컴파일러는 MSIL 코드를 시스템에서 실행되는 기본 코드로 변환합니다. 네이티브 코드는 시스템 하드웨어에서 직접 이해할 수 있습니다. JIT는 실행 직전에 코드를 컴파일 한 다음이 변환을 메모리에 저장합니다.
Memory Manager
메모리 관리자 구성 요소는 응용 프로그램에서 사용할 변수 및 오브젝트에 필요한 메모리를 할당합니다.
Garbage Collector
닷넷 응용 프로그램이 실행되면 많은 개체가 만들어집니다. 특정 시점에서 이러한 객체가 필요하지 않을 수 있습니다. 따라서 가비지 콜렉터는 작은 루틴 일 뿐이며 백그라운드 프로세스 스레드라고 말하고 애플리케이션에서 현재 사용하지 않는 오브젝트를 식별하고 해당 오브젝트의 메모리를 할당 해제하는 백그라운드 프로세스 스레드라고 말할 수 있습니다.
Exception Manager
이 구성 요소는 프로세서를 리디렉션하여 catch를 실행하거나 런타임에 예외가 발생할 때마다 차단합니다.
Common Type System (CTS)
.NET Framework는 C #, VB.NET, J # 등과 같은 많은 프로그래밍 언어를 지원합니다. 모든 프로그래밍 언어에는 고유 한 데이터 형식이 있습니다. 한 프로그래밍 언어는 다른 프로그래밍 언어 데이터 형식을 이해할 수 없습니다. 그러나 한 언어로 코딩하여 다른 언어로 호출하려는 상황이있을 수 있습니다. 이러한 언어 간의 원활한 통신을 보장하기 위해 가장 중요한 것은 두 가지 언어로 정의 된 유형이 공통 데이터 유형으로 컴파일되도록하는 공통 유형 시스템 (CTS)이 있어야한다는 것입니다.
CLR은 모든 프로그래밍 언어의 데이터 유형을 실행합니다. 이것은 CLR이 모든 프로그래밍 언어에 공통 인 자체 데이터 유형을 포함하기 때문에 가능합니다.
컴파일시 모든 언어 별 데이터 유형이 CLR의 데이터 유형으로 변환됩니다. .NET의 모든 프로그래밍 언어에 공통적 인이 CLR 데이터 형식 시스템을 CTS (Common Type System)라고합니다.
CLS (Common Language Specification)
CLS는 CLR의 일부입니다. .NET은 많은 프로그래밍 언어를 지원하며 모든 프로그래밍 언어에는 언어 사양으로 알려진 코드 작성을위한 고유 한 구문 규칙이 있습니다. 즉, 모든 프로그래밍 언어에는 자체 언어 사양이 있습니다.
'ASP.NET' 카테고리의 다른 글
c# 문자열 의 깊이 (0) | 2020.06.26 |
---|---|
2. .NET Framework 란? (0) | 2020.04.20 |
7. 닷넷 기초 (이미지 컨트롤) (0) | 2018.02.25 |
6. 닷넷 기초 (현재시간 출력하기) (0) | 2018.02.25 |
5. 닷넷 기초 (표준 컨트롤러) (0) | 2018.02.25 |