[컴][c#] CLR 의 loader 와 JIT 동작에 대한 간략한 설명

 

출처 : Expert .NET 2.0 IL Assembler, Page.5~7, 2006, Serge Lidin,

 

CLR 은 Class Loader, JIT compiler  을 가지고 있다. (아래 그림 참조.)

Loader

class 가 referenced 되면 loader 는 metadata 를 읽어서 class 와 member 들을 memory 에 만들어 놓는다.

 

JIT compiler

IL 로 되어 있는 method 를 navtive code 로 바꾸고 memory 에 올려놓는다.

method 도 on demand 이다. 필요할 때 읽어서 navtive code 로 compile 해서 memory 에 올려놓는다. 메모리가 부족하지 않는 이상은 계속 cached 되어 있다. 만약 memory 가 부족해서 지워졌다면, 다시 이 method 에 접근할 때는 다시 compile 해서 navtive code 로 만들고, memory 에 올려 놓는다.

이렇게 하는 것이 번거로우면, 미리 compile 해서 local disk 에 가지고 있다가 필요할 때 이 녀석(precompild managed executable)을 load 할 수도 있다. NGEN 이라는 유틸을 이용할 수 있다.

.NET framework 의 managed components 들이 이런 식으로 되어 있다. 이 component 들은 install 할 때 precompile 돼서 local disk 에 저장된다.

그런데 이때 주의할 것은 orginal IL code 도 같이 가지고 있어야 한다. precompiled version 을 호출할 때 실행권한은 original code 의 권한을 보고 판단해서 주기 때문이다.

3

출처 : http://engineerportal.blogspot.kr/2012/07/introduction-to-c.html

댓글 없음:

댓글 쓰기