본문 바로가기

6. With IT/6.2 NDK

static chain // dynamic chain


scope이란, 변수의 접근이 가능한 범위를 뜻합니다.

이 scope을 결정하는 방식에는 두가지 방식이 있는데, 첫째는 static scoping이고 둘째는 dynamic scoping입니다.


static scoping에 대해서 설명을 하자면, static scoping은 run time에서 프로그램의 flow에 관계 없이 compile time에 변수의 scope이 결정되는 방식입니다. 대표적으로 C를 생각하시면 되겠네요. C에서는 변수의 scope이 변수의 선언 위치에 따라서 compile time에 결정이 되지요.

이 때, subroutine을 subroutine 안에서 선언할 수 있는 Pascal 등의 언어는 자신 바깥에 있는 어느 함수가 자신을 호출했는지 확정할 수 없는 문제가 발생하는데, 이에 대한 방법 중 하나가 static link를 유지하는 것입니다.

static link는 subroutine call의 stack 구조에 자신을 호출한 부모를 가리키는 link를 넣는 것으로, 이는 static link에서 자신의 scope이 닿는 parent가 반드시 있으므로 사용 가능한 방법입니다.

또한 이런 static link들의 연쇄를 가리켜 static chain이라고 합니다.


반면 dynamic scoping에서는 static scoping방식처럼 확실한 scope이 정해져 있지 않습니다. 이 방식에서는 subroutine이 call되는 run time의 flow에 따라서 scope이 변합니다. dynamic scoping의 rule은 다음과 같습니다 : 주어진 name에 대한 현재 binding은 실행 중 가장 최근에 맞닥드린 것 중 아직 destroy되지 않은 것으로 한다.

이 scoping 방식은 어찌 보면 편리하지만, 심한 혼동을 가져다 줄 수 있습니다.

'6. With IT > 6.2 NDK' 카테고리의 다른 글

이클립스_NDK자동 컴파일  (0) 2012.02.09
Android.mk  (0) 2012.02.02
NDK + eclipse + cygwin 플러그인하는방법  (0) 2011.09.20
JNI & NDK 설치  (0) 2011.07.11
JAVA JNI & Android NDK - 설치 및 사용  (0) 2011.06.02