재우니의 블로그



그럼..컴파일은 어떻게 이루어지며, 실행은 어떻게 이루어 지는지 살펴보죠..

저번 강좌에서 CLR(COMMON LANGUAGE RUNTIME)을 설명했죠.
이는 닷넷환경에서 프로그램을 실행하며, 자세히 설명을 하면, 언어를 번역해서 실행한다라는 의미를 지니고 있답니다. 따라서 처음에는 실행될 수 있도록 만드는 일을 해야 하고, 두번째는 그렇게 만들어진 것을 실행 시키는 일입니다. 컴파일러에 의해 만들어지고 그 다음 공통언어런타임에 의해 컴파일 된 것이 로딩되고 실행되어 지는 것을 말하죠.

그럼 CLR 의 역할에 대해 더 자세히 살펴보죠.
먼저 실행 될 수 있도록 만드는 작업, 즉 컴파일러를 하며, 이는 중간언어인 IL 형태로 만듭니다. 두번째는 실행 될 수 있도록 만든 것을 실행하는 일을 하죠. 이것을 런타임이라고 하며 IL 형태의 언어를 JLT 가 다시 컴파일하여 닷넷환경의 CLR 이 실행을 하죠.

간단하게 요약을 하면 실제로 코드를 관리하는 부분이며, 프로그램을 메모리에 적재하고 실행시키며, 프로그램이 필요로 하는 모든 서비스를 지원해 주는 중요한 부분이라고 생각하시면 됩니다.


순서를 적으면 이렇게 되겠군요.

소스 -> 컴파일러 -> IL(중간언어) -> JIT 컴파일 ->원시기계어 -> 실행


따라서 닷넷환경에서 실행 가능한 상태의 중간언어인 IL 형태, 즉 DLL, EXE 를 말합니다. IL형태만 지니면 CLR 에서는 번역을 해서 실행하게 되므로 어느 언어로 작성든 상관없이 CLR 이 동작시킬 수 있답니다.

어떠한 언어에서도 코드가 엑세스 가능함을 보장하는 최소한의 표준규약을 CLS 라고하죠. 닷넷을 지원하는 모든 컴파일러는 CLS 를 지원해야 하죠. 만약 어셈블리에 CLS 와 호환되지 않은 코드가 포함되어 있다면, 특정언어에서는 사용이 불가능할지도 모릅니다.


posted by 심재운 (shimpark@gmail.com)