바인딩(Binding)

 

Summry

바인딩(Binding)이란 프로그램의 어떤 기본 단위가 가질 수 있는 구성요소의 구체적인 값, 성격을 확정하는 것을 말한다.

int num = 123;

위와 같은 C 코드가 있다 할 때 아래는 변수 속성의 구체적인 값이다.

  • int : 자료형
  • num : 이름
  • 123 : 값

이처럼 자료형, 이름, 값에 각각 int, num, 123이라는 구체적인 값을 할당하는 과정을 바인딩(Binding)이라 한다.

또한 함수에서도 바인딩이 일어나는데, 이때 바인딩은 어떤 코드에서 함수를 호출할 때 그 해당 함수가 위치한 메모리 주소로 연결해주는 것을 의미한다.

본 문서에서는 정적 바인딩(Static Binding)과 동적 바인딩(Dynamic Binding)을 설명한다.

send me email if you have any questions.


정적 바인딩(Static Binding)

컴파일 시간에 일어나며, 실행 중 변하지 않고 유지됨

int n;

위와 같은 C 코드에서는 변수 n의 자료형이 컴파일 시간에 int 로 할당되고 자료형 int 는 실행 중에도 변하지 않는 변수 n 의 속성이다.

  • 함수의 정적 바인딩은 컴파일 시간에 호출될 해당 함수의 주소가 결정되어 바인딩 된다. 즉, 실행 파일에 호출할 함수가 위치한 메모리 주소가 이미 확정 기록된 것이다.
  • 일반적인 함수는 정적 바인딩이 일어난다.

정적 바인딩은 컴파일 시간에 대부분 변수들의 속성이나 호출될 함수의 주소를 확정해놓기 때문에 실행시간의 속도가 빨라 효율적이다.

동적 바인딩(Dynamic Binding)

실행 시간(run time) 중에 일어나며, 프로그램 실행 도중 변경 가능

인터프리터 언어인 Python을 대표적인 예로 들 수 있다.

num=10 

위처럼 Python은 실행 시간에 변수의 자료형을 결정한다.

  • 함수의 동적 바인딩은 실행파일을 만들 때 호출할 함수의 메모리 주소가 확정되지 않고 보류상태로 둔다. 이후 실제 실행 시간에 호출할 함수의 주소가 결정되기 때문에, 이 주소를 저장할 공간을 미리 확보해둔다(4byte). 실행될지 확정되지 않은 함수를 위해 저장공간을 빼둬야 하는 점 때문에 메모리 관리에 있어 비효율적일 수 있다.
  • 보통 가상함수들이 동적 바인딩

Reference

바인딩(Binding) - YE Ryu