왜.... 오셨나요?

부끄러워요

개발관련공부자료

C#의 빌드과정

와피했는데 2023. 10. 6. 17:47

Java 가상머신 나온환경 : 가상머신이 나오기 이전에는 운영체제마다 다른 언어를 사용해서 다른 운영체제에서 호환이 되지않는 시대에 java에서 각 운영체제마다 jave언어를 호환하게 하는 가상머신을 제작하여 베포함 그래서 개발자가 java 원어만 배워도 여러 운영체제에서도 java언어를 사용할수 있게 함. 

 

Java의 가상머신 사용 구조


Java에서 가상머신을 개발한걸 보고 윈도우에서 C#용 가상머신을 만듬

 

어셈블리어 : 컴퓨터한테 직관적인 언어로 직접적으로 메모리 관리에 쓰이는 소스코드다.

 

 

C#의 빌드과정

C#도 어셈블리어 같은 C# compiler가 CIL code(Bytecode)로 변환해줌

 

.NET 환경의 컴파일 과정

- C#은 .NET 프레임워크의 의해 실행파일을 만든다.

- 메모리 관리, 쓰레드 컨트롤 등 간접적인 관리와 운용이 가상머신의 인해 관리된다.

- CLR은 런타임에 JIT(Just-in-Time) 방식으로 운영체제가 이해할 수 있는 Native Code로 변환한다.

- 가상머신이 데이터 저장 정보를 갖고있어서 다른 타입으로 접근시 저장된 데이터에 접근(리플렉션 기능) 해서 비교해서 거부하는 기능도 있음

 

리플렉션(Reflection) : 구체적인 클래스 타입을 알지 못하더라도 그 클래스의 메서드, 타입,  변수들에 접근할 수 있도록 해주는 .NET의 기능

* ex : startCountine 함수를 사용시 (" ")에 클래스내 함수이름을 적으면 가상머신이 클래스내 같은이름의 함수를 찾는다

- 단점 : 가상머신에서 저장된 데이터를 접근해서 읽어야 하기 때문에 느리다는 단점이 있음

 

제네릭(generic) : 데이터의 타입(data type)을 일반화함.

- 상속된 객체정보를 알수있음

- 리플렉션이 느리다는 단점을 보완하기 위해 제네릭을 대신사용 하는 경우도 있다.

- 딕셔너리 자료구조에서 자주 쓰임

- C++에도 거의 같은 용도을 가진 템플릿이라는게 있음(제네릭은 런타임형식, 템플릿은 컴파일)

* ex : <T>사용

 

 

 

 

 

 

 

'개발관련공부자료' 카테고리의 다른 글

유니티 기술면접  (0) 2023.10.06
버블정렬  (0) 2023.10.06
알고리즘  (0) 2023.10.06
오버헤드(Overhead)에 관하여  (0) 2023.10.05
자료구조  (0) 2023.10.05