programing

네이티브 코드와 관리 코드의 차이점은 무엇입니까?

projobs 2021. 1. 17. 10:24
반응형

네이티브 코드와 관리 코드의 차이점은 무엇입니까?


예를 들어 GlowCode 프로파일 러 웹 사이트를 보면 다음과 같이 표시됩니다.

"GlowCode 6.2 및 x64 프로필 기본, 관리 및 혼합 C ++, C #, .NET 코드"

무슨 뜻입니까?


네이티브 코드는 메모리가 "관리"되지 않는 코드입니다. 즉, 메모리가 해제되지 않고 (예 : C ++ '삭제 및 C가 해제 됨) 참조 계산, 가비지 수집이 없습니다. 짐작했듯이 관리 코드는 메모리가 비어 있고 할당 된 코드, 가비지 수집 및 기타 장점입니다.

혼합 코드는 관리되지 않는 계층을 호출하는 관리 코드가있는 경우입니다. 일반적으로 관리되지 않는 순수한 C ++ DLL이 있고 P / invoke를 사용하여 .NET에서 호출 할 때.


네이티브 코드는 OS와 직접 작동하도록 컴파일됩니다. 그러나 관리 코드는 미리 컴파일되지만 (Java로 말하는 바이트 코드) Just In Time 컴파일러에서 런타임에 네이티브 코드로 처리됩니다. 관리 코드는 VM이 ​​실제로 사용할 때까지 기계 코드가 생성되지 않기 때문에 다른 운영 체제에서 실행될 가능성이 있다는 흥미로운 부작용이 있습니다. 이렇게하면 Windows에서 .NET 앱을 실행할 수 있으며 Mono 런타임이 설치된 Linux 또는 Mac에서도 실행할 수 있습니다. 이식성은 현재 Java만큼 깨끗하지는 않지만 (Microsoft의 자연적으로 폐쇄 된 아키텍처로 인해) 개념은 그대로 유지됩니다.

관리되지 않는 앱을 ​​실행중인 경우 지정된 OS / 하드웨어에 대해 실행되도록 코드가 컴파일되었습니다. 다른 OS / 명령 세트에 대한 이식성은 손실되며 실행하려면 다시 컴파일해야합니다.


원시 코드는 실행중인 컴퓨터의 "기본"기계어로 작성되며 프로세서에 의해 직접 실행됩니다.

관리 코드는 다른 프로그램을 실행 (즉, 관리)해야하는 특수 언어로 작성됩니다. 이 다른 프로그램은 특수 언어를 해석하기 때문에 종종 통역사라고합니다.

C 및 C ++ 프로그램은 기본입니다.

Java 및 C # (및 해당 문제에 대한 모든 .NET 언어)이 관리됩니다.

Managed C ++는 .NET 인터프리터에서 실행되는 특수한 형태의 C ++입니다.

혼합 프로그램은 기본 및 관리 코드를 모두 사용하는 프로그램입니다.


CLR (공용 언어 런타임)의 제어하에 실행되는 코드를 관리 코드라고합니다. CLR에서 실행되지 않는 코드를 네이티브 코드라고합니다.

참조 URL : https://stackoverflow.com/questions/855756/difference-between-native-and-managed-code

반응형