... | @@ -26,12 +26,12 @@ |
... | @@ -26,12 +26,12 @@ |
|
5. CLI명세를 기반으로 .NET Framework에서 제공하는 Virtual Execution System을 CLR이라 한다.
|
|
5. CLI명세를 기반으로 .NET Framework에서 제공하는 Virtual Execution System을 CLR이라 한다.
|
|
6. CLI명세를 기반으로 만들어진 실행환경이 있다면, .NET Framework에서 생성되는 IL코드를 실행 할 수 있다.
|
|
6. CLI명세를 기반으로 만들어진 실행환경이 있다면, .NET Framework에서 생성되는 IL코드를 실행 할 수 있다.
|
|
(ex. 모노(mono))
|
|
(ex. 모노(mono))
|
|
<br>
|
|
|
|
##### Common type system (CTS) is:
|
|
##### Common type system (CTS) is:
|
|
1. 공용 언어가 지켜야 할 타입(클래스, 구조체, 인터페이스, 형 선언 등)의 표준 규격이다. 그렇다고 해서 문법은 아니다.
|
|
1. 공용 언어가 지켜야 할 타입(클래스, 구조체, 인터페이스, 형 선언 등)의 표준 규격이다. 그렇다고 해서 문법은 아니다.
|
|
예를 들면 C#은 int8 형을 가지고 있고, VB.net은 integer형이 있다.
|
|
예를 들면 C#은 int8 형을 가지고 있고, VB.net은 integer형이 있다.
|
|
그런데 이것이 .net 컴파일러를 거치면서 CTS에서 정의된 INT32형태로 동일하게 사용이 된다
|
|
그런데 이것이 .net 컴파일러를 거치면서 CTS에서 정의된 INT32형태로 동일하게 사용이 된다
|
|
<br>
|
|
|
|
##### Common Language Specification (CLS) is:
|
|
##### Common Language Specification (CLS) is:
|
|
1. CTS의 sub-set이며 공용언어간 호환이 되기 위해 준수해야 하는 최소한의 언어 규칙이다.
|
|
1. CTS의 sub-set이며 공용언어간 호환이 되기 위해 준수해야 하는 최소한의 언어 규칙이다.
|
|
2. 공용 언어는 CTS전체를 구현할 필요는 없지만 CLS에 정의된 내용만큼은 구현을 해야 한다.
|
|
2. 공용 언어는 CTS전체를 구현할 필요는 없지만 CLS에 정의된 내용만큼은 구현을 해야 한다.
|
... | @@ -40,7 +40,7 @@ |
... | @@ -40,7 +40,7 @@ |
|
* 다른 언어와 함께 사용되는 영역에 한해서만 CLS에 맞춰 구현할 수 있다.
|
|
* 다른 언어와 함께 사용되는 영역에 한해서만 CLS에 맞춰 구현할 수 있다.
|
|
4. 예를 들면 c++의 경우 다중상속을 지원하지만, .NET Framework에서는 다중상속을 지원하지 않는다.
|
|
4. 예를 들면 c++의 경우 다중상속을 지원하지만, .NET Framework에서는 다중상속을 지원하지 않는다.
|
|
따라서 다중상속으로 정의된 c++객체는 c#에서는 사용할 수 없다.
|
|
따라서 다중상속으로 정의된 c++객체는 c#에서는 사용할 수 없다.
|
|
<br>
|
|
|
|
##### Meta-data is:
|
|
##### Meta-data is:
|
|
1. CLI에서 meta-data는 CTS에 정의된 타입을 참조하고 설명하기 위해 사용된다.
|
|
1. CLI에서 meta-data는 CTS에 정의된 타입을 참조하고 설명하기 위해 사용된다.
|
|
A. Type Descriptions
|
|
A. Type Descriptions
|
... | @@ -60,12 +60,12 @@ |
... | @@ -60,12 +60,12 @@ |
|
2. 임의의 특정 언어에 독립적인 방식으로 저장(유지)된다.
|
|
2. 임의의 특정 언어에 독립적인 방식으로 저장(유지)된다.
|
|
3. Reflection이라는 실행 중에 클래스나 객체의 타입 정보를 조사하는 기능을 통해 meta-data를 사용할 수 있다.
|
|
3. Reflection이라는 실행 중에 클래스나 객체의 타입 정보를 조사하는 기능을 통해 meta-data를 사용할 수 있다.
|
|
이 기능을 사용하면 실행 중에 다른 모듈에 선언된 인스턴스를 생성할 수 있고 메서드를 호출할 수도 있다.
|
|
이 기능을 사용하면 실행 중에 다른 모듈에 선언된 인스턴스를 생성할 수 있고 메서드를 호출할 수도 있다.
|
|
<br>
|
|
|
|
##### Virtual Execution System (VES) is:
|
|
##### Virtual Execution System (VES) is:
|
|
1. CLI에 맞춰 작성된 프로그램을 로드하고 실행하는 시스템이다.
|
|
1. CLI에 맞춰 작성된 프로그램을 로드하고 실행하는 시스템이다.
|
|
2. 코드가 실행함에 있어 필요로 하는 모듈들을 연결하기 위해 meta-data를 사용하여 manage code 및 data를 실행한다.
|
|
2. 코드가 실행함에 있어 필요로 하는 모듈들을 연결하기 위해 meta-data를 사용하여 manage code 및 data를 실행한다.
|
|
3. .NET Framework에서 CLR을 통해 제공한다.
|
|
3. .NET Framework에서 CLR을 통해 제공한다.
|
|
<br>
|
|
|
|
##### Common Intermediate Language (CIL) is:
|
|
##### Common Intermediate Language (CIL) is:
|
|
1. Virtual Execution System (VES)에 의해 해석되는 중간 언어로 자바의 byte-code에 해당한다.
|
|
1. Virtual Execution System (VES)에 의해 해석되는 중간 언어로 자바의 byte-code에 해당한다.
|
|
2. machine독립적인 코드이다.
|
|
2. machine독립적인 코드이다.
|
... | @@ -78,8 +78,7 @@ |
... | @@ -78,8 +78,7 @@ |
|
CLI명세를 기반으로 Microsoft에서 작성한 Virtual Execution System을 CLR이라 한다.
|
|
CLI명세를 기반으로 Microsoft에서 작성한 Virtual Execution System을 CLR이라 한다.
|
|
|
|
|
|
.Net Framework의 핵심 중의 핵심으로 코드를 실행하고 메모리를 자동 관리하며 형식의 안정성을 보장하는 등 여러 가지 실행시간 서비스(환경)를 제공한다.
|
|
.Net Framework의 핵심 중의 핵심으로 코드를 실행하고 메모리를 자동 관리하며 형식의 안정성을 보장하는 등 여러 가지 실행시간 서비스(환경)를 제공한다.
|
|
<br><br>
|
|
<br>
|
|
|
|
|
|
##### A common runtime for all .NET languages
|
|
##### A common runtime for all .NET languages
|
|
1. Common type system (CTS)
|
|
1. Common type system (CTS)
|
|
2. Common metadata
|
|
2. Common metadata
|
... | @@ -87,17 +86,16 @@ CLI명세를 기반으로 Microsoft에서 작성한 Virtual Execution System을 |
... | @@ -87,17 +86,16 @@ CLI명세를 기반으로 Microsoft에서 작성한 Virtual Execution System을 |
|
4. 메모리 할당과 garbage collection
|
|
4. 메모리 할당과 garbage collection
|
|
5. Intermediate Language (IL) 코드의 실행과 보안
|
|
5. Intermediate Language (IL) 코드의 실행과 보안
|
|
|
|
|
|
<br>
|
|
|
|
##### CLR Execution model
|
|
##### CLR Execution model
|
|
todo-이미지 추가
|
|
todo-이미지 추가
|
|
<br>
|
|
|
|
##### 실행 엔진
|
|
##### 실행 엔진
|
|
1. Compiles Microsoft Intermediate Language (MSIL) into native code
|
|
1. Compiles Microsoft Intermediate Language (MSIL) into native code
|
|
2. Handles garbage collection
|
|
2. Handles garbage collection
|
|
3. Handles exception
|
|
3. Handles exception
|
|
4. Enforces code access security
|
|
4. Enforces code access security
|
|
5. Handles verification
|
|
5. Handles verification
|
|
<br>
|
|
|
|
##### CLR의 장점
|
|
##### CLR의 장점
|
|
1. Inter-operation between managed code and unmanaged code (COM, DLLs)
|
|
1. Inter-operation between managed code and unmanaged code (COM, DLLs)
|
|
2. Managed code environment
|
|
2. Managed code environment
|
... | @@ -141,10 +139,10 @@ C#.VB.Net 및 다른 .Net 언어들로 짜여진 소스코드를 컴파일 하 |
... | @@ -141,10 +139,10 @@ C#.VB.Net 및 다른 .Net 언어들로 짜여진 소스코드를 컴파일 하 |
|
3. metadata를 가진다.
|
|
3. metadata를 가진다.
|
|
4. 타입의 불법적인 사용으로 부터 보호된다.(type-safe)
|
|
4. 타입의 불법적인 사용으로 부터 보호된다.(type-safe)
|
|
5. 플랫폼 독립적이다.(Windows, Linux, Max OS x, etc.)
|
|
5. 플랫폼 독립적이다.(Windows, Linux, Max OS x, etc.)
|
|
<br>
|
|
|
|
##### Managed data is:
|
|
##### Managed data is:
|
|
1. garbage collection를 통해 자동으로 할당되고, 해제되는 데이터
|
|
1. garbage collection를 통해 자동으로 할당되고, 해제되는 데이터
|
|
<br>
|
|
|
|
##### Unmanaged code is:
|
|
##### Unmanaged code is:
|
|
1. 메모리 및 타입의 불법 사용에 대한 보호가 없다. (No protection of memory and type-safety)
|
|
1. 메모리 및 타입의 불법 사용에 대한 보호가 없다. (No protection of memory and type-safety)
|
|
2. metadata가 없다.
|
|
2. metadata가 없다.
|
... | | ... | |