Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

따..딱히 공부하려고 포스팅하는 건 아니니까..!

Native(Unmanaged) Code vs Managed Code 본문

프로그래밍

Native(Unmanaged) Code vs Managed Code

보즈리 2015. 4. 20. 14:40



 Native Code에는 C, C++ 등이 있고, Managed Code에는 C#, Java 등이 있다.

 두 코드에는 큰 차이점이 있는데, 이 차이점 때문에 두 코드는 섞이기 어렵다.


 두 코드의 차이점은 다음과 같다.


1) 인터프리터 필요성의 유무

2) 자체 동적 메모리 할당/해제



1) Managed Code는 인터프리터를 필요로 한다.


Native Code는 OS에 의해 컴파일되어 중간 단계없이 실행파일이 만들어진다.

- 과정 : Native Code -> 컴파일 -> 링크 -> 실행파일


Managed Code는 중간 단계에서 인터프리터에 의해 기계 언어로 해석하는 단계를 거친다. 

- 과정 : Managed Code -> 중간 언어(IL, Intermedinate Language) -> 인터프리터 -> 실행파일


(참고 : C#의 인터프리터 - CLR(Common Language Runtime), Java의 인터프리터 - 자체 VM머신)



2) Managed Code는 자체적으로 동적 메모리를 할당/해제를 한다.


Native Code는 메모리 관리를 사용자가 직접 해주어야한다.

그에 반해 Managed Code는 자체적으로 Garbage Collection이란 기능이 있어 메모리 관리를 자체적으로 해준다.



 이러한 두가지 차이점 때문에 Native Code와 Managed Code는 섞이기 힘들다. Native Code로 작성한 DLL 파일을 Managed Code에 적용시키려고 해도 위와 같이 두 코드의 컴파일 원리가 다르기 때문에 컴파일 되지 않는다.


 이와같은 문제를 조금이나마 해결하기 위해 접근하기 쉽고 이해하기 쉬운 Managed Code를 더 지향하는 추세인 탓에 요즘에는 Managed C++이 나오고 있다.




참고 - Managed C++에 대한 글

http://www.borlandforum.com/impboard/attach/0000044172/MC++.pdf

Comments