관리 메뉴

caLAB

[이것이 C#이다.] 개념01 - CLR, JIT컴파일러, 메모리 공간, CTS 본문

개발 공부/컴퓨터 과학

[이것이 C#이다.] 개념01 - CLR, JIT컴파일러, 메모리 공간, CTS

도이(doi) 2021. 7. 9. 16:20
728x90

CLR(common language Runtime)이란? - 33p

C# 컴파일러가 만들어낸 실행 파일은 하드웨어가 이해할 수 없는 코드로 구성되어 있어 실행할 수 없습니다. C# 컴파일러는 C#소스 코드를 IL(intermediate language)라는 중간 언어로 작성된 실행 파일을 만들어 냅니다. 사용자가 이 파일을 실행시키면 CLR이 중간 코드를 읽어 하드웨어가 이해할 수 있는 네이티브 코드로 컴파일한 후 실행합니다. 이것을 JIT(just in time) 컴파일이라고 부릅니다.

 

JIT컴파일 과정

C#컴파일러 → 실행파일(IL로 작성 됨) → CLR(IL 읽음) → 하드웨어 읽음

메모리 공간(스택 / 힙) - 43p

스택

값 형식 관련. 코드 블록 안에서 생성된 모든 값 형식의 변수들은 프로그램 실행이 중괄호를 만나면 메모리에서 제거됨.

참조 형식 관련. 저장된 데이터를 스스로 제거하지 않음. 가비지 컬렉터가 필요함. 코드 블록이 끝나는 시점과 상관 없이 데이터의 생명력을 사용하고 싶을 때 사용. 참조 형식은 힙과 스택을 함께 이용합니다. 힙 영역에는 데이터를 저장하고 스택 영역에는 데이터가 저장되어 있는 힙 메모리의 주소를 저장합니다.

*가비지 컬렉터란?

힙에 더 이상 사용하지 않는 객체가 있으면 그 객체를 쓰레기로 간주하고 수거하는 기능을 함.

CTS(Common Type System)이란?

'C#의 데이터 형식 체계는 CTS 표준을 따르고 있다.'

공통 타입 시스템(Common Type System, CTS)은 마이크로소프트 닷넷 프레임워크에서 자료형 정의 및 특정 자료형 값이 어떻게 컴퓨터 메모리에 표현되는지를 규정하는 표준이다. 각기 다른 프로그래밍 언어들로 작성된 프로그램들이 정보를 쉽게 공유할 수 있도록 하는 것이 목적이다.

 

*switch문이나 while문은 가독성의 이유로 같은 흐름 제어문의 중첩을 대체로 잘 안합니다.

*c#은 아무 값도 대입하지 않으면 error를 냅니다. null값을 넣어줘서 변수에게 할당된 메모리 공간을 비워둘 수 있도록 nullable형식을 사용합니다.

728x90
반응형
Comments