그럼..컴파일은 어떻게 이루어지며, 실행은 어떻게 이루어 지는지 살펴보죠..
저번 강좌에서 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)