본문 바로가기

프로그래밍언어/C#

닷넷이란? ( .NET)

728x90
반응형

닷넷(.NET)

.NET 이란 하나의 앱을 개발하여 여러 플렛폼에서 사용할 수 있도록 도와주는 개발 플렛폼이다.

즉, 닷넷은 하나의 앱을 개발해서 여러 플렛폼에서 앱을 실행할 수 있게 도와주는 역할을 한다.

 

C#, F#, Visual Basic 언어로 작성된 프로그램들은 .NET에 포함된 CLR(공용 언어 런타임)이라는 가상 머신 위에서 실행된다. 

 

*CLR(Common Language Runtime) - 공용 언어 런타임

CLR은 국제 표준인 CLI(공용 언어 인프라)를 Microsoft에서 구현한 것이다.

Java의 JVM과 같은 가상 머신 역할을 한다.

CLR에서 제공하는 서비스

  • 메모리 관리
  • 스레드 관리
  • 예외 처리
  • 쓰레기 수집
  • 보안

 

 

 

*CLI(Ccommon Language Infrastructure)

언어와 라이브러리가 원활하게 함께 작동하는 실행 및 개발 환경을 만들기 위한 기초이다.

 

*CIL(Common Intermediate Language) - (또는 IL)

CLI를 준수하는 중간언로, .NET 언어로 작성된 코드를 컴파일하여 생성된 바이트 코드이다.

CLR을 통해 IL 상태의 코드를 Just-In-Time(JIT) 컴파일 처리 하여 실제로 CPU에서 실행할 수 있는 기계어 코드로 변환하는 프로세스를 시작한다.

더보기

닷넷 호환 언어(.NET-Compliant Language)는 IL 결과물을 공유하기 때문에 상호 호출이 가능하다.

예를 들어 C#으로 만든 클래스를 F#에서 사용 할 수 있고, 다른 언어로 만든 클래스 까지도 상속 받을 수 있다.

 

.NET 컴파일 및 실행

- Compilertime

SOURCE CODE -----.NET COMLIPER------> BYTE CODE (MSIL + META DATA)

 

- Runtime process

BYTE CODE (MSIL + META DATA) ----- Just-In-Time (JIT) compiler------> NATIVE CODE

 

 

*관리 코드(Managged Code)와 비관리 코드(Unmanagged Code)

관리 코드란 런타임에서 실행이 관리되는 코드를 말한다. (.NET 에서는 IL 코드가 관리 코드이다.) 

CLR이 관리 코드를 가져와서 기계어 코드로 컴파일한 다음 실행한다.

 

비관리 코드란

CLR에 의존하지 않는 코드를 "관리되지 않는"코드라고한다.

ex) C/C++

 

  • C# : 컴파일러에 의해 IL 코드로 변환되고, CLR에 의해 관리됨. CLR에 포함됨 가비지 컬렉터에 의해 메모리가 관리됨
  • C++ : CLR에 의해 관리되지 않고 메모리를 직접 관리

 

*닷넷 용어

 

References

관리 코드(managged code)와 비관리 코드(unmannaged code)

728x90
반응형

'프로그래밍언어 > C#' 카테고리의 다른 글

공용 형식 시스템(Common Type System)  (0) 2021.06.28